Update callback builder

This commit is contained in:
hodasemi 2025-04-11 11:11:59 +02:00
parent 8b7f68232e
commit 0731089afe

View file

@ -1,7 +1,8 @@
use std::any::Any; use std::any::Any;
use crate::gui_handler::gui_handler::GuiHandler;
use anyhow::Result; use anyhow::Result;
use ecs::World; use ecs::Commands;
use super::ControllerButton; use super::ControllerButton;
@ -27,12 +28,12 @@ macro_rules! callbacks {
}; };
} }
callbacks!(ClickCallbacks, Fn(&mut World) -> Result<()> + Send + Sync); callbacks!(ClickCallbacks, Fn(&mut Commands, &mut GuiHandler) -> Result<()> + Send + Sync);
callbacks!(SelectCallbacks, Fn(&mut World, bool) -> anyhow::Result<()> + Send + Sync); callbacks!(SelectCallbacks, Fn(&mut Commands, &mut GuiHandler, bool) -> anyhow::Result<()> + Send + Sync);
callbacks!(CustomCallbacks, Fn(&mut World, ControllerButton) -> anyhow::Result<bool> + Send + Sync); callbacks!(CustomCallbacks, Fn(&mut Commands, &mut GuiHandler, ControllerButton) -> anyhow::Result<bool> + Send + Sync);
callbacks!( callbacks!(
VecCallbacks, VecCallbacks,
Fn(&mut World, &dyn Any) -> Result<()> + Send + Sync Fn(&mut Commands, &mut GuiHandler, &dyn Any) -> Result<()> + Send + Sync
); );
#[cfg(test)] #[cfg(test)]
@ -40,8 +41,8 @@ mod test {
use super::*; use super::*;
use anyhow::Result; use anyhow::Result;
fn normal_fn() -> impl Fn(&mut World) -> Result<()> + Send + Sync { fn normal_fn() -> impl Fn(&mut Commands, &mut GuiHandler) -> Result<()> + Send + Sync {
|_| Ok(()) |_, _| Ok(())
} }
#[test] #[test]
@ -51,7 +52,10 @@ mod test {
impl Test { impl Test {
fn set_click_callbacks( fn set_click_callbacks(
&self, &self,
_callbacks: Vec<(&str, Box<dyn Fn(&mut World) -> Result<()> + Send + Sync>)>, _callbacks: Vec<(
&str,
Box<dyn Fn(&mut Commands, &mut GuiHandler) -> Result<()> + Send + Sync>,
)>,
) -> Result<()> { ) -> Result<()> {
Ok(()) Ok(())
} }