53 lines
2.3 KiB
Rust
53 lines
2.3 KiB
Rust
|
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<StaticData>) -> ExternRef<MoveLibrary> {
|
||
|
ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().moves())
|
||
|
}
|
||
|
|
||
|
fn static_data_get_species_library(
|
||
|
env: &WebAssemblyEnv,
|
||
|
data_library: ExternRef<StaticData>,
|
||
|
) -> ExternRef<SpeciesLibrary> {
|
||
|
ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().species())
|
||
|
}
|
||
|
|
||
|
fn static_data_get_item_library(env: &WebAssemblyEnv, data_library: ExternRef<StaticData>) -> ExternRef<ItemLibrary> {
|
||
|
ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().items())
|
||
|
}
|
||
|
|
||
|
fn static_data_get_type_library(env: &WebAssemblyEnv, data_library: ExternRef<StaticData>) -> ExternRef<TypeLibrary> {
|
||
|
ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().types())
|
||
|
}
|
||
|
|
||
|
fn static_data_get_library_settings(
|
||
|
env: &WebAssemblyEnv,
|
||
|
data_library: ExternRef<StaticData>,
|
||
|
) -> ExternRef<LibrarySettings> {
|
||
|
ExternRef::new(env.data().as_ref(), data_library.value(env).unwrap().settings())
|
||
|
}
|
||
|
|
||
|
fn library_settings_get_maximum_level(env: &WebAssemblyEnv, data_library: ExternRef<LibrarySettings>) -> LevelInt {
|
||
|
data_library.value(env).unwrap().maximum_level()
|
||
|
}
|