added pause and next controls
1 files changed, 20 insertions(+), 8 deletions(-)

M src/main.rs
M src/main.rs +20 -8
@@ 52,7 52,11 @@ fn main() {
             options.short_usage(APP_NAME)
         } else {
             let mut h = options.usage(APP_NAME);
-            h.push_str("\nControls:\n    q      exit the game\n");
+            h.push_str("\n");
+            h.push_str("Controls:\n");
+            h.push_str("    q      exit the game\n");
+            h.push_str("    p      pause/resume\n");
+            h.push_str("    n      next generation");
             h
         };
         println!("{}", help);

          
@@ 165,14 169,20 @@ fn main() {
     let mut game = Game { cells: cells, dead: dead, alive: alive, border: border, window: game_window };
 
     let mut quit = false;
+    let mut paused = false;
     let mut last_time = time::precise_time_s();
-
+    let mut render = |delta| {
+        game.render(delta);
+        refresh();
+        wrefresh(game.window);
+    };
     while !quit {
         let time = time::precise_time_s();
+        let delta = time - last_time;
 
-        game.render(time - last_time);
-        refresh();
-        wrefresh(game.window);
+        if !paused {
+            render(delta);
+        }
 
         last_time = time::precise_time_s();
         let render_duration = last_time - time;

          
@@ 182,9 192,11 @@ fn main() {
             std::thread::sleep_ms((sleep * 1000.) as u32);
         }
 
-        let ch = getch();
-        if ch == 'q' as i32 {
-            quit = true;
+        match getch() as u8 as char {
+            'q' => quit = true,
+            'p' => paused = !paused,
+            'n' if paused => render(delta),
+            _ => {}
         }
     }