add goat button

This commit is contained in:
Arkitu 2025-03-01 16:15:51 +01:00
parent 24436a0bf4
commit 74708f8b7b
5 changed files with 51 additions and 6 deletions

BIN
assets/ui/disabled_goat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
assets/ui/enabled_goat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

19
src/animals.rs Normal file
View File

@ -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 {
}

View File

@ -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]),

View File

@ -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<Pointer<Click>>, mut ca: ResMut<CurrentAction>, 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;
}
});
]