Here’s the main function
fn main() {
let mut main_terminal = terminal::new_terminal(caps::Capabilities::new_from_env().unwrap()).unwrap();
terminal::Terminal::set_raw_mode(&mut main_terminal);
App::new()
.insert_non_send_resource(main_terminal)
.init_resource::<TextDuration>()
.add_systems(Startup, enter_name)
.run();
}
And here are the function enter name
and flush_sdin
fn enter_name(duration: Res<TextDuration>, main_terminal: NonSendMut<terminal::SystemTerminal>){
print_text(&duration, Speeds::Default, String::from("Please enter your name: "));
flush_stdin();
terminal::Terminal::set_cooked_mode(main_terminal.into_inner());
let mut name = String::new();
io::stdin().read_line(&mut name);
print_text(&duration, Speeds::Default, String::from(format!("Hello, {}!\n", name.trim().green())));
}
fn flush_stdin(){
let mut clean_buffer = [0; 4];
let _ =io::stdin().read(&mut clean_buffer[..]);
}
When I use flush_stdin, I have to press a key before submitting the actual input
Edit: I forgot to mention, the print_text
function is just something I used to make print_typed!
use different speeds and stuff. I haven’t finished the different speeds for now, but that’s not important
fn print_text(duration: &Res<TextDuration>, speed: Speeds, text: String){
match speed {
Speeds::Default => print_typed!((duration.default), "{}", text),
}
}
Thanks a lot man! After debuggin for a while it worked!
I was also wondering, where do you learn that kind of stuff? I’m currently learning and would like to be as resourceful as possible.