diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2022-09-12 16:58:49 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2022-09-12 16:58:49 +0200 |
| commit | 0cefef407c45849e4e8855faad5adf27d68740cf (patch) | |
| tree | 4c47efa92677647caa35a3b320254e0da2acdace /src/generation.rs | |
| parent | 36a7260f908de87b021d65641d5faa307b7d9652 (diff) | |
| download | gof-rs-0cefef407c45849e4e8855faad5adf27d68740cf.tar.xz gof-rs-0cefef407c45849e4e8855faad5adf27d68740cf.zip | |
moved all functions to generation.rs
Diffstat (limited to 'src/generation.rs')
| -rw-r--r-- | src/generation.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/generation.rs b/src/generation.rs index 6af0547..4188bed 100644 --- a/src/generation.rs +++ b/src/generation.rs @@ -118,3 +118,54 @@ pub fn next_gen(cur_gen: &mut Gen) -> Gen { *cur_gen = nxt_gen.clone(); nxt_gen } + +pub fn init() { + let mut stdout = io::stdout(); + let mut frame: Gen = new_gen(); + let mut nxt; + + terminal::enable_raw_mode().unwrap(); + stdout.execute(EnterAlternateScreen).unwrap(); + stdout.execute(Hide).unwrap(); + + 'gameloop: loop { + while event::poll(Duration::default()).unwrap() { + if let Event::Key(key_event) = event::read().unwrap() { + match key_event.code { + KeyCode::Esc | KeyCode::Char('q') => { + break 'gameloop; + } + KeyCode::Char('s') => { + frame = new_gen(); + render_gen(&mut stdout, &frame) + } + + KeyCode::Char('n') => { + nxt = next_gen(&mut frame); + render_gen(&mut stdout, &nxt) + } + KeyCode::Char('a') => 'animate: loop { + nxt = next_gen(&mut frame); + render_gen(&mut stdout, &nxt); + sleep(Duration::from_millis(16)); + if (poll(Duration::from_millis(1))).unwrap() { + if let Event::Key(k) = event::read().unwrap() { + match k.code { + KeyCode::Char('q') => break 'animate, + _ => {} + } + } + } else { + } + }, + _ => {} + } + } + } + } + + stdout.execute(Show).unwrap(); + stdout.execute(LeaveAlternateScreen).unwrap(); + terminal::disable_raw_mode().unwrap(); + +} |
