54 lines
2.6 KiB
C++
54 lines
2.6 KiB
C++
#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<bool, const CreatureSpecies*, u32>(
|
|
resolver, {[](WebAssemblyScriptResolver*, const CreatureSpecies* species, u32 flag) -> bool {
|
|
return species->HasVariant(flag);
|
|
}});
|
|
}
|
|
|
|
wasm_func_t* Species_GetFormeByHash(WebAssemblyScriptResolver* resolver) {
|
|
return WasmHelpers::CreateFunc<const SpeciesVariant*, const CreatureSpecies*, u32>(
|
|
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<bool, const CreatureSpecies*, u32>(
|
|
resolver, {[](WebAssemblyScriptResolver*, const CreatureSpecies* species, u32 flag) -> bool {
|
|
return species->HasFlag(flag);
|
|
}});
|
|
}
|
|
|
|
wasm_func_t* Species_HasEggGroupByHash(WebAssemblyScriptResolver* resolver) {
|
|
return WasmHelpers::CreateFunc<bool, const PokemonSpecies*, u32>(
|
|
resolver, {[](WebAssemblyScriptResolver*, const PokemonSpecies* species, u32 flag) -> bool {
|
|
return species->HasEggGroup(flag);
|
|
}});
|
|
}
|
|
|
|
void WASMSpeciesRegistry::Register(ArbUt::Dictionary<std::string, wasm_func_t*>& 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));
|
|
}
|