35 lines
1.1 KiB
Rust
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())
|
|
}
|
|
|
|
}
|