From 5dc9b9542e6a7146ce48b06cf746ed592fb15feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 20 Sep 2020 14:51:14 +0200 Subject: [PATCH] ksys/res: Add getters for GParam objects --- .../Resource/resResourceGParamList.h | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/src/KingSystem/Resource/resResourceGParamList.h b/src/KingSystem/Resource/resResourceGParamList.h index 139f63bd..c421fe2d 100644 --- a/src/KingSystem/Resource/resResourceGParamList.h +++ b/src/KingSystem/Resource/resResourceGParamList.h @@ -2,6 +2,7 @@ #include #include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListTraits.h" #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" #include "KingSystem/Utils/Types.h" @@ -18,6 +19,97 @@ public: void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override; bool needsParse() const override { return true; } + template + const auto& get() const { + using Traits = GParamListObjTypeTraits; + return *reinterpret_cast(mObjects[Traits::index]); + } + +#define KSYS_GPARAM_DEFINE_GETTER_(NAME) \ + const auto& get##NAME() const { return get(); } + + KSYS_GPARAM_DEFINE_GETTER_(System) + KSYS_GPARAM_DEFINE_GETTER_(General) + KSYS_GPARAM_DEFINE_GETTER_(Enemy) + KSYS_GPARAM_DEFINE_GETTER_(EnemyLevel) + KSYS_GPARAM_DEFINE_GETTER_(EnemyRace) + KSYS_GPARAM_DEFINE_GETTER_(AttackInterval) + KSYS_GPARAM_DEFINE_GETTER_(EnemyShown) + KSYS_GPARAM_DEFINE_GETTER_(BindBone) + KSYS_GPARAM_DEFINE_GETTER_(Attack) + KSYS_GPARAM_DEFINE_GETTER_(WeaponCommon) + KSYS_GPARAM_DEFINE_GETTER_(WeaponThrow) + KSYS_GPARAM_DEFINE_GETTER_(Sandworm) + KSYS_GPARAM_DEFINE_GETTER_(SmallSword) + KSYS_GPARAM_DEFINE_GETTER_(Rod) + KSYS_GPARAM_DEFINE_GETTER_(LargeSword) + KSYS_GPARAM_DEFINE_GETTER_(Spear) + KSYS_GPARAM_DEFINE_GETTER_(Shield) + KSYS_GPARAM_DEFINE_GETTER_(Bow) + KSYS_GPARAM_DEFINE_GETTER_(WeaponOption) + KSYS_GPARAM_DEFINE_GETTER_(MasterSword) + KSYS_GPARAM_DEFINE_GETTER_(GuardianMiniWeapon) + KSYS_GPARAM_DEFINE_GETTER_(Player) + KSYS_GPARAM_DEFINE_GETTER_(Camera) + KSYS_GPARAM_DEFINE_GETTER_(Grab) + KSYS_GPARAM_DEFINE_GETTER_(Armor) + KSYS_GPARAM_DEFINE_GETTER_(ArmorEffect) + KSYS_GPARAM_DEFINE_GETTER_(ArmorHead) + KSYS_GPARAM_DEFINE_GETTER_(ArmorUpper) + KSYS_GPARAM_DEFINE_GETTER_(ShiekerStone) + KSYS_GPARAM_DEFINE_GETTER_(SeriesArmor) + KSYS_GPARAM_DEFINE_GETTER_(Liftable) + KSYS_GPARAM_DEFINE_GETTER_(Item) + KSYS_GPARAM_DEFINE_GETTER_(Rupee) + KSYS_GPARAM_DEFINE_GETTER_(Arrow) + KSYS_GPARAM_DEFINE_GETTER_(Bullet) + KSYS_GPARAM_DEFINE_GETTER_(CureItem) + KSYS_GPARAM_DEFINE_GETTER_(CookSpice) + KSYS_GPARAM_DEFINE_GETTER_(LumberjackTree) + KSYS_GPARAM_DEFINE_GETTER_(Npc) + KSYS_GPARAM_DEFINE_GETTER_(NpcEquipment) + KSYS_GPARAM_DEFINE_GETTER_(Zora) + KSYS_GPARAM_DEFINE_GETTER_(Traveler) + KSYS_GPARAM_DEFINE_GETTER_(Prey) + KSYS_GPARAM_DEFINE_GETTER_(AnimalFollowOffset) + KSYS_GPARAM_DEFINE_GETTER_(ExtendedEntity) + KSYS_GPARAM_DEFINE_GETTER_(BindActor) + KSYS_GPARAM_DEFINE_GETTER_(EatTarget) + KSYS_GPARAM_DEFINE_GETTER_(AnimalUnit) + KSYS_GPARAM_DEFINE_GETTER_(Insect) + KSYS_GPARAM_DEFINE_GETTER_(Fish) + KSYS_GPARAM_DEFINE_GETTER_(Rope) + KSYS_GPARAM_DEFINE_GETTER_(Horse) + KSYS_GPARAM_DEFINE_GETTER_(HorseUnit) + KSYS_GPARAM_DEFINE_GETTER_(HorseObject) + KSYS_GPARAM_DEFINE_GETTER_(HorseRider) + KSYS_GPARAM_DEFINE_GETTER_(HorseCreator) + KSYS_GPARAM_DEFINE_GETTER_(GiantArmorSlot) + KSYS_GPARAM_DEFINE_GETTER_(GiantArmor) + KSYS_GPARAM_DEFINE_GETTER_(Guardian) + KSYS_GPARAM_DEFINE_GETTER_(MonsterShop) + KSYS_GPARAM_DEFINE_GETTER_(Swarm) + KSYS_GPARAM_DEFINE_GETTER_(GelEnemy) + KSYS_GPARAM_DEFINE_GETTER_(Nest) + KSYS_GPARAM_DEFINE_GETTER_(Wizzrobe) + KSYS_GPARAM_DEFINE_GETTER_(StalEnemy) + KSYS_GPARAM_DEFINE_GETTER_(GuardianMini) + KSYS_GPARAM_DEFINE_GETTER_(ClothReaction) + KSYS_GPARAM_DEFINE_GETTER_(Global) + KSYS_GPARAM_DEFINE_GETTER_(Beam) + KSYS_GPARAM_DEFINE_GETTER_(AutoGen) + KSYS_GPARAM_DEFINE_GETTER_(ChemicalType) + KSYS_GPARAM_DEFINE_GETTER_(Golem) + KSYS_GPARAM_DEFINE_GETTER_(HorseTargetedInfo) + KSYS_GPARAM_DEFINE_GETTER_(WolfLink) + KSYS_GPARAM_DEFINE_GETTER_(Event) + KSYS_GPARAM_DEFINE_GETTER_(GolemIK) + KSYS_GPARAM_DEFINE_GETTER_(PictureBook) + KSYS_GPARAM_DEFINE_GETTER_(AirWall) + KSYS_GPARAM_DEFINE_GETTER_(Motorcycle) + +#undef KSYS_GPARAM_DEFINE_GETTER_ + protected: bool parse_(u8* data, size_t size, sead::Heap* heap) override; void finalize_() override;