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

36 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;
use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv;
use crate::static_data::TypeLibrary;
use crate::StringKey;
register! {
fn type_library_get_type_by_name(
env: FunctionEnvMut<WebAssemblyEnv>,
lib: ExternRef<dyn TypeLibrary>,
name: ExternRef<StringKey>
) -> u8 {
let lib = lib.value_func_arc(&env).unwrap();
let name = name.value_func(&env).unwrap();
let type_id = lib.get_type_id(name);
if let Some(type_id) = type_id {
type_id.into()
} else {
0
}
}
fn type_library_get_single_effectiveness(
env: FunctionEnvMut<WebAssemblyEnv>,
lib: ExternRef<dyn TypeLibrary>,
attacking: u8,
defending: u8
) -> f32 {
let lib = lib.value_func_arc(&env).unwrap();
lib.get_single_effectiveness(attacking.into(), defending.into()).unwrap()
}
}