use crate::context::Context;
#[macro_export]
macro_rules! create_script {
($struct_name:ident { $($field:ident: $value:expr),* $(,)? }) => {
#[unsafe(no_mangle)]
pub extern "Rust" fn create_script() -> Box<dyn Script> {
Box::new($struct_name {
$($field: $value),*
})
}
};
}
pub trait Script: Send {
fn init(&mut self, ctx: &dyn Context) {
ctx.log("Script Init");
}
fn ready(&mut self, ctx: &dyn Context) {
ctx.log("Script Ready");
}
fn update(&mut self, ctx: &dyn Context, delta: f32) {
ctx.log("Script Update");
println!("{}",delta);
}
fn event(&mut self, ctx: &dyn Context, event: crate::Event) {
ctx.log("Script Event");
}
}