turtlegame/src/main.rs

69 lines
1.3 KiB
Rust
Raw Normal View History

#![warn(rust_2018_idioms)]
#![deny(clippy::wildcard_imports)]
#![forbid(elided_lifetimes_in_paths, unsafe_code)]
mod assets {
include!(env!("ASSETS_RS"));
}
2024-07-06 11:33:58 +00:00
mod activities;
2024-07-05 21:10:25 +00:00
mod game;
2024-07-06 16:51:21 +00:00
mod ui;
2024-07-05 21:10:25 +00:00
use self::{
activities::{house::HouseState, overworld::worldgen::Overworld, Activity},
assets::Assets
2024-07-06 16:51:21 +00:00
use game::Gost;
};
use comfy::{
init_game_config, pollster, run_comfy_main_async, EngineContext, EngineState,
GameConfig, GameLoop
};
2024-07-05 21:10:25 +00:00
const GAME_NAME: &str = "Powercreep";
#[derive(Debug, Default)]
2024-07-06 11:33:58 +00:00
struct State {
setup_called: bool,
activity: Activity,
2024-07-06 16:51:21 +00:00
activity: Activity,
2024-07-06 20:23:31 +00:00
gohst: Gost
overworld: Overworld,
house: HouseState
2024-07-06 11:33:58 +00:00
}
2024-07-05 21:10:25 +00:00
impl GameLoop for State {
fn new(_c: &mut EngineState) -> Self {
2024-07-06 11:33:58 +00:00
Self::default()
2024-07-05 21:10:25 +00:00
}
fn update(&mut self, engine: &mut EngineContext<'_>) {
if !self.setup_called {
setup(engine);
self.setup_called = true;
}
2024-07-05 21:10:25 +00:00
game::update(self, engine);
game::draw(self, engine);
}
}
fn config(config: GameConfig) -> GameConfig {
config
}
fn setup(ctx: &mut EngineContext<'_>) {
Assets::load(ctx);
}
2024-07-05 21:10:25 +00:00
async fn run() {
init_game_config(GAME_NAME.to_string(), env!("CARGO_PKG_VERSION"), config);
let mut engine = EngineState::new();
let game = State::new(&mut engine);
run_comfy_main_async(game, engine).await;
}
2024-07-05 17:01:09 +00:00
fn main() {
2024-07-05 21:10:25 +00:00
pollster::block_on(run());
}