use anyhow::Result; use ecs::*; use engine::prelude::*; use crate::game::Game; #[derive(Default, Resource)] pub enum GameState { #[default] Startup, Game(Game), } impl GameState { pub fn update(world: &mut World) -> Result { let me = world.resources.get_mut_unchecked::(); match me { GameState::Startup => *me = GameState::Game(Game), GameState::Game(game) => game.update(world)?, } Ok(true) } } impl EventConsumer for GameState { fn event(&mut self, world: &mut World, event: EngineEvent<'_>) -> Result<()> { match self { GameState::Startup => (), GameState::Game(game) => game.event(world, event)?, } Ok(()) } }