#include "WASMSpeciesRegistry.hpp" #include "../../../../Battling/Library/BattleLibrary.hpp" #include "../../WebAssemblyScriptResolver.hpp" #include "../WASMHelperFile.hpp" #include "wasm.h" using namespace CreatureLib::Library; using namespace PkmnLib::Library; wasm_func_t* Species_HasFormeByHash(WebAssemblyScriptResolver* resolver) { return WasmHelpers::CreateFunc( resolver, {[](WebAssemblyScriptResolver*, const CreatureSpecies* species, u32 flag) -> bool { return species->HasVariant(flag); }}); } wasm_func_t* Species_GetFormeByHash(WebAssemblyScriptResolver* resolver) { return WasmHelpers::CreateFunc( resolver, {[](WebAssemblyScriptResolver*, const CreatureSpecies* species, u32 variant) -> const SpeciesVariant* { auto opt = species->TryGetVariant(variant); return opt.has_value() ? opt.value() : nullptr; }}); } wasm_func_t* Species_HasFlagByHash(WebAssemblyScriptResolver* resolver) { return WasmHelpers::CreateFunc( resolver, {[](WebAssemblyScriptResolver*, const CreatureSpecies* species, u32 flag) -> bool { return species->HasFlag(flag); }}); } wasm_func_t* Species_HasEggGroupByHash(WebAssemblyScriptResolver* resolver) { return WasmHelpers::CreateFunc( resolver, {[](WebAssemblyScriptResolver*, const PokemonSpecies* species, u32 flag) -> bool { return species->HasEggGroup(flag); }}); } void WASMSpeciesRegistry::Register(ArbUt::Dictionary& externs, WebAssemblyScriptResolver* resolver) { REGISTER_GETTER("species_get_id", CreatureSpecies, GetId, resolver) REGISTER_GETTER("species_get_name", CreatureSpecies, GetName, resolver) REGISTER_GETTER("species_get_gender_rate", CreatureSpecies, GetGenderRate, resolver) REGISTER_GETTER("species_get_growth_rate", CreatureSpecies, GetGrowthRate, resolver) REGISTER_GETTER("species_get_capture_rate", CreatureSpecies, GetCaptureRate, resolver) REGISTER_GETTER("species_get_base_happiness", PokemonSpecies, GetBaseHappiness, resolver) externs.Insert("species_has_forme_by_hash", Species_HasFormeByHash(resolver)); externs.Insert("species_get_forme_by_hash", Species_GetFormeByHash(resolver)); externs.Insert("species_has_flag_by_hash", Species_HasFlagByHash(resolver)); externs.Insert("species_has_egg_group_by_hash", Species_HasEggGroupByHash(resolver)); }