From 74708f8b7b5e819c5c87cca2095fa881e3385fc5 Mon Sep 17 00:00:00 2001 From: Arkitu <85173315+Arkitu@users.noreply.github.com> Date: Sat, 1 Mar 2025 16:15:51 +0100 Subject: [PATCH] add goat button --- assets/ui/disabled_goat.png | Bin 0 -> 1858 bytes assets/ui/enabled_goat.png | Bin 0 -> 1982 bytes src/animals.rs | 19 +++++++++++++++++++ src/lib.rs | 2 ++ src/ui.rs | 36 ++++++++++++++++++++++++++++++------ 5 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 assets/ui/disabled_goat.png create mode 100644 assets/ui/enabled_goat.png create mode 100644 src/animals.rs diff --git a/assets/ui/disabled_goat.png b/assets/ui/disabled_goat.png new file mode 100644 index 0000000000000000000000000000000000000000..1e08deb62d8055b0acd680233dd79186423122c2 GIT binary patch literal 1858 zcmZ`)eK^w#8~)9v&Bm<8nY7M^QkGgMA7O?$QCT=T%;!4JTR7!w`5d!x=s3J`kX2hu zyrEO(Tg@gT5kfxFdpL}RoTNti9A3SDzSs3W*L6Sl^W66z_g~NTWVlgJYru8k003yX zI8!`!nEe&7T|2#vbg_Gf)FPZ|3;;l&zXAl@;p^;(Acn_j2cWVSJGZkyF5A1>13>i+ zgz};)0PGrZq1b!Ifj-=QO5Jx>>$#?1evYTnK;W##LQ=}vakd34-$m=7jWq2Le)skn zelB55MHikWn9)4|7tnJA_71mHj>9JTL6=I}$#49HmwV%$7S;XfUrU|0ok(QN^krx4 zWd6UJ3qGMMblzQ5%g&l!D0lQEHF7GN!8kF6PpuOJ@`ei;DM*W80_>jyEC<)Vy0* z*xV!*X9fCftt#Zlr_~_>_T1du^nsUlF&V#W;z)`A!p-C6mrtaj-3B1L|)H^cx4Bg3R-TKyFRmjjMH=76AwMW`L;@myN8{m zEPg0EUqr~?W62J(Ts3`cMzJy&b}2{%R3d)W*m{TNUNG91tEm*^lYwk!oy0aUDVY(% zYAYap*9fL$yf7`Rx%{Z)?} zPphTLsBhZv2>XWXGwRvZ%q)*Hcs4TEaP{1UdAk>BwY9av-o8GbLseU+N3^(DT>yWF z8Z+n0vhK%qHhGn`#Ek4&#rweEl0B<%>lw>lC||lYjnwj%X8MCO4=Q&6HI)N zv0+Q}v}C`W=gH;RL;^~CG0O{djd7_6vNb+lvkfD*AMKjo*B+oQZQ4Xo_Y26kllF)W zlXp`gZgo8*wXrX}_hu|wq&|RDdhLBe@J?B=e$Xsp`9_)=z|I!`WuWK`EZcD#n&6zk zU=fZAp?~Q0jV&`w%vRd|QtMLO++?+Nfhm|;-!&!Ow>kp%Yp z_do9@zgh>Ee&)IuQC0Db3HU8&`QNJ{?Q4TlKaDGH9NB=-bS*RD7(j(cTsg~R8e0xIto0VgGz88JS%NaTN_`Xmmj91=@ zUh+0jY(H|Hkzu3Ex)P$hfn-|ceJ#gH6xb?`2+@X+we?F$x(ENMU8{e(tb}`IM`}acFY-t7?;pmxPKRr)Du2OkGpck?UnzhsPl~QTNJU)Ifa3tAKOL z#Gs%Onkov5-=JKNzifY0Nbl^m8UG;Wu6^$n%e3riB~tO9zccGpT-i9+r@vx8iiK zp`l>`Mh^+8Ft@V{cQ!&G5RbA|p~2U6(XnR7Q}rihouEHUVJ&ji9hMJj(tUarLkymJbDZLyVsW~A7p~jfS@e4!Ch0XA zj@3ruOF|Wl0axYHUN~06iXCD#5>{atBRQHjl?XQfcnq#fjUyUQFS0mnvL zjHIFZXvMt_*79ljP+Ds7G5bNy)9FLP@smhFg~8!c^ZMdrFTh*) u{hvoA#mCFhoj3Pr$7)BCVWj_kFl$Tb>?(@^x^?u@SIfnTN~v_9r~C)?k46Xp literal 0 HcmV?d00001 diff --git a/assets/ui/enabled_goat.png b/assets/ui/enabled_goat.png new file mode 100644 index 0000000000000000000000000000000000000000..9941dc0fa3b8f9ea153d5cb49a61a5d20935a071 GIT binary patch literal 1982 zcmV;v2SNCWP)vj3WgV>(cQLa z&=4pO1e64B6%!P-Td7z|JJ)k&XUcTD(3$D%+QiEU+0W4FP0401H!UsJ!gb)p2`Gbitgpa$b zrH+qLKRH;QV9K|l zv-+7MLyjZr_)@w6N5NI{#g|?le*EyyL+ejgH@Cw;)m}e%d<0U)31EP^nelp*(?3^; zx65ySFa;@cfN8hkx?e=u&Qa=QeR}LwND(K137)JsqHc--J72F(rZ%6z319%HuQ(cG z^HO2Yqbj6?djQSoG|=hqy9+U;)emq5(5%qkcM=jvs~_M5(1=a}6+i_NN~0g(1kec2 z|95*V-*rF0382Z`+4m@LCDIcq4Oq>82i4uGyhYlWp&2mmjpa5m7J6DYrNOyU!5KS`&G*r^RWLL7h{nnwILV$T+G6WC=@gHLGB z_k-V2{mi=+5Tb&~ux-sCRSawbCm|+IfG&y?e6(-?%YT#&y=Jff--^IQ5UpusiQl^) z65vBXmt2||KeQ1&_*DK+Mcvk48C0W3{p|ZCSRF{bQiv-+7kI%}sut&ab}IkfVqFFB znxfXFRYt<|@j(p!;W*!;glgyrKCvbNDDZ`XGogC$${D4^Y0$*@1fcoy!k+%Be=QyK zq_w>lKoesV00TdWfuHa%nuK13|Fc>*mU~BKTmn$wiv#_K@$_lbv}@_RK?xCQL1?!a zbrvu`J$Be_jezxh;C+eD-_v451@JG9sJbc4kJ|*xe*-krngG4r*+-#VrLFr9XgLIg zJA244?d6|jS^@IX*+&t~{OOiS0_3f;kHjgYdW~OFnIwSISDeD&^KDO_TF^E0+b)w8 zK`!44ZHqWFf8CbNk}#*x0QQtYKaWfjz%O^&hC5B7bLOv;%oc^ZN*U4h>ZWt%uahiS z1t(qZ+)HHn;PDz5B)bHNaTA1I<=q3wFqw`7&Q6alL4GEB+8HtO*DliwLxd2yJq(z* z_mfN$AnMJKdXO~rR5;s9!&E*SK^z4=ZPKYjP-fhpBr%$^7czjg5`#kR!?|7}@*OKD4hm2I>uHF14*!u}rfJAm)C~8LO4-|_sczN#2tKmQ43XlYj2RwIy zh%u!SBtTz2qzktbwR`vDqP`a{lrbybF%KVtO?C+#FEH~pB}9&qjfcBy$={_eea=h&wb%pX>5?(p6! zCfp~mRRM&6-|jD!@V!x&Pj?{O-t$$@yHwft!XCBng#o&47(FUrHu`+QXI%oz8Bqaf zRxSJ<%ohH95-evz4zR}Q66|4p^B3R*NXE9$`%I=JfW*fuU=ImB!lYjuY16oR&r|@D27+ul zrwy5U;qFB literal 0 HcmV?d00001 diff --git a/src/animals.rs b/src/animals.rs new file mode 100644 index 0000000..2cc34ca --- /dev/null +++ b/src/animals.rs @@ -0,0 +1,19 @@ +use bevy::prelude::*; + +pub struct Plugin; +impl bevy::prelude::Plugin for Plugin { + fn build(&self, app: &mut App) { + + } +} + +#[derive(PartialEq, Eq)] + +pub enum AnimalKind { + Goat +} + +#[derive(Component)] +pub struct Animal { + +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 4e06803..5aead39 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,7 @@ pub mod map; pub mod camera; pub mod ui; pub mod time; +pub mod animals; #[bevy_main] pub fn main() { @@ -17,6 +18,7 @@ pub fn main() { map::Plugin, ui::Plugin, time::Plugin, + animals::Plugin, FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin { filter: Some(vec![FrameTimeDiagnosticsPlugin::FPS]), diff --git a/src/ui.rs b/src/ui.rs index ba017e8..d839bad 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,7 +1,7 @@ use mevy::*; use bevy::{asset::embedded_asset, input::mouse::MouseWheel, math::{NormedVectorSpace, VectorSpace}, picking::{focus::HoverMap, pointer::PointerId}, prelude::*, utils::{dbg, HashMap}, window::PrimaryWindow}; -use crate::map::{self, CellKind, MapMarker}; +use crate::{animals::AnimalKind, map::{self, CellKind, MapMarker}}; // #77767b const TABBAR_COLOR: Color = Color::srgb(119./255., 118./255., 123./255.); @@ -21,6 +21,8 @@ impl bevy::prelude::Plugin for Plugin { embedded_asset!(app, "../assets/ui/disabled_grass.png"); embedded_asset!(app, "../assets/ui/enabled_cross.png"); embedded_asset!(app, "../assets/ui/disabled_cross.png"); + embedded_asset!(app, "../assets/ui/enabled_goat.png"); + embedded_asset!(app, "../assets/ui/disabled_goat.png"); } } @@ -28,7 +30,8 @@ impl bevy::prelude::Plugin for Plugin { pub enum CurrentAction { #[default] None, - ChangeCell(CellKind) + ChangeCell(CellKind), + AddAnimal(AnimalKind) } #[derive(Component, Debug)] @@ -119,12 +122,12 @@ fn setup( if *ca == CurrentAction::ChangeCell(CellKind::Forest) { *ca = CurrentAction::None; bg.get_mut(forest).unwrap().0 = TABBAR_COLOR; - bg.get_mut(grass).unwrap().0 = TABBAR_COLOR; } else { *ca = CurrentAction::ChangeCell(CellKind::Forest); bg.get_mut(forest).unwrap().0 = ENABLED_BUTTON_COLOR; - bg.get_mut(grass).unwrap().0 = TABBAR_COLOR; } + bg.get_mut(grass).unwrap().0 = TABBAR_COLOR; + bg.get_mut(goat).unwrap().0 = TABBAR_COLOR; } }); ] @@ -139,13 +142,34 @@ fn setup( if trigger.button == PointerButton::Primary { if *ca == CurrentAction::ChangeCell(CellKind::Grass) { *ca = CurrentAction::None; - bg.get_mut(forest).unwrap().0 = TABBAR_COLOR; bg.get_mut(grass).unwrap().0 = TABBAR_COLOR; } else { *ca = CurrentAction::ChangeCell(CellKind::Grass); - bg.get_mut(forest).unwrap().0 = TABBAR_COLOR; bg.get_mut(grass).unwrap().0 = ENABLED_BUTTON_COLOR; } + bg.get_mut(forest).unwrap().0 = TABBAR_COLOR; + bg.get_mut(goat).unwrap().0 = TABBAR_COLOR; + } + }); + ] + [goat][ + ImageNode::new(asset_server.load("embedded://forestiles/../assets/ui/enabled_goat.png")); + Node { + // height: 80%, + // margin: [>1vh], + !}; + BackgroundColor(TABBAR_COLOR); + .observe(move |trigger: Trigger>, mut ca: ResMut, mut bg: Query<&mut BackgroundColor>| { + if trigger.button == PointerButton::Primary { + if *ca == CurrentAction::AddAnimal(AnimalKind::Goat) { + *ca = CurrentAction::None; + bg.get_mut(goat).unwrap().0 = TABBAR_COLOR; + } else { + *ca = CurrentAction::AddAnimal(AnimalKind::Goat); + bg.get_mut(goat).unwrap().0 = ENABLED_BUTTON_COLOR; + } + bg.get_mut(forest).unwrap().0 = TABBAR_COLOR; + bg.get_mut(grass).unwrap().0 = TABBAR_COLOR; } }); ]