rust-sokoban/src/resources.rs

60 lines
1.1 KiB
Rust

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<KeyCode>,
}
#[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<Event>,
}
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());
}