PkmnLib_rs/src/script_implementations/wasm/export_registry/static_data/mod.rs

55 lines
2.2 KiB
Rust
Raw Normal View History

2022-08-27 12:14:58 +00:00
use wasmer::{FunctionEnv, FunctionEnvMut, Imports, StoreMut};
2022-08-20 10:22:12 +00:00
use crate::defines::LevelInt;
use crate::script_implementations::wasm::export_registry::register;
2022-08-20 10:22:12 +00:00
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
2022-08-20 10:22:12 +00:00
mod moves;
/// Species data registration
2022-08-20 10:22:12 +00:00
mod species;
register! {
2022-08-27 12:14:58 +00:00
fn static_data_get_move_library(env: FunctionEnvMut<WebAssemblyEnv>, data_library: ExternRef<StaticData>) -> ExternRef<MoveLibrary> {
2022-08-27 16:04:56 +00:00
ExternRef::func_new(&env, data_library.value_func(&env).unwrap().moves())
}
fn static_data_get_species_library(
2022-08-27 12:14:58 +00:00
env: FunctionEnvMut<WebAssemblyEnv>,
data_library: ExternRef<StaticData>,
) -> ExternRef<SpeciesLibrary> {
2022-08-27 16:04:56 +00:00
ExternRef::func_new(&env, data_library.value_func(&env).unwrap().species())
}
2022-08-27 12:14:58 +00:00
fn static_data_get_item_library(env: FunctionEnvMut<WebAssemblyEnv>, data_library: ExternRef<StaticData>) -> ExternRef<ItemLibrary> {
2022-08-27 16:04:56 +00:00
ExternRef::func_new(&env, data_library.value_func(&env).unwrap().items())
}
2022-08-27 12:14:58 +00:00
fn static_data_get_type_library(env: FunctionEnvMut<WebAssemblyEnv>, data_library: ExternRef<StaticData>) -> ExternRef<TypeLibrary> {
2022-08-27 16:04:56 +00:00
ExternRef::func_new(&env, data_library.value_func(&env).unwrap().types())
}
fn static_data_get_library_settings(
2022-08-27 12:14:58 +00:00
env: FunctionEnvMut<WebAssemblyEnv>,
data_library: ExternRef<StaticData>,
) -> ExternRef<LibrarySettings> {
2022-08-27 16:04:56 +00:00
ExternRef::func_new(&env, data_library.value_func(&env).unwrap().settings())
}
2022-08-27 12:14:58 +00:00
fn library_settings_get_maximum_level(env: FunctionEnvMut<WebAssemblyEnv>, data_library: ExternRef<LibrarySettings>) -> LevelInt {
2022-08-27 16:04:56 +00:00
data_library.value_func(&env).unwrap().maximum_level()
}
manual manual_registration
2022-08-20 10:22:12 +00:00
}
/// Additional required manual registration.
2022-08-27 12:14:58 +00:00
fn manual_registration(imports: &mut Imports, store: &mut StoreMut, env: &FunctionEnv<WebAssemblyEnv>) {
moves::register(imports, store, env);
species::register(imports, store, env);
item::register(imports, store, env);
2022-08-20 10:22:12 +00:00
}