aboutsummaryrefslogtreecommitdiff
path: root/src/map/icon.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/icon.rs')
-rw-r--r--src/map/icon.rs28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/map/icon.rs b/src/map/icon.rs
index 50e1906..f623c98 100644
--- a/src/map/icon.rs
+++ b/src/map/icon.rs
@@ -1,9 +1,9 @@
use super::icon_renderer::IconRenderer;
+use crate::colours::DEFAULT_COLOURS;
use crate::map::Mappable;
-use crate::math::{Vec2, Rect};
+use crate::math::{Rect, Vec2};
use crate::transform::Transform;
use raylib::core::drawing::{RaylibDraw, RaylibDrawHandle};
-use raylib::ffi::Color;
use serde::{Deserialize, Serialize};
use std::ops::{Deref, DerefMut};
use std::rc::Rc;
@@ -21,6 +21,7 @@ pub struct IconData {
#[derive(Clone)]
pub struct Icon {
data: IconData,
+ selected: bool,
renderer: Rc<IconRenderer>,
}
@@ -37,7 +38,11 @@ impl Icon {
}
pub fn from_data(data: IconData, renderer: Rc<IconRenderer>) -> Self {
- Self { data, renderer }
+ Self {
+ data,
+ selected: false,
+ renderer,
+ }
}
}
@@ -54,15 +59,22 @@ impl Mappable for Icon {
position_px,
self.rotation as f32,
(transform.pixels_per_m() / info.pixels_per_m) as f32,
- Color {
- r: 255,
- g: 255,
- b: 255,
- a: 255,
+ if self.selected() {
+ DEFAULT_COLOURS.icon_selected
+ } else {
+ DEFAULT_COLOURS.icon_normal
},
);
}
+ fn set_selected(&mut self, selected: bool) {
+ self.selected = selected;
+ }
+
+ fn selected(&self) -> bool {
+ self.selected
+ }
+
fn bounding_rect(&self) -> Rect<f64> {
Rect::new(self.data.position.x, self.data.position.y, 0., 0.)
}