Adds WASM type registry for species and formes.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#include "WASMFormeRegistry.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* Forme_GetType(WebAssemblyScriptResolver* resolver) {
|
||||
return WasmHelpers::CreateFunc<u8, const SpeciesVariant*, size_t>(
|
||||
resolver, {[](WebAssemblyScriptResolver*, const SpeciesVariant* forme, size_t index) -> u8 {
|
||||
return forme->GetType(index);
|
||||
}});
|
||||
}
|
||||
|
||||
wasm_func_t* Forme_GetBaseStatistic(WebAssemblyScriptResolver* resolver) {
|
||||
return WasmHelpers::CreateFunc<u16, const SpeciesVariant*, CreatureLib::Library::Statistic>(
|
||||
resolver, {[](WebAssemblyScriptResolver*, const SpeciesVariant* forme,
|
||||
CreatureLib::Library::Statistic stat) -> u16 { return forme->GetStatistic(stat); }});
|
||||
}
|
||||
|
||||
wasm_func_t* Forme_GetAbility(WebAssemblyScriptResolver* resolver) {
|
||||
return WasmHelpers::CreateFunc<const Talent*, const SpeciesVariant*, bool, u8>(
|
||||
resolver, {[](WebAssemblyScriptResolver*, const SpeciesVariant* forme, bool hidden, u8 index) -> const Talent* {
|
||||
return forme->GetTalent(TalentIndex(hidden, index)).GetRaw();
|
||||
}});
|
||||
}
|
||||
|
||||
wasm_func_t* Forme_HasFlagByHash(WebAssemblyScriptResolver* resolver) {
|
||||
return WasmHelpers::CreateFunc<bool, const SpeciesVariant*, u32>(
|
||||
resolver, {[](WebAssemblyScriptResolver*, const SpeciesVariant* forme, u32 flag) -> bool {
|
||||
return forme->HasFlag(flag);
|
||||
}});
|
||||
}
|
||||
|
||||
void WASMFormeRegistry::Register(ArbUt::Dictionary<std::string, wasm_func_t*>& externs,
|
||||
WebAssemblyScriptResolver* resolver) {
|
||||
REGISTER_GETTER("forme_get_name", SpeciesVariant, GetName, resolver)
|
||||
REGISTER_GETTER("forme_get_height", SpeciesVariant, GetHeight, resolver)
|
||||
REGISTER_GETTER("forme_get_weight", SpeciesVariant, GetWeight, resolver)
|
||||
REGISTER_GETTER("forme_get_base_experience", SpeciesVariant, GetBaseExperience, resolver)
|
||||
REGISTER_GETTER("forme_get_type_count", SpeciesVariant, GetTypeCount, resolver)
|
||||
externs.Insert("forme_get_type", Forme_GetType(resolver));
|
||||
externs.Insert("forme_get_statistic", Forme_GetBaseStatistic(resolver));
|
||||
REGISTER_GETTER("forme_get_ability_count", SpeciesVariant, GetTalentCount, resolver)
|
||||
REGISTER_GETTER("forme_get_hidden_ability_count", SpeciesVariant, GetSecretTalentCount, resolver)
|
||||
externs.Insert("forme_get_ability", Forme_GetAbility(resolver));
|
||||
externs.Insert("forme_has_flag_by_hash", Forme_HasFlagByHash(resolver));
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef PKMNLIB_WASMFORMEREGISTRY_HPP
|
||||
#define PKMNLIB_WASMFORMEREGISTRY_HPP
|
||||
#include <Arbutils/Collections/Dictionary.hpp>
|
||||
#include <wasm.h>
|
||||
|
||||
class WebAssemblyScriptResolver;
|
||||
|
||||
class WASMFormeRegistry {
|
||||
public:
|
||||
static void Register(ArbUt::Dictionary<std::string, wasm_func_t*>& externs,
|
||||
WebAssemblyScriptResolver* resolver);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_WASMFORMEREGISTRY_HPP
|
||||
@@ -10,7 +10,6 @@ wasm_func_t* Item_HasFlagByHash(WebAssemblyScriptResolver* resolver) {
|
||||
return WasmHelpers::CreateFunc<bool, Item*, u32>(
|
||||
resolver, {[](WebAssemblyScriptResolver*, Item* item, u32 flag) -> bool { return item->HasFlag(flag); }});
|
||||
}
|
||||
|
||||
void WASMItemRegistry::Register(ArbUt::Dictionary<std::string, wasm_func_t*>& externs,
|
||||
WebAssemblyScriptResolver* resolver) {
|
||||
REGISTER_GETTER("item_get_name", Item, GetName, resolver)
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
#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);
|
||||
if (opt.has_value()) {
|
||||
return opt.value();
|
||||
}
|
||||
return 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));
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef PKMNLIB_WASMSPECIESREGISTRY_HPP
|
||||
#define PKMNLIB_WASMSPECIESREGISTRY_HPP
|
||||
#include <Arbutils/Collections/Dictionary.hpp>
|
||||
#include <wasm.h>
|
||||
|
||||
class WebAssemblyScriptResolver;
|
||||
|
||||
class WASMSpeciesRegistry {
|
||||
public:
|
||||
static void Register(ArbUt::Dictionary<std::string, wasm_func_t*>& externs,
|
||||
WebAssemblyScriptResolver* resolver);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_WASMSPECIESREGISTRY_HPP
|
||||
Reference in New Issue
Block a user