From c7d6bd8aef89c72f593e731c9a455f1063fb8960 Mon Sep 17 00:00:00 2001 From: gered Date: Thu, 5 Sep 2024 22:35:20 -0400 Subject: [PATCH] revert app_root_dir usages in examples. re-org example asset files ultimately, cargo workspaces are kind of weird. you can do things like `cargo run` from the top-level cargo.toml file and run an individual sub-module via `--bin`, or you can go to that sub-module's directory where it's own cargo.toml is, and `cargo run` directly from there. the current working directory will be different in each case, and this difference can be very annoying when you want to do seemingly-logical things like organize sub-module "asset" files (e.g. images, and other types of data files that aren't code) within that sub-module's directory. in this case, how do you write code in that sub-module that can load those asset files in a way that will work in BOTH of the aforementioned scenarios for `cargo run`? you can't really! some people use the `CARGO_MANIFEST_DIR` environment variable that cargo sets when running any given cargo module, but this is only a valid method for obtaining the module's root directory when running from a cargo command ... which you won't be doing when running within a debugger! likely you or your IDE invoked the debugger process against the already built executable directly, so `CARGO_MANIFEST_DIR` will not be set and you're back to square one! super annoying! as such, i am now giving up and am just doing what it seems like most other cargo projects that utilize workspaces do ... place all the assets for all sub-modules together in the same directory, relative to the workspace root. why go with this approach? because it works under the most common scenarios (but NOT all!): - running via `cargo run --bin` from the workspace root - debugging via gdb/lldb etc using the workspace root as the cwd these seem to be the most common ways to do each type of task from any rust-equipped editor/IDE that i've seen so far. --- .../assets => assets}/arena.map.json | 0 {examples/balls/assets => assets}/balls.pcx | Bin .../assets => assets}/blue_slime.pcx | Bin .../assets => assets}/db16.pal | Bin .../assets => assets}/dp.fnt | Bin .../assets => assets}/explosion.wav | Bin {examples/slimed/assets => assets}/fist.pcx | Bin .../assets => assets}/green_slime.pcx | Bin .../slimed/assets => assets}/hero_female.pcx | Bin .../slimed/assets => assets}/hero_male.pcx | Bin {examples/slimed/assets => assets}/items.pcx | Bin .../audio_playback/assets => assets}/jump.wav | Bin .../assets => assets}/laser-shoot.wav | Bin .../assets => assets}/orange_slime.pcx | Bin .../slimed/assets => assets}/particles.pcx | Bin .../assets => assets}/pickup-coin.wav | Bin .../assets => assets}/powerup.wav | Bin .../assets => assets}/small.fnt | Bin {examples/slimed/assets => assets}/sword.pcx | Bin .../assets => assets}/tiles.pcx | Bin .../assets => assets}/title_screen.map.json | 0 {examples/slimed/assets => assets}/ui.pcx | Bin examples/audio_playback/src/main.rs | 10 +++---- examples/balls/src/main.rs | 2 +- examples/balls_v2/assets/balls.pcx | Bin 1466 -> 0 bytes examples/balls_v2/src/states.rs | 2 +- examples/imgui_integration/src/context.rs | 16 +++++----- examples/slimed/assets/arena.map.json | 9 ------ examples/slimed/assets/blue_slime.pcx | Bin 2354 -> 0 bytes examples/slimed/assets/db16.pal | Bin 768 -> 0 bytes examples/slimed/assets/dp.fnt | Bin 2305 -> 0 bytes examples/slimed/assets/green_slime.pcx | Bin 2354 -> 0 bytes examples/slimed/assets/orange_slime.pcx | Bin 2412 -> 0 bytes examples/slimed/assets/tiles.pcx | Bin 33941 -> 0 bytes examples/slimed/src/main.rs | 28 +++++++++--------- examples/slimed/src/states.rs | 16 ++-------- 36 files changed, 31 insertions(+), 52 deletions(-) rename {examples/imgui_integration/assets => assets}/arena.map.json (100%) rename {examples/balls/assets => assets}/balls.pcx (100%) rename {examples/imgui_integration/assets => assets}/blue_slime.pcx (100%) rename {examples/imgui_integration/assets => assets}/db16.pal (100%) rename {examples/imgui_integration/assets => assets}/dp.fnt (100%) rename {examples/audio_playback/assets => assets}/explosion.wav (100%) rename {examples/slimed/assets => assets}/fist.pcx (100%) rename {examples/imgui_integration/assets => assets}/green_slime.pcx (100%) rename {examples/slimed/assets => assets}/hero_female.pcx (100%) rename {examples/slimed/assets => assets}/hero_male.pcx (100%) rename {examples/slimed/assets => assets}/items.pcx (100%) rename {examples/audio_playback/assets => assets}/jump.wav (100%) rename {examples/audio_playback/assets => assets}/laser-shoot.wav (100%) rename {examples/imgui_integration/assets => assets}/orange_slime.pcx (100%) rename {examples/slimed/assets => assets}/particles.pcx (100%) rename {examples/audio_playback/assets => assets}/pickup-coin.wav (100%) rename {examples/audio_playback/assets => assets}/powerup.wav (100%) rename {examples/imgui_integration/assets => assets}/small.fnt (100%) rename {examples/slimed/assets => assets}/sword.pcx (100%) rename {examples/imgui_integration/assets => assets}/tiles.pcx (100%) rename {examples/slimed/assets => assets}/title_screen.map.json (100%) rename {examples/slimed/assets => assets}/ui.pcx (100%) delete mode 100644 examples/balls_v2/assets/balls.pcx delete mode 100644 examples/slimed/assets/arena.map.json delete mode 100644 examples/slimed/assets/blue_slime.pcx delete mode 100644 examples/slimed/assets/db16.pal delete mode 100644 examples/slimed/assets/dp.fnt delete mode 100644 examples/slimed/assets/green_slime.pcx delete mode 100644 examples/slimed/assets/orange_slime.pcx delete mode 100644 examples/slimed/assets/tiles.pcx diff --git a/examples/imgui_integration/assets/arena.map.json b/assets/arena.map.json similarity index 100% rename from examples/imgui_integration/assets/arena.map.json rename to assets/arena.map.json diff --git a/examples/balls/assets/balls.pcx b/assets/balls.pcx similarity index 100% rename from examples/balls/assets/balls.pcx rename to assets/balls.pcx diff --git a/examples/imgui_integration/assets/blue_slime.pcx b/assets/blue_slime.pcx similarity index 100% rename from examples/imgui_integration/assets/blue_slime.pcx rename to assets/blue_slime.pcx diff --git a/examples/imgui_integration/assets/db16.pal b/assets/db16.pal similarity index 100% rename from examples/imgui_integration/assets/db16.pal rename to assets/db16.pal diff --git a/examples/imgui_integration/assets/dp.fnt b/assets/dp.fnt similarity index 100% rename from examples/imgui_integration/assets/dp.fnt rename to assets/dp.fnt diff --git a/examples/audio_playback/assets/explosion.wav b/assets/explosion.wav similarity index 100% rename from examples/audio_playback/assets/explosion.wav rename to assets/explosion.wav diff --git a/examples/slimed/assets/fist.pcx b/assets/fist.pcx similarity index 100% rename from examples/slimed/assets/fist.pcx rename to assets/fist.pcx diff --git a/examples/imgui_integration/assets/green_slime.pcx b/assets/green_slime.pcx similarity index 100% rename from examples/imgui_integration/assets/green_slime.pcx rename to assets/green_slime.pcx diff --git a/examples/slimed/assets/hero_female.pcx b/assets/hero_female.pcx similarity index 100% rename from examples/slimed/assets/hero_female.pcx rename to assets/hero_female.pcx diff --git a/examples/slimed/assets/hero_male.pcx b/assets/hero_male.pcx similarity index 100% rename from examples/slimed/assets/hero_male.pcx rename to assets/hero_male.pcx diff --git a/examples/slimed/assets/items.pcx b/assets/items.pcx similarity index 100% rename from examples/slimed/assets/items.pcx rename to assets/items.pcx diff --git a/examples/audio_playback/assets/jump.wav b/assets/jump.wav similarity index 100% rename from examples/audio_playback/assets/jump.wav rename to assets/jump.wav diff --git a/examples/audio_playback/assets/laser-shoot.wav b/assets/laser-shoot.wav similarity index 100% rename from examples/audio_playback/assets/laser-shoot.wav rename to assets/laser-shoot.wav diff --git a/examples/imgui_integration/assets/orange_slime.pcx b/assets/orange_slime.pcx similarity index 100% rename from examples/imgui_integration/assets/orange_slime.pcx rename to assets/orange_slime.pcx diff --git a/examples/slimed/assets/particles.pcx b/assets/particles.pcx similarity index 100% rename from examples/slimed/assets/particles.pcx rename to assets/particles.pcx diff --git a/examples/audio_playback/assets/pickup-coin.wav b/assets/pickup-coin.wav similarity index 100% rename from examples/audio_playback/assets/pickup-coin.wav rename to assets/pickup-coin.wav diff --git a/examples/audio_playback/assets/powerup.wav b/assets/powerup.wav similarity index 100% rename from examples/audio_playback/assets/powerup.wav rename to assets/powerup.wav diff --git a/examples/imgui_integration/assets/small.fnt b/assets/small.fnt similarity index 100% rename from examples/imgui_integration/assets/small.fnt rename to assets/small.fnt diff --git a/examples/slimed/assets/sword.pcx b/assets/sword.pcx similarity index 100% rename from examples/slimed/assets/sword.pcx rename to assets/sword.pcx diff --git a/examples/imgui_integration/assets/tiles.pcx b/assets/tiles.pcx similarity index 100% rename from examples/imgui_integration/assets/tiles.pcx rename to assets/tiles.pcx diff --git a/examples/slimed/assets/title_screen.map.json b/assets/title_screen.map.json similarity index 100% rename from examples/slimed/assets/title_screen.map.json rename to assets/title_screen.map.json diff --git a/examples/slimed/assets/ui.pcx b/assets/ui.pcx similarity index 100% rename from examples/slimed/assets/ui.pcx rename to assets/ui.pcx diff --git a/examples/audio_playback/src/main.rs b/examples/audio_playback/src/main.rs index 192d7c3..1934786 100644 --- a/examples/audio_playback/src/main.rs +++ b/examples/audio_playback/src/main.rs @@ -58,11 +58,11 @@ fn main() -> Result<()> { let mut volume = 1.0; let sounds = [ - load_and_convert_wav(system.app_root_dir.join("./assets/pickup-coin.wav"), system.res.audio.spec())?, - load_and_convert_wav(system.app_root_dir.join("./assets/powerup.wav"), system.res.audio.spec())?, - load_and_convert_wav(system.app_root_dir.join("./assets/explosion.wav"), system.res.audio.spec())?, - load_and_convert_wav(system.app_root_dir.join("./assets/jump.wav"), system.res.audio.spec())?, - load_and_convert_wav(system.app_root_dir.join("./assets/laser-shoot.wav"), system.res.audio.spec())?, + load_and_convert_wav("./assets/pickup-coin.wav", system.res.audio.spec())?, + load_and_convert_wav("./assets/powerup.wav", system.res.audio.spec())?, + load_and_convert_wav("./assets/explosion.wav", system.res.audio.spec())?, + load_and_convert_wav("./assets/jump.wav", system.res.audio.spec())?, + load_and_convert_wav("./assets/laser-shoot.wav", system.res.audio.spec())?, ]; let mut statuses = [AudioChannelStatus { size: 0, position: 0, playing: false }; NUM_CHANNELS]; diff --git a/examples/balls/src/main.rs b/examples/balls/src/main.rs index d9a5288..fecd087 100644 --- a/examples/balls/src/main.rs +++ b/examples/balls/src/main.rs @@ -24,7 +24,7 @@ fn main() -> Result<()> { let font = BitmaskFont::new_vga_font()?; - let (balls_bmp, balls_palette) = IndexedBitmap::load_pcx_file(system.app_root_dir.join("./assets/balls.pcx"))?; + let (balls_bmp, balls_palette) = IndexedBitmap::load_pcx_file("./assets/balls.pcx")?; system.res.palette = balls_palette.clone(); let mut sprites = Vec::::new(); diff --git a/examples/balls_v2/assets/balls.pcx b/examples/balls_v2/assets/balls.pcx deleted file mode 100644 index e07f63302758ea0b6e079d5edda046218ae8d64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmeH_p-;m=6vp4uE^Ww(CD$#5t?Zg05QvJ2i3tQ^a$*93n3$-TKp+q#AP@-T#3X+J z0)apv$m@k5kcbHc0*OE(nw0Nu3n74kfa8+)zRSD!@@u}ng>uO!oPF|Wy>w%)XGBW1 zHdZ^QNiu9FNvGZE?Ch)`^|~vY{oZlEJ?#&Y!NJRry6GB~4$RDtPeBDSWyFVJi}@W^#it4ZJF8< zwdJX-X?WVww1q7ywlHl`=EDq21Z-haN#TC9(V8~55u`6|-O|_F6aLM diff --git a/examples/balls_v2/src/states.rs b/examples/balls_v2/src/states.rs index faf0cd8..0f178dc 100644 --- a/examples/balls_v2/src/states.rs +++ b/examples/balls_v2/src/states.rs @@ -25,7 +25,7 @@ impl Game { pub fn new(mut system: System) -> Result { let font = BitmaskFont::new_vga_font()?; - let (balls_bmp, balls_palette) = IndexedBitmap::load_pcx_file(system.app_root_dir.join("./assets/balls.pcx"))?; + let (balls_bmp, balls_palette) = IndexedBitmap::load_pcx_file("./assets/balls.pcx")?; system.res.palette = balls_palette.clone(); let mut sprites = Vec::new(); diff --git a/examples/imgui_integration/src/context.rs b/examples/imgui_integration/src/context.rs index 3c3f395..30c2255 100644 --- a/examples/imgui_integration/src/context.rs +++ b/examples/imgui_integration/src/context.rs @@ -90,17 +90,17 @@ impl AppContext for GameContext { impl GameContext { pub fn new(system: System) -> Result { - let palette = load_palette(system.app_root_dir.join("./assets/db16.pal"))?; + let palette = load_palette("./assets/db16.pal")?; - let font = load_font(system.app_root_dir.join("./assets/dp.fnt"))?; - let small_font = load_font(system.app_root_dir.join("./assets/small.fnt"))?; + let font = load_font("./assets/dp.fnt")?; + let small_font = load_font("./assets/small.fnt")?; - let tiles = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/tiles.pcx"))?); - let green_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/green_slime.pcx"))?); - let blue_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/blue_slime.pcx"))?); - let orange_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/orange_slime.pcx"))?); + let tiles = Rc::new(load_bitmap_atlas_autogrid("./assets/tiles.pcx")?); + let green_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/green_slime.pcx")?); + let blue_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/blue_slime.pcx")?); + let orange_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/orange_slime.pcx")?); - let tilemap = TileMap::load_from(system.app_root_dir.join("./assets/arena.map.json"))?; + let tilemap = TileMap::load_from("./assets/arena.map.json")?; let entities = Entities::new(); let component_systems = ComponentSystems::new(); diff --git a/examples/slimed/assets/arena.map.json b/examples/slimed/assets/arena.map.json deleted file mode 100644 index d1e4a6f..0000000 --- a/examples/slimed/assets/arena.map.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "width":40, - "height":30, - "layers":[ - [96,96,96,96,96,96,96,96,96,96,96,96,16,17,16,16,16,16,16,17,17,32,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,33,16,16,96,96,96,96,96,96,96,96,96,96,96,16,17,17,17,32,17,32,16,16,32,16,16,32,16,16,16,16,16,16,32,16,33,16,16,16,16,16,16,16,96,96,96,96,96,96,96,96,96,96,181,178,178,178,178,183,32,16,17,181,178,178,178,178,178,178,178,178,178,178,178,183,16,16,16,16,16,16,16,32,96,96,96,96,96,96,96,96,96,181,195,16,32,17,17,193,178,178,178,195,16,16,16,16,16,16,32,16,16,16,16,193,178,183,16,32,16,16,16,16,96,96,96,96,96,96,96,181,178,195,16,16,16,32,17,17,17,17,32,16,16,16,33,16,16,16,16,16,16,16,16,16,16,193,183,16,16,16,33,16,96,96,96,96,96,96,181,195,32,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,16,193,183,16,16,16,16,16,17,16,16,96,181,195,16,16,33,16,16,16,16,16,32,16,16,16,16,16,32,16,16,16,16,48,48,48,48,16,16,16,16,16,196,16,16,16,16,32,16,17,16,181,195,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,16,16,32,193,183,16,32,16,8,8,8,181,195,16,16,16,16,17,32,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,196,16,16,16,7,7,7,196,16,32,16,32,17,17,17,16,16,16,16,33,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,48,48,16,16,193,183,16,32,7,7,181,195,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,32,16,16,16,48,48,48,48,48,48,48,48,48,48,48,48,32,16,196,32,16,7,7,196,16,16,32,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,16,16,16,196,16,16,7,7,196,8,8,16,16,16,16,16,16,32,16,16,16,16,32,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,16,16,16,16,196,17,16,7,7,196,7,7,16,16,16,16,16,16,16,16,16,33,16,16,16,16,16,16,16,16,16,32,16,16,48,48,48,48,48,16,16,16,16,16,196,17,16,7,7,196,7,7,16,16,16,16,16,33,16,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,196,17,16,16,16,196,16,33,16,16,16,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,196,32,16,16,16,196,16,16,16,16,16,32,16,16,16,16,32,16,16,16,32,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,196,16,16,16,16,196,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,33,16,16,16,16,16,32,16,196,16,33,32,16,196,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,33,16,16,16,16,16,16,16,16,16,16,16,16,16,196,32,16,16,16,196,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,16,16,16,16,16,196,16,16,16,16,193,183,16,16,48,48,48,48,48,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,196,32,16,32,16,33,196,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,196,16,16,16,16,16,193,183,48,48,48,48,48,48,48,48,16,16,32,16,16,16,16,16,16,16,16,33,16,16,16,16,16,16,16,16,16,16,16,16,196,16,16,16,32,16,16,196,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,16,196,16,16,16,16,16,16,193,183,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,181,195,16,16,16,16,16,16,16,193,183,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,196,16,16,16,16,16,16,16,16,16,193,178,178,183,48,48,48,48,48,48,48,48,16,16,16,16,16,32,16,16,16,16,32,16,16,16,16,16,16,181,195,16,16,16,32,16,16,33,16,32,16,16,16,193,178,178,178,178,178,178,178,178,183,16,32,16,16,16,16,16,33,16,16,16,16,16,16,181,178,195,32,16,16,16,16,16,16,16,16,16,16,32,16,16,16,16,16,16,16,33,32,17,193,178,178,178,178,178,178,178,178,178,178,178,178,178,178,195,16,16,16,16,16,48,16,16,32,16,16,16,16,16,16,16,16,16,16,32,16,16,16,16,32,16,16,32,16,16,16,32,16,16,16,33,16,16,32,16,16,16,16,16,48,48], - [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,87,-1,104,108,108,108,105,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,105,-1,-1,-1,26,-1,26,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,-1,80,108,108,108,97,-1,-1,-1,-1,266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,51,-1,-1,-1,-1,52,50,-1,-1,-1,-1,-1,-1,-1,-1,46,46,46,102,-1,-1,27,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,51,-1,-1,-1,-1,-1,-1,27,-1,52,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,51,-1,-1,26,-1,-1,-1,-1,-1,-1,27,52,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,266,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,278,-1,-1,-1,-1,52,-1,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,-1,-1,-1,67,-1,-1,27,279,-1,-1,294,-1,-1,-1,-1,-1,-1,-1,-1,-1,83,-1,-1,-1,46,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,65,67,-1,-1,-1,-1,-1,-1,26,-1,-1,266,68,-1,-1,-1,-1,86,-1,-1,-1,-1,-1,29,-1,-1,-1,-1,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,27,-1,65,67,-1,-1,-1,-1,-1,-1,-1,-1,68,66,-1,-1,-1,-1,86,-1,-1,-1,-1,-1,29,-1,27,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,65,67,-1,-1,-1,-1,-1,68,66,-1,-1,26,-1,-1,86,-1,-1,-1,-1,-1,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,86,14,14,-1,14,14,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,86,-1,282,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,104,-1,282,-1,-1,-1,259,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,281,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,51,-1,-1,-1,-1,-1,52,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,52,-1,-1,-1,-1,-1,-1,-1,-1,-1,278,-1,-1,278,-1,-1,266,27,-1,278,-1,-1,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,26,-1,-1,-1,-1,-1,27,-1,50,-1,-1,-1,-1,-1,-1,-1,-1,294,-1,-1,294,-1,27,279,-1,-1,294,-1,-1,26,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,52,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,278,-1,-1,-1,-1,266,-1,-1,-1,-1,-1,-1,-1,-1,52,50,-1,-1,-1,-1,-1,-1,-1,-1,278,-1,-1,278,-1,-1,278,-1,-1,80,-1,-1,-1,-1,26,-1,294,-1,-1,-1,-1,-1,27,-1,-1,-1,-1,-1,-1,-1,-1,266,52,-1,-1,-1,27,279,-1,-1,294,-1,-1,294,-1,-1,294,-1,266,-1,-1,-1,26,-1,-1,-1,-1,-1,260,-1,-1,-1,-1,-1,-1,27,-1,-1,-1,26,-1,-1,-1,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,-1,-1,27,-1,49,-1,278,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,266,-1,-1,-1,-1,-1,-1,-1,27,-1,-1,-1,-1,-1,49,51,-1,294,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,-1,49,51,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,51,27,-1], - [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,0,1,1,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,-1,-1,-1,-1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,-1,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,0,0,-1,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] - ] -} \ No newline at end of file diff --git a/examples/slimed/assets/blue_slime.pcx b/examples/slimed/assets/blue_slime.pcx deleted file mode 100644 index 7582cabe33cc99f8c8e26dfb2919ead9538e9e04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2354 zcmeH|zit#U5XNVakS!EPL2;VpM?rjcIq<{h?Iq!Hp<9PhrZ!Xuasu%p+l!r8OedEUM&FN%1+rGcO z`(QGCy7}(Tz30!KJlc74xU;qU;?-<#>u~SoEG|C2fBfmk2hoYB+`V#3ZTp2EKc)OO z(&~w1(dc7{UiaZIFd9jsz71aIL#!KSS)w@Yg1V+=wbdqz#GvKla?R^)L|k!HiF@Vx z*jvTa@r>v@mK9xGMa;K?>tBiL7-hM5A`@F$jI(pamIYShnpKyuk`aMDXO3E;>k!7x zVO=ZcMQJ6wgF4#Elw`^EK$5=3K+ZsJU!o?I(Azxb?3=>dY#|x61!Yq5n0eH?ni}e$ zK{Ha2?l7f8T=YD=2BaO~C5wO*_nQNZbokb++iDLd_`8< zz|l_0A^FTRGOofVwi)xfrvOmXFHPMMZVlVA y!{C@O*#7JVx=Z#1lh{2-D&IgyLJ7FWBzP8eU77|tz=HZp(G!Yb%m5~sWH#U*yR#erH*5WqNQj<0?GBXu7w>GtB NupdREAuw!0008_`dx!u4 diff --git a/examples/slimed/assets/dp.fnt b/examples/slimed/assets/dp.fnt deleted file mode 100644 index 038ecc6d0b241b9da97978e6270f53c837db2654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2305 zcmeHGy=vqz5FWBWb|I3KhJ>r~0D@~=hy?N&sRRqY#zm@NIGuO%82bSC7y-e8Dv>fQ zWLaEgyWlFgFmk?;lWVWM;xb-)G@5U|8GZH=jaJ|PzJFNX*Y)r`Yz{+Rh7e4CN~gJr zJ~ugUnA35?5M@ebM8j~{06&l_uCEJ4!)E>Pu-*(O$;mJ8eWi+`P+6T_eZP|Owr!S+ zvj-jW1C?>%+i^N$RUWv$^D)}g=cEan=$jrpB7ge1y5wLCuN|Ar}f zPUpAn);nSru5+*9$vH>vyn#i2=5h%72$G=7O0+D8GXVOb*Hu>hzW@yy5PALGtOJ`fV^8s_2t`0z;U z9_0!#;BgKv;}44kV7@58n8!SL$q=BYb154s&xyJC<^WrCw*!=og>d}G__8krz7+Uh z6-fVLv&lS7(sVkTrO7mzr0Fb4(u8d?ohS2;HNsiSxR}9%gBh-L`nfZiC(}Ra5jlbT G=k^Y8n7@Mn diff --git a/examples/slimed/assets/green_slime.pcx b/examples/slimed/assets/green_slime.pcx deleted file mode 100644 index a663d3bdfd29503cae171bfa3db5244dee8d13cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2354 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 for Game { impl Game { pub fn new(mut system: System) -> Result { - let palette = load_palette(system.app_root_dir.join("./assets/db16.pal"))?; + let palette = load_palette("./assets/db16.pal")?; system.res.palette = palette.clone(); - let font = load_font(system.app_root_dir.join("./assets/dp.fnt"))?; + let font = load_font("./assets/dp.fnt")?; - let tiles = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/tiles.pcx"))?); - let hero_male = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/hero_male.pcx"))?); - let hero_female = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/hero_female.pcx"))?); - let green_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/green_slime.pcx"))?); - let blue_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/blue_slime.pcx"))?); - let orange_slime = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/orange_slime.pcx"))?); - let fist = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/fist.pcx"))?); - let sword = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/sword.pcx"))?); - let particles = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/particles.pcx"))?); - let items = Rc::new(load_bitmap_atlas_autogrid(system.app_root_dir.join("./assets/items.pcx"))?); + let tiles = Rc::new(load_bitmap_atlas_autogrid("./assets/tiles.pcx")?); + let hero_male = Rc::new(load_bitmap_atlas_autogrid("./assets/hero_male.pcx")?); + let hero_female = Rc::new(load_bitmap_atlas_autogrid("./assets/hero_female.pcx")?); + let green_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/green_slime.pcx")?); + let blue_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/blue_slime.pcx")?); + let orange_slime = Rc::new(load_bitmap_atlas_autogrid("./assets/orange_slime.pcx")?); + let fist = Rc::new(load_bitmap_atlas_autogrid("./assets/fist.pcx")?); + let sword = Rc::new(load_bitmap_atlas_autogrid("./assets/sword.pcx")?); + let particles = Rc::new(load_bitmap_atlas_autogrid("./assets/particles.pcx")?); + let items = Rc::new(load_bitmap_atlas_autogrid("./assets/items.pcx")?); - let mut ui = load_bitmap_atlas(system.app_root_dir.join("./assets/ui.pcx"))?; + let mut ui = load_bitmap_atlas("./assets/ui.pcx")?; ui.add(Rect::new(0, 0, 16, 16))?; ui.add(Rect::new(16, 0, 16, 16))?; for i in 0..8 { ui.add(Rect::new(i * 8, 16, 8, 8))?; } - let tilemap = TileMap::load_from(system.app_root_dir.join("./assets/title_screen.map.json"))?; + let tilemap = TileMap::load_from("./assets/title_screen.map.json")?; let entities = Entities::new(); let component_systems = ComponentSystems::new(); diff --git a/examples/slimed/src/states.rs b/examples/slimed/src/states.rs index b55e060..41dab3d 100644 --- a/examples/slimed/src/states.rs +++ b/examples/slimed/src/states.rs @@ -86,13 +86,7 @@ impl AppState for MainMenuState { fn state_change(&mut self, new_state: State, old_state: State, context: &mut Game) { match new_state { State::Pending | State::Resume => { - init_everything( - context, - context.core.system.app_root_dir.join("./assets/title_screen.map.json"), - 0.2, - 1.0, - 32, - ); + init_everything(context, "./assets/title_screen.map.json", 0.2, 1.0, 32); } State::TransitionIn => { self.fade = 0.0; @@ -223,13 +217,7 @@ impl AppState for GamePlayState { fn state_change(&mut self, new_state: State, old_state: State, context: &mut Game) { match new_state { State::Pending => { - init_everything( - context, - context.core.system.app_root_dir.join("./assets/arena.map.json"), - 0.5, - 2.0, - 100, - ); + init_everything(context, "./assets/arena.map.json", 0.5, 2.0, 100); spawn_player_randomly(&mut context.core); } State::TransitionIn => {