From 9a4d927d46fc7907ef88c78370fadac974ad3447 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 3 May 2019 08:53:30 +0200 Subject: [PATCH] Fixed custom state event reader --- src/main.rs | 1 - src/states/main_game.rs | 79 ++++++++++++------------------------- src/states/mod.rs | 51 ------------------------ src/states/paused.rs | 50 +++++++++-------------- src/systems/time_control.rs | 1 - 5 files changed, 44 insertions(+), 138 deletions(-) diff --git a/src/main.rs b/src/main.rs index b041f27..358fb14 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,6 @@ extern crate amethyst_derive; use amethyst; use amethyst::assets::PrefabLoaderSystem; -use amethyst::derive; use amethyst::{ audio::AudioBundle, core::transform::{Transform, TransformBundle}, diff --git a/src/states/main_game.rs b/src/states/main_game.rs index 5a62b54..27e70fd 100644 --- a/src/states/main_game.rs +++ b/src/states/main_game.rs @@ -7,10 +7,9 @@ use amethyst::{ }, State, ecs::*, - input::{is_key_down, InputEvent}, + input::{InputEvent}, prelude::*, renderer::*, - shrev::{EventChannel, ReaderId}, }; use rand::{thread_rng, Rng}; @@ -21,15 +20,12 @@ use crate::resources::world_bounds::*; use crate::states::{ paused::PausedState, CustomStateEvent, - CustomStateEventReader, }; use crate::systems::*; pub struct MainGameState { dispatcher: Dispatcher<'static, 'static>, ui_dispatcher: Dispatcher<'static, 'static>, - - input_event_reader_id: Option>>, } impl Default for MainGameState { @@ -100,20 +96,37 @@ impl Default for MainGameState { &[], ) .build(), - - input_event_reader_id: None, } } } impl<'a> State, CustomStateEvent> for MainGameState { - fn handle_event(&mut self, _data: StateData>, event: CustomStateEvent) -> Trans, CustomStateEvent> { + fn handle_event(&mut self, data: StateData>, event: CustomStateEvent) -> Trans, CustomStateEvent> { match event { - CustomStateEvent::Window(ev) => println!("Got window event {:?}", ev), // Events related to the window and inputs. - CustomStateEvent::Ui(_) => {}, // Ui event. Button presses, mouse hover, etc... - CustomStateEvent::Input(ev) => println!("Got an input event: {:?}", ev), + CustomStateEvent::Window(_) => (), // Events related to the window and inputs. + CustomStateEvent::Ui(_) => (), // Ui event. Button presses, mouse hover, etc... + CustomStateEvent::Input(input_event) => { + match input_event { + InputEvent::ActionPressed(action_name) => { + match action_name.as_ref() { + "TogglePause" => return Trans::Push(Box::new(PausedState::default())), + "SpeedUp" => { + let mut time_resource = data.world.write_resource::