diff --git a/Cargo.toml b/Cargo.toml index 97d7d62..f4ae34e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -bevy = { version = "0.16.1", features = ["dynamic_linking"]} +bevy = { version = "0.16.1", features = ["dynamic_linking"] } bevy-inspector-egui = "0.33.1" [profile.dev] diff --git a/assets/thumbnails/corner-ne-1-wall.png b/assets/thumbnails/corner-ne-1-wall.png new file mode 100644 index 0000000..0131e08 Binary files /dev/null and b/assets/thumbnails/corner-ne-1-wall.png differ diff --git a/assets/thumbnails/corner-ne-2-walls-south.png b/assets/thumbnails/corner-ne-2-walls-south.png new file mode 100644 index 0000000..584e675 Binary files /dev/null and b/assets/thumbnails/corner-ne-2-walls-south.png differ diff --git a/assets/thumbnails/corner-ne-2-walls-west.png b/assets/thumbnails/corner-ne-2-walls-west.png new file mode 100644 index 0000000..3533769 Binary files /dev/null and b/assets/thumbnails/corner-ne-2-walls-west.png differ diff --git a/assets/thumbnails/corner-ne-3-walls.png b/assets/thumbnails/corner-ne-3-walls.png new file mode 100644 index 0000000..25e88d5 Binary files /dev/null and b/assets/thumbnails/corner-ne-3-walls.png differ diff --git a/assets/thumbnails/corner-nw-1-wall.png b/assets/thumbnails/corner-nw-1-wall.png new file mode 100644 index 0000000..77cea63 Binary files /dev/null and b/assets/thumbnails/corner-nw-1-wall.png differ diff --git a/assets/thumbnails/corner-nw-2-walls-east.png b/assets/thumbnails/corner-nw-2-walls-east.png new file mode 100644 index 0000000..dcb82c6 Binary files /dev/null and b/assets/thumbnails/corner-nw-2-walls-east.png differ diff --git a/assets/thumbnails/corner-nw-2-walls-south.png b/assets/thumbnails/corner-nw-2-walls-south.png new file mode 100644 index 0000000..d491ac6 Binary files /dev/null and b/assets/thumbnails/corner-nw-2-walls-south.png differ diff --git a/assets/thumbnails/corner-nw-3-walls.png b/assets/thumbnails/corner-nw-3-walls.png new file mode 100644 index 0000000..f207d62 Binary files /dev/null and b/assets/thumbnails/corner-nw-3-walls.png differ diff --git a/assets/thumbnails/corner-se-1-wall.png b/assets/thumbnails/corner-se-1-wall.png new file mode 100644 index 0000000..c22f0b6 Binary files /dev/null and b/assets/thumbnails/corner-se-1-wall.png differ diff --git a/assets/thumbnails/corner-se-2-walls-north.png b/assets/thumbnails/corner-se-2-walls-north.png new file mode 100644 index 0000000..dd4c6fb Binary files /dev/null and b/assets/thumbnails/corner-se-2-walls-north.png differ diff --git a/assets/thumbnails/corner-se-2-walls-west.png b/assets/thumbnails/corner-se-2-walls-west.png new file mode 100644 index 0000000..1074d01 Binary files /dev/null and b/assets/thumbnails/corner-se-2-walls-west.png differ diff --git a/assets/thumbnails/corner-se-3-walls.png b/assets/thumbnails/corner-se-3-walls.png new file mode 100644 index 0000000..0005fcb Binary files /dev/null and b/assets/thumbnails/corner-se-3-walls.png differ diff --git a/assets/thumbnails/corner-sw-1-wall.png b/assets/thumbnails/corner-sw-1-wall.png new file mode 100644 index 0000000..4714e39 Binary files /dev/null and b/assets/thumbnails/corner-sw-1-wall.png differ diff --git a/assets/thumbnails/corner-sw-2-walls-east.png b/assets/thumbnails/corner-sw-2-walls-east.png new file mode 100644 index 0000000..acb2b95 Binary files /dev/null and b/assets/thumbnails/corner-sw-2-walls-east.png differ diff --git a/assets/thumbnails/corner-sw-2-walls-north.png b/assets/thumbnails/corner-sw-2-walls-north.png new file mode 100644 index 0000000..2711531 Binary files /dev/null and b/assets/thumbnails/corner-sw-2-walls-north.png differ diff --git a/assets/thumbnails/corner-sw-3-walls.png b/assets/thumbnails/corner-sw-3-walls.png new file mode 100644 index 0000000..c94ccd2 Binary files /dev/null and b/assets/thumbnails/corner-sw-3-walls.png differ diff --git a/assets/thumbnails/full-0-walls.png b/assets/thumbnails/full-0-walls.png new file mode 100644 index 0000000..52a86f2 Binary files /dev/null and b/assets/thumbnails/full-0-walls.png differ diff --git a/assets/thumbnails/full-1-wall.png b/assets/thumbnails/full-1-wall.png new file mode 100644 index 0000000..8780936 Binary files /dev/null and b/assets/thumbnails/full-1-wall.png differ diff --git a/assets/thumbnails/full-2-walls.png b/assets/thumbnails/full-2-walls.png new file mode 100644 index 0000000..9a68658 Binary files /dev/null and b/assets/thumbnails/full-2-walls.png differ diff --git a/assets/thumbnails/full-3-walls.png b/assets/thumbnails/full-3-walls.png new file mode 100644 index 0000000..a99066a Binary files /dev/null and b/assets/thumbnails/full-3-walls.png differ diff --git a/assets/thumbnails/full-4-walls.png b/assets/thumbnails/full-4-walls.png new file mode 100644 index 0000000..e18f062 Binary files /dev/null and b/assets/thumbnails/full-4-walls.png differ diff --git a/assets/tiles/corner-ne-1-wall.png b/assets/tiles/corner-ne-1-wall.png new file mode 100644 index 0000000..61316a3 Binary files /dev/null and b/assets/tiles/corner-ne-1-wall.png differ diff --git a/assets/tiles/corner-ne-2-walls-south.png b/assets/tiles/corner-ne-2-walls-south.png new file mode 100644 index 0000000..a61dbd4 Binary files /dev/null and b/assets/tiles/corner-ne-2-walls-south.png differ diff --git a/assets/tiles/corner-ne-2-walls-west.png b/assets/tiles/corner-ne-2-walls-west.png new file mode 100644 index 0000000..ea87257 Binary files /dev/null and b/assets/tiles/corner-ne-2-walls-west.png differ diff --git a/assets/tiles/corner-ne-3-walls.png b/assets/tiles/corner-ne-3-walls.png new file mode 100644 index 0000000..971af22 Binary files /dev/null and b/assets/tiles/corner-ne-3-walls.png differ diff --git a/assets/tiles/corner-nw-1-wall.png b/assets/tiles/corner-nw-1-wall.png new file mode 100644 index 0000000..eade30d Binary files /dev/null and b/assets/tiles/corner-nw-1-wall.png differ diff --git a/assets/tiles/corner-nw-2-walls-east.png b/assets/tiles/corner-nw-2-walls-east.png new file mode 100644 index 0000000..35bc0d0 Binary files /dev/null and b/assets/tiles/corner-nw-2-walls-east.png differ diff --git a/assets/tiles/corner-nw-2-walls-south.png b/assets/tiles/corner-nw-2-walls-south.png new file mode 100644 index 0000000..66ea564 Binary files /dev/null and b/assets/tiles/corner-nw-2-walls-south.png differ diff --git a/assets/tiles/corner-nw-3-walls.png b/assets/tiles/corner-nw-3-walls.png new file mode 100644 index 0000000..e4a2488 Binary files /dev/null and b/assets/tiles/corner-nw-3-walls.png differ diff --git a/assets/tiles/corner-se-1-wall.png b/assets/tiles/corner-se-1-wall.png new file mode 100644 index 0000000..c80650a Binary files /dev/null and b/assets/tiles/corner-se-1-wall.png differ diff --git a/assets/tiles/corner-se-2-walls-north.png b/assets/tiles/corner-se-2-walls-north.png new file mode 100644 index 0000000..4fd1f05 Binary files /dev/null and b/assets/tiles/corner-se-2-walls-north.png differ diff --git a/assets/tiles/corner-se-2-walls-west.png b/assets/tiles/corner-se-2-walls-west.png new file mode 100644 index 0000000..37dcf9a Binary files /dev/null and b/assets/tiles/corner-se-2-walls-west.png differ diff --git a/assets/tiles/corner-se-3-walls.png b/assets/tiles/corner-se-3-walls.png new file mode 100644 index 0000000..1daff77 Binary files /dev/null and b/assets/tiles/corner-se-3-walls.png differ diff --git a/assets/tiles/corner-sw-1-wall.png b/assets/tiles/corner-sw-1-wall.png new file mode 100644 index 0000000..9565808 Binary files /dev/null and b/assets/tiles/corner-sw-1-wall.png differ diff --git a/assets/tiles/corner-sw-2-walls-east.png b/assets/tiles/corner-sw-2-walls-east.png new file mode 100644 index 0000000..036a768 Binary files /dev/null and b/assets/tiles/corner-sw-2-walls-east.png differ diff --git a/assets/tiles/corner-sw-2-walls-north.png b/assets/tiles/corner-sw-2-walls-north.png new file mode 100644 index 0000000..6becac2 Binary files /dev/null and b/assets/tiles/corner-sw-2-walls-north.png differ diff --git a/assets/tiles/corner-sw-3-walls.png b/assets/tiles/corner-sw-3-walls.png new file mode 100644 index 0000000..2debf80 Binary files /dev/null and b/assets/tiles/corner-sw-3-walls.png differ diff --git a/assets/tiles/full-0-walls.png b/assets/tiles/full-0-walls.png new file mode 100644 index 0000000..8bf40df Binary files /dev/null and b/assets/tiles/full-0-walls.png differ diff --git a/assets/tiles/full-1-wall.png b/assets/tiles/full-1-wall.png new file mode 100644 index 0000000..2fa908e Binary files /dev/null and b/assets/tiles/full-1-wall.png differ diff --git a/assets/tiles/full-2-walls.png b/assets/tiles/full-2-walls.png new file mode 100644 index 0000000..3f7ce7e Binary files /dev/null and b/assets/tiles/full-2-walls.png differ diff --git a/assets/tiles/full-3-walls.png b/assets/tiles/full-3-walls.png new file mode 100644 index 0000000..51fdca4 Binary files /dev/null and b/assets/tiles/full-3-walls.png differ diff --git a/assets/tiles/full-4-walls.png b/assets/tiles/full-4-walls.png new file mode 100644 index 0000000..839f56b Binary files /dev/null and b/assets/tiles/full-4-walls.png differ diff --git a/src/assets.rs b/src/assets.rs new file mode 100644 index 0000000..8fddd7f --- /dev/null +++ b/src/assets.rs @@ -0,0 +1,82 @@ +use bevy::prelude::*; +use std::path::Path; + +pub struct TileImage { + name: &'static str, + thumbnail_handle: Handle, + tile_handle: Handle, +} + +#[derive(Resource)] +pub struct AssetLibrary { + tile_images: Vec, +} + +impl AssetLibrary { + fn new(asset_server: &AssetServer) -> Self { + let tile_names = vec![ + "corner-ne-1-wall", + "corner-ne-2-walls-south", + "corner-ne-2-walls-west", + "corner-ne-3-walls", + "corner-nw-1-wall", + "corner-nw-2-walls-south", + "corner-nw-2-walls-east", + "corner-nw-3-walls", + "corner-se-1-wall", + "corner-se-2-walls-north", + "corner-se-2-walls-west", + "corner-se-3-walls", + "corner-sw-1-wall", + "corner-sw-2-walls-north", + "corner-sw-2-walls-east", + "corner-sw-3-walls", + "full-0-walls", + "full-1-wall", + "full-2-walls", + "full-3-walls", + "full-4-walls", + ]; + + let tile_images = tile_names + .iter() + .cloned() + .map(|name| { + let thumbnail_path = Path::new("thumbnails").join(name).with_extension("png"); + let tile_path = Path::new("tiles").join(name).with_extension("png"); + + let thumbnail_handle = asset_server.load::(thumbnail_path); + let tile_handle = asset_server.load::(tile_path); + + TileImage { + name, + thumbnail_handle, + tile_handle, + } + }) + .collect(); + + Self { tile_images } + } + + pub fn get_thumbnail(&self, name: &str) -> Option> { + self + .tile_images + .iter() + .find(|&tile| tile.name == name) + .map(|tile| tile.thumbnail_handle.clone()) + } + + pub fn get_tile(&self, name: &str) -> Option> { + self + .tile_images + .iter() + .find(|&tile| tile.name == name) + .map(|tile| tile.tile_handle.clone()) + } +} + +pub fn load_assets(mut commands: Commands, asset_server: Res) { + let asset_library = AssetLibrary::new(&asset_server); + commands.insert_resource(asset_library); +} diff --git a/src/main.rs b/src/main.rs index 15f823e..0323db3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use bevy::{prelude::*, window::WindowResolution}; use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::WorldInspectorPlugin}; +mod assets; mod card; mod constants; mod widgets; @@ -16,5 +17,6 @@ fn main() { })) .add_plugins(EguiPlugin::default()) .add_plugins(WorldInspectorPlugin::new()) + .add_systems(Startup, assets::load_assets) .run(); }