PkmnLib_rs/src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs

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())
}
}