2025-02-26 11:22:32 +00:00
|
|
|
use anyhow::Result;
|
2025-02-26 13:51:44 +00:00
|
|
|
|
2025-02-26 11:22:32 +00:00
|
|
|
use ecs::*;
|
2025-02-26 13:51:44 +00:00
|
|
|
use engine::prelude::*;
|
2025-02-26 11:22:32 +00:00
|
|
|
|
|
|
|
fn main() -> Result<()> {
|
|
|
|
let mut world_builder = World::builder();
|
2025-02-26 13:51:44 +00:00
|
|
|
|
2025-02-28 14:13:19 +00:00
|
|
|
Engine::new::<GameState>(EngineCreateInfo::default(), &mut world_builder)?;
|
|
|
|
|
|
|
|
world_builder.add_system(GameState::update);
|
|
|
|
world_builder.resources.insert(GameState::Startup);
|
2025-02-26 11:22:32 +00:00
|
|
|
|
|
|
|
world_builder.build().run()
|
|
|
|
}
|
2025-02-28 14:13:19 +00:00
|
|
|
|
|
|
|
enum GameState {
|
|
|
|
Startup,
|
|
|
|
Loading,
|
|
|
|
Menu,
|
|
|
|
Game(Game),
|
|
|
|
}
|
|
|
|
|
|
|
|
impl GameState {
|
|
|
|
fn update(world: &mut World) -> Result<bool> {
|
|
|
|
match world.resources.get_mut_unchecked::<Self>() {
|
|
|
|
GameState::Startup => (),
|
|
|
|
GameState::Loading => (),
|
|
|
|
GameState::Menu => (),
|
|
|
|
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::Loading => (),
|
|
|
|
GameState::Menu => (),
|
|
|
|
GameState::Game(game) => game.event(world, event)?,
|
|
|
|
}
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Game {}
|
|
|
|
|
|
|
|
impl Game {
|
|
|
|
fn update(&mut self, world: &mut World) -> Result<()> {
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
fn event(&mut self, world: &mut World, event: EngineEvent) -> Result<()> {
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|