+ fn handle_event(&mut self, event: Event) -> Option<StateChange> {
+ match event {
+ Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
+ return Some(StateChange::Pop)
+ }
+ Event::KeyDown { keycode: Some(Keycode::Return), .. } => {
+ return Some(StateChange::Push(Box::new(ActiveState::new((800, 600)))))
+ }
+ Event::KeyDown { keycode: Some(Keycode::Space), .. } => {
+ self.lvlgen.seed = std::time::UNIX_EPOCH.elapsed().unwrap().as_secs() as u32;
+ self.world.level = self.lvlgen.generate();
+ }
+ Event::KeyDown { keycode: Some(Keycode::KpPlus), .. } => {
+ self.lvlgen.iterations += 1;
+ println!("{} iteration(s) of cellular automata", self.lvlgen.iterations);
+ self.world.level = self.lvlgen.generate();
+ }
+ Event::KeyDown { keycode: Some(Keycode::KpMinus), .. } => {
+ self.lvlgen.iterations = 1.max(self.lvlgen.iterations - 1);
+ println!("{} iteration(s) of cellular automata", self.lvlgen.iterations);
+ self.world.level = self.lvlgen.generate();
+ }
+ _ => {}
+ }
+ None
+ }