39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use crate::script_implementations::wasm::export_registry::register;
|
|
use crate::script_implementations::wasm::extern_ref::ExternRef;
|
|
use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv;
|
|
use crate::static_data::Item;
|
|
use crate::StringKey;
|
|
use std::mem::transmute;
|
|
use wasmer::FunctionEnvMut;
|
|
|
|
register! {
|
|
fn item_get_price(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
item: ExternRef<Item>,
|
|
) -> i32 {
|
|
item.value_func(&env).unwrap().price()
|
|
}
|
|
|
|
fn item_get_name(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
item: ExternRef<Item>,
|
|
) -> ExternRef<StringKey> {
|
|
ExternRef::func_new(&env, item.value_func(&env).unwrap().name())
|
|
}
|
|
|
|
fn item_get_category(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
item: ExternRef<Item>,
|
|
) -> u8 {
|
|
unsafe { transmute(item.value_func(&env).unwrap().category()) }
|
|
|
|
}
|
|
|
|
fn item_get_battle_category(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
item: ExternRef<Item>,
|
|
) -> u8 {
|
|
unsafe { transmute(item.value_func(&env).unwrap().battle_category()) }
|
|
}
|
|
}
|