31 lines
1.0 KiB
Rust
Executable File
31 lines
1.0 KiB
Rust
Executable File
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<WebAssemblyEnv>,
|
|
party: ExternRef<PokemonParty>,
|
|
index: u32
|
|
) -> WasmResult<ExternRef<Pokemon>> {
|
|
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<WebAssemblyEnv>,
|
|
party: ExternRef<PokemonParty>,
|
|
) -> WasmResult<u32> {
|
|
let party = get_value_arc!(party, env);
|
|
wasm_ok(party.length() as u32)
|
|
}
|
|
}
|