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::{DataLibrary, Species, SpeciesLibrary}; use crate::StringKey; use wasmer::FunctionEnvMut; register! { fn species_library_get_species( env: FunctionEnvMut, lib: ExternRef, string_key: ExternRef, ) -> ExternRef { let lib = lib.value_func(&env).unwrap(); let m = lib.get(string_key.value_func(&env).unwrap()); if let Some(v) = m { ExternRef::func_new(&env, v) } else { ExternRef::null() } } fn species_get_capture_rate( env: FunctionEnvMut, species: ExternRef, ) -> u8 { species.value_func(&env).unwrap().capture_rate() } fn species_get_growth_rate( env: FunctionEnvMut, species: ExternRef, ) -> ExternRef { let species = species.value_func(&env).unwrap(); ExternRef::func_new(&env, species.growth_rate()) } fn species_get_gender_rate( env: FunctionEnvMut, species: ExternRef, ) -> f32 { species.value_func(&env).unwrap().gender_rate() } fn species_get_name( env: FunctionEnvMut, species: ExternRef, ) -> ExternRef { let species = species.value_func(&env).unwrap(); ExternRef::func_new(&env, species.name()) } fn species_get_id( env: FunctionEnvMut, species: ExternRef, ) -> u16 { species.value_func(&env).unwrap().id() } }