83 lines
2.2 KiB
Rust
Executable File
83 lines
2.2 KiB
Rust
Executable File
use crate::dynamic_data::HitData;
|
|
use crate::script_implementations::wasm::export_registry::register;
|
|
use crate::script_implementations::wasm::extern_ref::ExternRef;
|
|
use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv;
|
|
use wasmer::FunctionEnvMut;
|
|
|
|
register! {
|
|
fn hit_data_get_damage(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) -> u32 {
|
|
hit.value_func(&env).unwrap().damage()
|
|
}
|
|
|
|
fn hit_data_is_critical(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) -> u8 {
|
|
u8::from(hit.value_func(&env).unwrap().is_critical())
|
|
}
|
|
|
|
fn hit_data_fail(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) {
|
|
hit.value_func(&env).unwrap().fail()
|
|
}
|
|
|
|
fn hit_data_get_base_power(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) -> u8 {
|
|
hit.value_func(&env).unwrap().base_power()
|
|
}
|
|
|
|
fn hit_data_get_effectiveness(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) -> f32 {
|
|
hit.value_func(&env).unwrap().effectiveness()
|
|
}
|
|
|
|
fn hit_data_get_move_type(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
) -> u8 {
|
|
hit.value_func(&env).unwrap().move_type().into()
|
|
}
|
|
|
|
fn hit_data_set_critical(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
value: u8
|
|
) {
|
|
hit.value_func(&env).unwrap().set_critical(value == 1)
|
|
}
|
|
|
|
fn hit_data_set_effectiveness(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
effectiveness: f32
|
|
) {
|
|
hit.value_func(&env).unwrap().set_effectiveness(effectiveness)
|
|
}
|
|
|
|
fn hit_data_set_damage(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
damage: u32
|
|
) {
|
|
hit.value_func(&env).unwrap().set_damage(damage)
|
|
}
|
|
|
|
fn hit_data_set_move_type(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
hit: ExternRef<HitData>,
|
|
move_type: u8
|
|
) {
|
|
hit.value_func(&env).unwrap().set_move_type(move_type.into())
|
|
}
|
|
|
|
}
|