use crate::dynamic_data::{Pokemon, PokemonParty}; use crate::script_implementations::wasm::export_registry::register; use crate::script_implementations::wasm::export_registry::wasm_result::{get_value_arc, wasm_ok, WasmResult}; use crate::script_implementations::wasm::extern_ref::ExternRef; use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; use wasmer::FunctionEnvMut; register! { fn party_get_pokemon( env: FunctionEnvMut, party: ExternRef, index: u32 ) -> WasmResult> { let party = get_value_arc!(party, env); let x = wasm_ok( if let Some(Some(v)) = &party.pokemon().get(index as usize) { ExternRef::func_new(&env, v.into()) } else { ExternRef::null() }); x } fn party_get_length( env: FunctionEnvMut, party: ExternRef, ) -> WasmResult { let party = get_value_arc!(party, env); wasm_ok(party.length() as u32) } }