43 lines
1.3 KiB
Rust
Executable File
43 lines
1.3 KiB
Rust
Executable File
use std::intrinsics::transmute;
|
|
|
|
use crate::dynamic_data::LearnedMove;
|
|
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::MoveData;
|
|
use wasmer::FunctionEnvMut;
|
|
|
|
register! {
|
|
fn learned_move_get_learn_method(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
turn_choice: ExternRef<LearnedMove>,
|
|
) -> u8 {
|
|
unsafe {
|
|
transmute(turn_choice.value_func(&env).unwrap().learn_method())
|
|
}
|
|
}
|
|
|
|
fn learned_move_get_move_data(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
turn_choice: ExternRef<LearnedMove>,
|
|
) -> ExternRef<dyn MoveData> {
|
|
ExternRef::func_new(&env, turn_choice.value_func(&env).unwrap().move_data())
|
|
}
|
|
|
|
fn learned_move_restore_all_uses(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
turn_choice: ExternRef<LearnedMove>,
|
|
) {
|
|
turn_choice.value_func(&env).unwrap().restore_all_uses();
|
|
}
|
|
|
|
fn learned_move_restore_uses(
|
|
env: FunctionEnvMut<WebAssemblyEnv>,
|
|
turn_choice: ExternRef<LearnedMove>,
|
|
amount: u8,
|
|
) {
|
|
turn_choice.value_func(&env).unwrap().restore_uses(amount);
|
|
}
|
|
|
|
}
|