diff options
| author | srdusr <trevorgray@srdusr.com> | 2024-03-08 23:55:44 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2024-03-08 23:55:44 +0200 |
| commit | 76f0d0e902e6ed164704572bd81faa5e5e560cf3 (patch) | |
| tree | a8d0c00b8a0ef752d83d79f640d1784563759073 /src/main.rs | |
| parent | 7aa80c230f06b68eb4e9aa618938b8cb5a562c90 (diff) | |
| download | typerpunk-76f0d0e902e6ed164704572bd81faa5e5e560cf3.tar.gz typerpunk-76f0d0e902e6ed164704572bd81faa5e5e560cf3.zip | |
Add cursor (currently block only)
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 6a4bcba..9c529f0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -122,6 +122,7 @@ fn draw_typing_game(f: &mut Frame<CrosstermBackend<std::io::Stdout>>, chunk: Rec let time_used = app.time_taken as f64; let mut colored_text: Vec<Span> = Vec::new(); + let cursor_pos = app.input_string.len(); // Iterate over each character in the current sentence and color it based on user input for (index, c) in app.current_sentence().chars().enumerate() { @@ -135,17 +136,24 @@ fn draw_typing_game(f: &mut Frame<CrosstermBackend<std::io::Stdout>>, chunk: Rec Color::Gray }; - let span = Span::styled(c.to_string(), Style::default().fg(color)); + // cursor + let span = if index == cursor_pos { + Span::styled( + c.to_string(), + Style::default().fg(color).add_modifier(Modifier::REVERSED), + ) + } else { + Span::styled(c.to_string(), Style::default().fg(color)) + }; colored_text.push(span); } - // Create text to be displayed let text = vec