diff --git a/assets/red_oval_open_one.png b/assets/red_oval_open_one.png new file mode 100644 index 0000000..9a7b387 Binary files /dev/null and b/assets/red_oval_open_one.png differ diff --git a/flake.nix b/flake.nix index 67e946e..a7c443a 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,7 @@ cargo-expand nixpkgs-fmt cmake + rx ] ++ buildInputs ++ nativeBuildInputs; in rec { diff --git a/src/main.rs b/src/main.rs index 8323001..ea58670 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,84 @@ -use bevy::prelude::*; +use bevy::{prelude::*, utils::HashMap}; fn main() { - App::new().add_plugins(DefaultPlugins).run(); + App::new() + .add_systems(Startup, startup) + .add_plugins(DefaultPlugins) + .run(); } -fn hello_world_system() { - println!("hello world"); +fn startup(mut commands: Commands, server: Res) { + let sprite = Sprite { + image: server.load("red_oval_open_one.png"), + ..default() + }; + let mut cards = HashMap::new(); + let card = Card { + color: ItemColor::Red, + shape: ItemShape::Oval, + pattern: ItemPattern::Open, + number: ItemNumber::One, + }; + cards.insert(card, sprite); + // [ItemColor::Red, ItemColor::Green, ItemColor::Purple] + // .iter() + // .for_each(|c| { + // [ItemNumber::One, ItemNumber::Two, ItemNumber::Three] + // .iter() + // .for_each(|n| { + // [ItemPattern::Solid, ItemPattern::Striped, ItemPattern::Open] + // .iter() + // .for_each(|p| { + // [ItemShape::Oval, ItemShape::Diamond, ItemShape::Squiggle] + // .iter() + // .for_each(|s| { + // cards.insert((*c, *s, *p, *n), sprite.clone()); + // }); + // }); + // }); + // }); + let test_deck = Deck { cards }; + commands.insert_resource(test_deck); +} + +// 81 cards total +#[derive(Resource)] +struct Deck { + cards: HashMap, +} + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +struct Card { + color: ItemColor, + number: ItemNumber, + pattern: ItemPattern, + shape: ItemShape, +} + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +enum ItemColor { + Red, + Green, + Purple, +} + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +enum ItemNumber { + One, + Two, + Three, +} + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +enum ItemPattern { + Solid, + Striped, + Open, +} + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +enum ItemShape { + Oval, + Diamond, + Squiggle, }