+ 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(TestState::new())))
+ }
+ 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;
+ self.world.level = self.lvlgen.generate();
+ }
+ Event::KeyDown { keycode: Some(Keycode::KpMinus), .. } => {
+ if self.lvlgen.iterations > 0 {
+ self.lvlgen.iterations -= 1;
+ self.world.level = self.lvlgen.generate();
+ }
+ }
+ Event::KeyDown { keycode: Some(Keycode::KpMultiply), .. } => {
+ self.lvlgen.wall_smooth_radius += 1;
+ self.world.level = self.lvlgen.generate();
+ }
+ Event::KeyDown { keycode: Some(Keycode::KpDivide), .. } => {
+ if self.lvlgen.wall_smooth_radius > 0 {
+ self.lvlgen.wall_smooth_radius -= 1;
+ self.world.level = self.lvlgen.generate();
+ }
+ }
+ _ => {}
+ }
+ None
+ }