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 @@
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"),
+ );
+}