diff --git a/src/cards/mod.rs b/src/cards/mod.rs index 3fb6364..37ed5ec 100644 --- a/src/cards/mod.rs +++ b/src/cards/mod.rs @@ -3,6 +3,14 @@ use bevy::prelude::*; pub mod hand; +pub struct CardsPlugin; + +impl Plugin for CardsPlugin { + fn build(&self, app: &mut App) { + app.add_observer(on_create_card); + } +} + #[derive(Component)] pub struct Card; @@ -17,13 +25,34 @@ pub fn on_create_card( atlas_layout: Res, atlas_sprite: Res, ) { - commands.spawn(( - Card, - Transform::from_xyz(0., 0., 0.), - /*Sprite { - image: atlas_sprite.get(), - image_mode: SpriteImageMode::Auto, - texture_atlas: Some(TextureAtlas { layout: , index: () }) - },*/ - )); + if let Some(parent) = event.parent { + commands.spawn(( + Card, + Transform::from_xyz(0., 0., 0.), + Sprite { + image: atlas_sprite.get(), + image_mode: SpriteImageMode::Auto, + texture_atlas: Some(TextureAtlas { + layout: atlas_layout.get(), + index: 0, + }), + ..default() + }, + ChildOf(parent), + )); + } else { + commands.spawn(( + Card, + Transform::from_xyz(0., 0., 0.), + Sprite { + image: atlas_sprite.get(), + image_mode: SpriteImageMode::Auto, + texture_atlas: Some(TextureAtlas { + layout: atlas_layout.get(), + index: 0, + }), + ..default() + }, + )); + } } diff --git a/src/main.rs b/src/main.rs index 5c7e7cc..6396925 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,11 @@ use bevy::prelude::*; +use crate::cards::CardsPlugin; use crate::lofpara_atlas::LofparaAtlasPlugin; mod cards; mod lofpara_atlas; fn main() { - App::new().add_plugins((DefaultPlugins, LofparaAtlasPlugin)); + App::new().add_plugins((DefaultPlugins, LofparaAtlasPlugin, CardsPlugin)); }