From 76f0d0e902e6ed164704572bd81faa5e5e560cf3 Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 8 Mar 2024 23:55:44 +0200 Subject: Add cursor (currently block only) --- src/main.rs | 14 +++++++++++--- 1 file 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>, chunk: Rec let time_used = app.time_taken as f64; let mut colored_text: Vec = 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>, 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![ Spans::from(Span::styled( "Type the following sentence:", Style::default().add_modifier(Modifier::BOLD), )), - colored_text.into(), + Spans::from(colored_text), Spans::from(Span::styled(format!("WPM: {:.2}", wpm), Style::default())), Spans::from(Span::styled( format!("Time: {:.1} seconds", time_used), -- cgit v1.2.3