PkmnLib_rs/src/script_implementations/wasm/export_registry/static_data/ability.rs

35 lines
1.1 KiB
Rust

use crate::script_implementations::wasm::export_registry::register;
use crate::script_implementations::wasm::export_registry::FunctionEnvMut;
use crate::script_implementations::wasm::extern_ref::{ExternRef, VecExternRef};
use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv;
use crate::static_data::{Ability, EffectParameter};
use crate::StringKey;
register! {
fn ability_get_name(
env: FunctionEnvMut<WebAssemblyEnv>,
ability: ExternRef<dyn Ability>
) -> ExternRef<StringKey> {
let ability = ability.value_func_arc(&env).unwrap();
ExternRef::func_new(&env, ability.name())
}
fn ability_get_effect(
env: FunctionEnvMut<WebAssemblyEnv>,
ability: ExternRef<dyn Ability>
) -> ExternRef<StringKey> {
let ability = ability.value_func_arc(&env).unwrap();
ExternRef::func_new(&env, ability.effect())
}
fn ability_get_parameters(
env: FunctionEnvMut<WebAssemblyEnv>,
ability: ExternRef<dyn Ability>
) -> VecExternRef<EffectParameter> {
let ability = ability.value_func_arc(&env).unwrap();
VecExternRef::new(env.data().data().as_ref(), ability.parameters())
}
}