use crate::dynamic_data::HitData; use crate::script_implementations::wasm::export_registry::wasm_result::{ get_value_arc, get_value_arc_void, wasm_ok, WasmVoidResultExtension, }; use crate::script_implementations::wasm::export_registry::{register, WasmResult, WasmVoidResult}; 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, hit: ExternRef, ) -> WasmResult { let hit = get_value_arc!(hit, env); wasm_ok(hit.damage()) } fn hit_data_is_critical( env: FunctionEnvMut, hit: ExternRef, ) -> WasmResult { let hit = get_value_arc!(hit, env); wasm_ok(u8::from(hit.is_critical())) } fn hit_data_fail( env: FunctionEnvMut, hit: ExternRef, ) -> WasmVoidResult { let hit = get_value_arc_void!(hit, env); hit.fail(); WasmVoidResult::ok() } fn hit_data_get_base_power( env: FunctionEnvMut, hit: ExternRef, ) -> WasmResult { let hit = get_value_arc!(hit, env); wasm_ok(hit.base_power()) } fn hit_data_get_effectiveness( env: FunctionEnvMut, hit: ExternRef, ) -> WasmResult { let hit = get_value_arc!(hit, env); wasm_ok(hit.effectiveness()) } fn hit_data_get_move_type( env: FunctionEnvMut, hit: ExternRef, ) -> WasmResult { let hit = get_value_arc!(hit, env); wasm_ok(hit.move_type().into()) } fn hit_data_set_critical( env: FunctionEnvMut, hit: ExternRef, value: u8 ) -> WasmVoidResult { let hit = get_value_arc_void!(hit, env); hit.set_critical(value == 1); WasmVoidResult::ok() } fn hit_data_set_effectiveness( env: FunctionEnvMut, hit: ExternRef, effectiveness: f32 ) -> WasmVoidResult { let hit = get_value_arc_void!(hit, env); hit.set_effectiveness(effectiveness); WasmVoidResult::ok() } fn hit_data_set_damage( env: FunctionEnvMut, hit: ExternRef, damage: u32 ) -> WasmVoidResult { let hit = get_value_arc_void!(hit, env); hit.set_damage(damage); WasmVoidResult::ok() } fn hit_data_set_move_type( env: FunctionEnvMut, hit: ExternRef, move_type: u8 ) -> WasmVoidResult { let hit = get_value_arc_void!(hit, env); hit.set_move_type(move_type.into()); WasmVoidResult::ok() } }