diff --git a/assets/atlas.png b/assets/atlas.png deleted file mode 100644 index 4e572ad..0000000 Binary files a/assets/atlas.png and /dev/null differ diff --git a/assets/atlas.svg b/assets/atlas.svg index 27d9b44..528fb0f 100644 --- a/assets/atlas.svg +++ b/assets/atlas.svg @@ -2,9 +2,9 @@ + inkscape:current-layer="g50"> + + + + + id="defs1"> + + + + + + + + - - - + id="g1"> + + + + + + + + + + - - - + id="g50"> + + diff --git a/assets/atlas_CardBack.png b/assets/atlas_CardBack.png new file mode 100644 index 0000000..b585224 Binary files /dev/null and b/assets/atlas_CardBack.png differ diff --git a/assets/atlas_CardFront.png b/assets/atlas_CardFront.png new file mode 100644 index 0000000..9f3da30 Binary files /dev/null and b/assets/atlas_CardFront.png differ diff --git a/assets/atlas_HandGUI.png b/assets/atlas_HandGUI.png new file mode 100644 index 0000000..91a5d2d Binary files /dev/null and b/assets/atlas_HandGUI.png differ diff --git a/src/cards/mod.rs b/src/cards/mod.rs index 37ed5ec..9727900 100644 --- a/src/cards/mod.rs +++ b/src/cards/mod.rs @@ -1,13 +1,23 @@ -use crate::lofpara_atlas::*; use bevy::prelude::*; +use crate::sprite_loading::SpriteRegistry; + pub mod hand; pub struct CardsPlugin; impl Plugin for CardsPlugin { fn build(&self, app: &mut App) { - app.add_observer(on_create_card); + app.add_observer(on_create_card) + .add_systems(Startup, |mut commands: Commands| { + commands.spawn(Camera2d); + for i in 0..4 { + commands.trigger(CreateCard { + parent: None, + transform: Transform::from_xyz(100. * (i as f32), 0., 0.), + }); + } + }); } } @@ -16,26 +26,21 @@ pub struct Card; #[derive(Event)] pub struct CreateCard { - parent: Option, + pub parent: Option, + pub transform: Transform, } -pub fn on_create_card( - event: On, - mut commands: Commands, - atlas_layout: Res, - atlas_sprite: Res, -) { +pub fn on_create_card(event: On, mut commands: Commands, sprites: Res) { + let Some(sprite) = sprites.0.get("card_front") else { + return; + }; if let Some(parent) = event.parent { commands.spawn(( Card, - Transform::from_xyz(0., 0., 0.), + event.transform, Sprite { - image: atlas_sprite.get(), + image: sprite.clone(), image_mode: SpriteImageMode::Auto, - texture_atlas: Some(TextureAtlas { - layout: atlas_layout.get(), - index: 0, - }), ..default() }, ChildOf(parent), @@ -43,14 +48,10 @@ pub fn on_create_card( } else { commands.spawn(( Card, - Transform::from_xyz(0., 0., 0.), + event.transform, Sprite { - image: atlas_sprite.get(), + image: sprite.clone(), image_mode: SpriteImageMode::Auto, - texture_atlas: Some(TextureAtlas { - layout: atlas_layout.get(), - index: 0, - }), ..default() }, )); diff --git a/src/lofpara_atlas.rs b/src/lofpara_atlas.rs deleted file mode 100644 index 86e8e42..0000000 --- a/src/lofpara_atlas.rs +++ /dev/null @@ -1,43 +0,0 @@ -use bevy::prelude::*; - -#[derive(Resource)] -pub struct LofparaAtlasLayout(Handle); - -impl LofparaAtlasLayout { - pub fn get(&self) -> Handle { - return self.0.clone(); - } -} - -#[derive(Resource)] -pub struct LofparaAtlasImage(Handle); - -impl LofparaAtlasImage { - pub fn get(&self) -> Handle { - return self.0.clone(); - } -} - -pub struct LofparaAtlasPlugin; - -impl Plugin for LofparaAtlasPlugin { - fn build(&self, app: &mut App) { - app.add_systems(Startup, startup_image); - } -} - -fn startup_image( - mut commands: Commands, - asset_server: Res, - mut atlas_layouts: ResMut>, -) { - commands.insert_resource(LofparaAtlasImage(asset_server.load("atlas.png"))); - - let mut atlas_layout = TextureAtlasLayout::new_empty(UVec2::new(1920, 1080)); - //Card, index = 0 - atlas_layout.add_texture(URect::new(0, 0, 258, 363)); - //Cardholder, index = 1 - atlas_layout.add_texture(URect::new(259, 0, 166, 166)); - - commands.insert_resource(LofparaAtlasLayout(atlas_layouts.add(atlas_layout))); -} diff --git a/src/main.rs b/src/main.rs index 6396925..3af5fb8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,12 @@ use bevy::prelude::*; -use crate::cards::CardsPlugin; -use crate::lofpara_atlas::LofparaAtlasPlugin; +use crate::{cards::CardsPlugin, sprite_loading::SpriteLoadingPlugin}; mod cards; -mod lofpara_atlas; +mod sprite_loading; fn main() { - App::new().add_plugins((DefaultPlugins, LofparaAtlasPlugin, CardsPlugin)); + App::new() + .add_plugins((DefaultPlugins, CardsPlugin, SpriteLoadingPlugin)) + .run(); } diff --git a/src/sprite_loading.rs b/src/sprite_loading.rs new file mode 100644 index 0000000..7369c5a --- /dev/null +++ b/src/sprite_loading.rs @@ -0,0 +1,29 @@ +use bevy::prelude::*; +use std::collections::HashMap; + +#[derive(Resource)] +pub struct SpriteRegistry(pub HashMap>); + +pub struct SpriteLoadingPlugin; + +impl Plugin for SpriteLoadingPlugin { + fn build(&self, app: &mut App) { + app.insert_resource(SpriteRegistry(HashMap::new())) + .add_systems(Startup, setup_sprite_registry); + } +} + +pub fn setup_sprite_registry(mut sprites: ResMut, asset_server: Res) { + sprites.0.insert( + "card_back".to_string(), + asset_server.load("atlas_CardBack.png"), + ); + sprites.0.insert( + "card_front".to_string(), + asset_server.load("atlas_CardFront.png"), + ); + sprites.0.insert( + "hand_gui".to_string(), + asset_server.load("atlas_HandGUI.png"), + ); +}