use wasmer::{Exports, Store}; use crate::defines::LevelInt; use crate::script_implementations::wasm::export_registry::register_func_with_env; 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 moves; mod species; pub(crate) fn register(exports: &mut Exports, store: &Store, env: WebAssemblyEnv) { register_func_with_env!(exports, store, static_data_get_move_library, env); register_func_with_env!(exports, store, static_data_get_species_library, env); register_func_with_env!(exports, store, static_data_get_item_library, env); register_func_with_env!(exports, store, static_data_get_type_library, env); register_func_with_env!(exports, store, static_data_get_library_settings, env); register_func_with_env!(exports, store, library_settings_get_maximum_level, env); moves::register(exports, store, env.clone()); species::register(exports, store, env.clone()); } 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() }