use wasmer::{Exports, Store}; 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}; /// Moves data registration mod moves; /// Species data registration mod species; register! { fn static_data_get_move_library(env: &WebAssemblyEnv, data_library: ExternRef) -> ExternRef { ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().moves()) } fn static_data_get_species_library( env: &WebAssemblyEnv, data_library: ExternRef, ) -> ExternRef { ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().species()) } fn static_data_get_item_library(env: &WebAssemblyEnv, data_library: ExternRef) -> ExternRef { ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().items()) } fn static_data_get_type_library(env: &WebAssemblyEnv, data_library: ExternRef) -> ExternRef { ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().types()) } fn static_data_get_library_settings( env: &WebAssemblyEnv, data_library: ExternRef, ) -> ExternRef { ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().settings()) } fn library_settings_get_maximum_level(env: &WebAssemblyEnv, data_library: ExternRef) -> LevelInt { data_library.value(env).unwrap().maximum_level() } manual manual_registration } /// Additional required manual registration. fn manual_registration(exports: &mut Exports, store: &Store, env: WebAssemblyEnv) { moves::register(exports, store, env.clone()); species::register(exports, store, env); }