ksys/res: Add getters for GParam objects

This commit is contained in:
Léo Lam 2020-09-20 14:51:14 +02:00
parent ba8edc3d45
commit 5dc9b9542e
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
1 changed files with 92 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include <container/seadBuffer.h>
#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 <GParamListObjType Type>
const auto& get() const {
using Traits = GParamListObjTypeTraits<Type>;
return *reinterpret_cast<typename Traits::type*>(mObjects[Traits::index]);
}
#define KSYS_GPARAM_DEFINE_GETTER_(NAME) \
const auto& get##NAME() const { return get<GParamListObjType::NAME>(); }
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;