pub mod deletion_tool; pub mod icon_tool; pub mod room_tool; pub mod wall_tool; pub use deletion_tool::DeletionTool; pub use icon_tool::IconTool; pub use room_tool::RoomTool; pub use wall_tool::WallTool; use crate::button::Button; use crate::map_data::MapData; use crate::transform::Transform; use raylib::core::drawing::RaylibDrawHandle; use raylib::RaylibHandle; #[derive(Debug)] #[repr(u8)] pub enum ToolType { RoomTool, WallTool, IconTool, DeletionTool, NumTools, } pub trait Tool { fn activate(&mut self) {} fn deactivate(&mut self) {} fn update(&mut self, _map: &MapData, _rl: &RaylibHandle, _transform: &Transform) {} fn active_update(&mut self, map: &mut MapData, rl: &RaylibHandle, transform: &Transform); fn draw(&self, _map: &MapData, _rld: &mut RaylibDrawHandle, _transform: &Transform) {} fn activation_key(&self) -> Button; }