aboutsummaryrefslogtreecommitdiff
path: root/src/generation.rs
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2022-09-12 16:58:49 +0200
committeromagdy7 <omar.professional8777@gmail.com>2022-09-12 16:58:49 +0200
commit0cefef407c45849e4e8855faad5adf27d68740cf (patch)
tree4c47efa92677647caa35a3b320254e0da2acdace /src/generation.rs
parent36a7260f908de87b021d65641d5faa307b7d9652 (diff)
downloadgof-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.rs51
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();
+
+}