diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gameloop.rs | 70 | ||||
| -rw-r--r-- | src/generation.rs | 51 | ||||
| -rw-r--r-- | src/main.rs | 4 |
3 files changed, 52 insertions, 73 deletions
diff --git a/src/gameloop.rs b/src/gameloop.rs index d573868..e69de29 100644 --- a/src/gameloop.rs +++ b/src/gameloop.rs @@ -1,70 +0,0 @@ -use crate::generation::*; - -use colored::Colorize; -use crossterm::{ - cursor::{Hide, MoveTo, Show}, - event, - event::{poll, Event, KeyCode, KeyEvent}, - style::Stylize, - terminal, - terminal::{EnterAlternateScreen, LeaveAlternateScreen}, - ExecutableCommand, QueueableCommand, -}; -use rand::{thread_rng, Rng}; -use std::{ - io::{self, Write}, - thread::sleep, - time::Duration, -}; - - -pub fn run() { - 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(); - -} 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(); + +} diff --git a/src/main.rs b/src/main.rs index 85f9eb0..056d16a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,9 @@ #![allow(unused_imports, unused_variables, unused_mut)] mod generation; -mod gameloop; -use gameloop::*; use generation::*; fn main() { - run(); + generation::init() } |
