use wasmer::{FunctionEnv, FunctionEnvMut, Imports, StoreMut}; use crate::defines::LevelInt; 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::{ItemLibrary, LibrarySettings, MoveLibrary, SpeciesLibrary, StaticData, TypeLibrary}; mod item; /// Moves data registration mod moves; /// Species data registration mod species; register! { fn static_data_get_move_library(env: FunctionEnvMut, data_library: ExternRef) -> ExternRef { ExternRef::func_new(&env, data_library.value_func(&env).unwrap().moves()) } fn static_data_get_species_library( env: FunctionEnvMut, data_library: ExternRef, ) -> ExternRef { ExternRef::func_new(&env, data_library.value_func(&env).unwrap().species()) } fn static_data_get_item_library(env: FunctionEnvMut, data_library: ExternRef) -> ExternRef { ExternRef::func_new(&env, data_library.value_func(&env).unwrap().items()) } fn static_data_get_type_library(env: FunctionEnvMut, data_library: ExternRef) -> ExternRef { ExternRef::func_new(&env, data_library.value_func(&env).unwrap().types()) } fn static_data_get_library_settings( env: FunctionEnvMut, data_library: ExternRef, ) -> ExternRef { ExternRef::func_new(&env, data_library.value_func(&env).unwrap().settings()) } fn library_settings_get_maximum_level(env: FunctionEnvMut, data_library: ExternRef) -> LevelInt { data_library.value_func(&env).unwrap().maximum_level() } manual manual_registration } /// Additional required manual registration. fn manual_registration(imports: &mut Imports, store: &mut StoreMut, env: &FunctionEnv) { moves::register(imports, store, env); species::register(imports, store, env); item::register(imports, store, env); }