diff options
Diffstat (limited to 'src/tool/mod.rs')
| -rw-r--r-- | src/tool/mod.rs | 52 |
1 files changed, 4 insertions, 48 deletions
diff --git a/src/tool/mod.rs b/src/tool/mod.rs index da95c61..73654d9 100644 --- a/src/tool/mod.rs +++ b/src/tool/mod.rs @@ -6,9 +6,9 @@ pub use deletion_tool::DeletionTool; pub use room_tool::RoomTool; pub use wall_tool::WallTool; +use crate::map_data::MapData; use crate::transform::Transform; use raylib::core::drawing::RaylibDrawHandle; -use raylib::ffi::KeyboardKey; use raylib::RaylibHandle; #[derive(Debug)] @@ -21,52 +21,8 @@ pub enum ToolType { } pub trait Tool { - fn update(&mut self, rl: &RaylibHandle, transform: &Transform) {} - fn active_update(&mut self, rl: &RaylibHandle, transform: &Transform); + 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, _rld: &mut RaylibDrawHandle, _transform: &Transform) {} -} - -pub struct ToolShed { - tools: Vec<Box<dyn Tool>>, - active: usize, -} - -impl ToolShed { - pub fn new() -> Self { - let mut tools: Vec<Box<dyn Tool>> = Vec::with_capacity(ToolType::NumTools as usize); - assert_eq!(ToolType::RoomTool as u8, 0); - tools.push(Box::new(RoomTool::new())); - assert_eq!(ToolType::WallTool as u8, 1); - tools.push(Box::new(WallTool::new())); - assert_eq!(ToolType::DeletionTool as u8, 2); - tools.push(Box::new(DeletionTool::new())); - - assert_eq!(ToolType::NumTools as usize, tools.len()); - - Self { tools, active: 0 } - } - - pub fn update(&mut self, rl: &RaylibHandle, transform: &Transform) { - // Handle keybindings for tool change - self.active = if rl.is_key_pressed(KeyboardKey::KEY_R) { - ToolType::RoomTool as usize - } else if rl.is_key_pressed(KeyboardKey::KEY_W) { - ToolType::WallTool as usize - } else { - self.active - }; - - for tool in &mut self.tools { - tool.update(rl, transform); - } - - self.tools[self.active].active_update(rl, transform); - } - - pub fn draw_tools(&self, rld: &mut RaylibDrawHandle, transform: &Transform) { - for tool in &self.tools { - tool.draw(rld, transform); - } - } + fn draw(&self, _map: &MapData, _rld: &mut RaylibDrawHandle, _transform: &Transform) {} } |
