From 44c83563a559cbb5d2cb703f168f9c72e5f2e8aa Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Mon, 2 Dec 2024 21:20:54 -0800 Subject: [PATCH] Stubbing out set game resources/data structures --- assets/red_oval_open_one.png | Bin 0 -> 1056 bytes flake.nix | 1 + src/main.rs | 83 +++++++++++++++++++++++++++++++++-- 3 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 assets/red_oval_open_one.png diff --git a/assets/red_oval_open_one.png b/assets/red_oval_open_one.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7b387847cf62dbdf5fdf86e7ad9855ae803d78 GIT binary patch literal 1056 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV1DlD;uumf=j|jzzN=n5uK(|| zEpijlX_(jNyTQ!N(fz!T!0g6yRi!l-Rc5LP|30>FxySco&u>2eZ=P@e=b!%+S4I(c zEJ)?i_4D%U-`n5Y`~SzUyu}P^m*ox`6-`jiIU99j_D;zICmNP-*xn&0`S1U||9Zj> zp&|~2K%~dYAaZbXAj8o>2JM>vf1ZAgeSUfS`t|QW2Qt*(wEiLH-{;7-_!Tjil;Jt zu4c|BpycT$yvwo+$r?f*g!-LwE zYX__UailVJMA$VSmQ!Wwh}rX%VWOUG5Zi$*C2G^yZSL`=V(WE&|X z+Ms-G@=?QB2A%G=2VbmYkV*U!!q8_>WoO5*JLJHo8*{r2 zx?(C33l!{G$8|u^Eu8fM$KusY1uYjt87&UIn5D&ls#{*3At5G*|23yXj6SgF@Cz9XVxa%31MWYZs<6A z`=`R8ha6l9N@Zpr=GC`dVPrV3>~hYon`ws2l{>4Ka5K2bC?`GR5jnuJ=lNNcRE7hu zHQve;Twh}yz#yKH-eCRgj^`}~hw240k7wRzGrs?QQ3wNfIRDk^@2_SDF5zSN(zmtX zS;pS)=k^?S`o-YzK0`O!{m!qy*WS-_=wuMv##h<4TwZ<(S3;s2hh!hW7h8g*kn^;~ z`fp_Am+&tz;#y#Vjvgo|bMNkYuIK*md;o*aoxOV|wx&J~WbF8<(eMZ>`onm7pQf#q Tmheqr&S&s+^>bP0l+XkKBRI0| literal 0 HcmV?d00001 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, }