diff options
Diffstat (limited to 'src/tool/icon_tool.rs')
| -rw-r--r-- | src/tool/icon_tool.rs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/src/tool/icon_tool.rs b/src/tool/icon_tool.rs deleted file mode 100644 index 8b4afc0..0000000 --- a/src/tool/icon_tool.rs +++ /dev/null @@ -1,76 +0,0 @@ -//! Tool for creating icons. For explanation of icons, please see -//! [the icon module](crate::map::icon). - -use crate::config::IconToolBinds; -use crate::input::Input; -use crate::map::icon_renderer::IconRenderer; -use crate::map::{Icon, Map, Mappable}; -use crate::math::Vec2; -use crate::tool::Tool; -use crate::transform::Transform; -use raylib::core::drawing::RaylibDrawHandle; -use std::rc::Rc; - -/// The icon tool itself. -pub struct IconTool { - keybindings: IconToolBinds, - /// Saves whether the IconTool is the currently active tool or not. - active: bool, - /// The information of the icon that should be placed / is currently being placed, if it - /// exists. - current_icon: Icon, - renderer: Rc<IconRenderer>, -} - -impl IconTool { - /// Create a new icon tool that renders icons with the provided icon renderer. There should only - /// be one instance of the tool for the program, which should be created in the editor. - pub fn new(keybindings: IconToolBinds, renderer: Rc<IconRenderer>) -> Self { - Self { - keybindings, - active: false, - current_icon: Icon::new(0, Vec2::default(), 0., renderer.clone()), - renderer, - } - } -} - -impl Tool for IconTool { - fn activate(&mut self) { - self.active = true; - } - - fn deactivate(&mut self) { - self.active = false; - } - - fn update(&mut self, _map: &Map, mouse_pos_m: &Vec2<f64>) { - self.current_icon.position = *mouse_pos_m; - } - - fn draw(&self, rld: &mut RaylibDrawHandle, transform: &Transform) { - if self.active { - self.current_icon.draw(rld, transform); - } - } - - fn place_single(&mut self, map: &mut Map, _mouse_pos_m: &Vec2<f64>) { - map.push_icon(self.current_icon.clone()); - } - - fn handle_custom_bindings(&mut self, _map: &mut Map, input: &mut Input) { - if input.poll_global(&self.keybindings.next) { - self.current_icon.id = (self.current_icon.id + 1) % self.renderer.num_icons(); - } - if input.poll_global(&self.keybindings.previous) { - self.current_icon.id = - (self.current_icon.id + self.renderer.num_icons() - 1) % self.renderer.num_icons(); - } - if input.poll_global(&self.keybindings.rotate_clockwise) { - self.current_icon.rotation += 45.; - } - if input.poll_global(&self.keybindings.rotate_counterclockwise) { - self.current_icon.rotation -= 45.; - } - } -} |
