From 44b257c710d067596c9caabaf39ce3a8ac73835b Mon Sep 17 00:00:00 2001 From: Dominic Date: Sat, 6 Jul 2024 17:18:28 +0200 Subject: [PATCH] loading assets "works" --- build.rs | 9 +++++---- src/activities/house.rs | 6 +++--- src/activities/overworld.rs | 6 +++--- src/game.rs | 4 ++-- src/main.rs | 26 +++++++++++++++++++++++--- 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/build.rs b/build.rs index 4539aa5..c0cee5a 100644 --- a/build.rs +++ b/build.rs @@ -65,11 +65,12 @@ impl AssetsWriter { ) -> io::Result<()> { for (group_name, group) in &root.groups { writeln!(file, "{indent}mod {group_name} {{")?; + writeln!(file, "{indent}\tuse super::*;")?; write_assets_struct(file, group, &format!("{indent}\t"))?; writeln!(file, "}}")?; } - writeln!(file, "{indent}struct Asset {{")?; + writeln!(file, "{indent}pub struct Assets {{")?; for asset_name in root.assets.keys() { writeln!( file, @@ -88,7 +89,7 @@ impl AssetsWriter { writeln!(file, "{indent}impl Assets {{")?; writeln!( file, - "{indent}\tpub fn load(c: &mut comfy::EngineContext) {{" + "{indent}\tpub fn load(c: &mut comfy::EngineContext<'_>) {{" )?; for asset_const_name in root.assets.values() { writeln!(file, "{indent}\t\tc.load_texture_from_bytes({asset_const_name:?}, {asset_const_name});")?; @@ -101,7 +102,7 @@ impl AssetsWriter { writeln!( file, - "{indent}const ASSETS: comfy::Lazy = Lazy::new(|| Assets {{" + "{indent}pub static ASSETS: comfy::Lazy = comfy::Lazy::new(|| Assets {{" )?; for (asset_name, asset_const_name) in &root.assets { writeln!( @@ -113,7 +114,7 @@ impl AssetsWriter { for group_name in root.groups.keys() { writeln!( file, - "{indent}\t{group_name}: {group_name}::ASSETS.force()," + "{indent}\t{group_name}: comfy::Lazy::force(&{group_name}::ASSETS)," )?; } writeln!(file, "{indent}}});")?; diff --git a/src/activities/house.rs b/src/activities/house.rs index 8043a2d..189ae64 100644 --- a/src/activities/house.rs +++ b/src/activities/house.rs @@ -1,7 +1,7 @@ -use comfy::*; +use comfy::{draw_circle, vec2, EngineContext, RED}; -pub fn draw(_state: &crate::State, _engine: &comfy::EngineContext) { +pub fn draw(_state: &crate::State, _engine: &EngineContext<'_>) { draw_circle(vec2(0.0, 0.0), 0.5, RED, 0); } -pub fn update(_state: &mut crate::State, _engine: &mut comfy::EngineContext) {} +pub fn update(_state: &mut crate::State, _engine: &mut EngineContext<'_>) {} diff --git a/src/activities/overworld.rs b/src/activities/overworld.rs index ea12f22..b1a6300 100644 --- a/src/activities/overworld.rs +++ b/src/activities/overworld.rs @@ -1,9 +1,9 @@ -use comfy::*; +use comfy::{draw_circle, vec2, EngineContext, GREEN}; pub mod worldgen; -pub fn draw(_state: &crate::State, _engine: &comfy::EngineContext) { +pub fn draw(_state: &crate::State, _engine: &EngineContext<'_>) { draw_circle(vec2(0.0, 0.0), 0.5, GREEN, 0); } -pub fn update(_state: &mut crate::State, _engine: &mut comfy::EngineContext) {} +pub fn update(_state: &mut crate::State, _engine: &mut EngineContext<'_>) {} diff --git a/src/game.rs b/src/game.rs index a91fe39..9e8eb7a 100644 --- a/src/game.rs +++ b/src/game.rs @@ -5,14 +5,14 @@ use crate::{ State }; -pub fn update(state: &mut State, engine: &mut EngineContext) { +pub fn update(state: &mut State, engine: &mut EngineContext<'_>) { match state.activity { Activity::House => house::update(state, engine), Activity::Overworld => overworld::update(state, engine) } } -pub fn draw(state: &State, engine: &EngineContext) { +pub fn draw(state: &State, engine: &EngineContext<'_>) { match state.activity { Activity::House => house::draw(state, engine), Activity::Overworld => overworld::draw(state, engine) diff --git a/src/main.rs b/src/main.rs index aa9f605..f231ac7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,24 @@ +#![warn(rust_2018_idioms)] +#![forbid(clippy::wildcard_imports, elided_lifetimes_in_paths, unsafe_code)] + +mod assets { + include!(env!("ASSETS_RS")); +} + mod activities; mod game; -use activities::{overworld::worldgen::Overworld, Activity}; -use comfy::*; +use self::{ + activities::{overworld::worldgen::Overworld, Activity}, + assets::Assets +}; +use comfy::{GameLoop, EngineState, EngineContext, GameConfig, init_game_config, run_comfy_main_async, pollster}; const GAME_NAME: &str = "Powercreep"; #[derive(Debug, Default)] struct State { + setup_called: bool, activity: Activity, overworld: Overworld } @@ -17,7 +28,12 @@ impl GameLoop for State { Self::default() } - fn update(&mut self, engine: &mut EngineContext) { + fn update(&mut self, engine: &mut EngineContext<'_>) { + if !self.setup_called { + setup(engine); + self.setup_called = true; + } + game::update(self, engine); game::draw(self, engine); } @@ -27,6 +43,10 @@ fn config(config: GameConfig) -> GameConfig { config } +fn setup(ctx: &mut EngineContext<'_>) { + Assets::load(ctx); +} + async fn run() { init_game_config(GAME_NAME.to_string(), env!("CARGO_PKG_VERSION"), config); let mut engine = EngineState::new();