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