diff --git a/src/builder/builder.rs b/src/builder/builder.rs index 8cb20e4..3041e9a 100644 --- a/src/builder/builder.rs +++ b/src/builder/builder.rs @@ -2,6 +2,7 @@ use crate::prelude::*; use anyhow::{Context, Result, bail}; use assetpath::AssetPath; +use ecs::World; use super::validator::buttoninfo::{NeighbourDirection, NeighbourInfo}; use super::validator::gridinfo::GridInfo; @@ -178,10 +179,7 @@ impl GuiBuilder { impl Functionality for GuiBuilder { fn set_click_callbacks( &self, - functions: Vec<( - &str, - Box Result<()> + Send + Sync>, - )>, + functions: Vec<(&str, Box Result<()> + Send + Sync>)>, ) -> Result<()> { for (function_name, callback) in functions { let suffix_less_function_name = handle_function_suffix(function_name); @@ -195,14 +193,20 @@ impl Functionality for GuiBuilder { fn set_vec_callbacks( &self, - _functions: Vec<(&str, Box Result<()> + Send + Sync>)>, + _functions: Vec<( + &str, + Box Result<()> + Send + Sync>, + )>, ) -> Result<()> { Ok(()) } fn set_select_callbacks( &self, - callbacks: Vec<(&str, Box>)>, + callbacks: Vec<( + &str, + Box Result<()> + Send + Sync>, + )>, ) -> Result<()> { for (function_name, callback) in callbacks { let suffix_less_function_name = handle_function_suffix(function_name); @@ -216,7 +220,10 @@ impl Functionality for GuiBuilder { fn set_custom_callbacks( &self, - callbacks: Vec<(&str, Box>)>, + callbacks: Vec<( + &str, + Box Result + Send + Sync>, + )>, ) -> Result<()> { for (function_name, callback) in callbacks { let suffix_less_function_name = handle_function_suffix(function_name); @@ -262,7 +269,7 @@ impl GuiElementTraits for GuiBuilder { } impl TopGui for GuiBuilder { - fn decline(&self, _gui_handler: &mut GuiHandler) -> Result<()> { + fn decline(&self, _world: &mut World) -> Result<()> { if let Some(decline_callback) = self.decline_callback.read().unwrap().as_ref() { decline_callback()?; } @@ -270,11 +277,11 @@ impl TopGui for GuiBuilder { Ok(()) } - fn next_tab(&self, _gui_handler: &mut GuiHandler, _: bool) -> Result<()> { + fn next_tab(&self, _world: &mut World, _: bool) -> Result<()> { Ok(()) } - fn previous_tab(&self, _gui_handler: &mut GuiHandler, _: bool) -> Result<()> { + fn previous_tab(&self, _world: &mut World, _: bool) -> Result<()> { Ok(()) } } diff --git a/src/builder/snippet.rs b/src/builder/snippet.rs index 720f37c..d8436e3 100644 --- a/src/builder/snippet.rs +++ b/src/builder/snippet.rs @@ -1,6 +1,7 @@ use std::{any::Any, collections::HashMap, sync::Arc}; use assetpath::AssetPath; +use ecs::World; use super::validator::{ buttoninfo::NeighbourInfo, @@ -147,10 +148,7 @@ impl Gridable for GuiSnippet { impl Functionality for GuiSnippet { fn set_click_callbacks( &self, - functions: Vec<( - &str, - Box Result<()> + Send + Sync>, - )>, + functions: Vec<(&str, Box Result<()> + Send + Sync>)>, ) -> Result<()> { for (function_name, callback) in functions { let suffix_less_function_name = handle_function_suffix(function_name); @@ -164,14 +162,20 @@ impl Functionality for GuiSnippet { fn set_vec_callbacks( &self, - _functions: Vec<(&str, Box Result<()> + Send + Sync>)>, + _functions: Vec<( + &str, + Box Result<()> + Send + Sync>, + )>, ) -> Result<()> { Ok(()) } fn set_select_callbacks( &self, - callbacks: Vec<(&str, Box>)>, + callbacks: Vec<( + &str, + Box Result<()> + Send + Sync>, + )>, ) -> Result<()> { for (function_name, callback) in callbacks { let suffix_less_function_name = handle_function_suffix(function_name); @@ -185,7 +189,10 @@ impl Functionality for GuiSnippet { fn set_custom_callbacks( &self, - callbacks: Vec<(&str, Box>)>, + callbacks: Vec<( + &str, + Box Result + Send + Sync>, + )>, ) -> Result<()> { for (function_name, callback) in callbacks { let suffix_less_function_name = handle_function_suffix(function_name); diff --git a/src/elements/button.rs b/src/elements/button.rs index 1c315ff..156f87a 100644 --- a/src/elements/button.rs +++ b/src/elements/button.rs @@ -5,6 +5,7 @@ use crate::{ use anyhow::{Result, anyhow}; use assetpath::AssetPath; +use ecs::World; use utilities::prelude::*; use vulkan_rs::prelude::*; @@ -314,23 +315,23 @@ impl Button { pub fn set_callback(&self, callback: F) where - F: Fn(&mut GuiHandler) -> Result<()> + Send + Sync + 'static, + F: Fn(&mut World) -> Result<()> + Send + Sync + 'static, { self.click_executable - .set_callback(move |gui_handler: &mut GuiHandler, _: ()| callback(gui_handler)); + .set_callback(move |world: &mut World, _: ()| callback(world)); } pub fn set_select_callback(&self, callback: F) where - F: Fn(bool) -> Result<()> + Send + Sync + 'static, + F: Fn(&mut World, bool) -> Result<()> + Send + Sync + 'static, { self.on_select_executable - .set_callback(move |_: &mut GuiHandler, select: bool| callback(select)); + .set_callback(move |world: &mut World, select: bool| callback(world, select)); } pub fn set_custom_callback(&self, callback: F) where - F: Fn(ControllerButton) -> Result + Send + Sync + 'static, + F: Fn(&mut World, ControllerButton) -> Result + Send + Sync + 'static, { self.selectable.set_custom_callback(callback); } @@ -578,8 +579,10 @@ impl Button { fn create_selected_changed_callback(button: Arc