use ggez::event::KeyCode; use specs::World; use std::fmt; use std::fmt::Display; use std::time::Duration; use crate::audio::AudioStore; use crate::events::Event; #[derive(Default)] pub struct InputQueue { pub keys_pressed: Vec, } #[derive(Default)] pub struct Gameplay { pub state: GameplayState, pub moves_count: usize, } #[derive(Default)] pub struct Time { pub delta: Duration, } pub enum GameplayState { Playing, Won, } impl Default for GameplayState { fn default() -> Self { Self::Playing } } impl Display for GameplayState { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fmt.write_str(match self { GameplayState::Playing => "Playing", GameplayState::Won => "Won", })?; Ok(()) } } #[derive(Default)] pub struct EventQueue { pub events: Vec, } pub fn register_resources(world: &mut World) { world.insert(InputQueue::default()); world.insert(Gameplay::default()); world.insert(Time::default()); world.insert(EventQueue::default()); world.insert(AudioStore::default()); }