ksys: Add map::Object (incomplete)

This commit is contained in:
Léo Lam 2020-09-16 22:23:44 +02:00
parent f733cd0d5c
commit b93b9d3c45
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 121 additions and 1 deletions

View File

@ -52,6 +52,8 @@ add_executable(uking
src/KingSystem/Map/mapTypes.h src/KingSystem/Map/mapTypes.h
src/KingSystem/Map/mapMubinIter.cpp src/KingSystem/Map/mapMubinIter.cpp
src/KingSystem/Map/mapMubinIter.h src/KingSystem/Map/mapMubinIter.h
src/KingSystem/Map/mapObject.cpp
src/KingSystem/Map/mapObject.h
src/KingSystem/MessageSystem/mesTransceiver.h src/KingSystem/MessageSystem/mesTransceiver.h

View File

@ -72147,7 +72147,7 @@
0x0000007100d49af0,sub_7100D49AF0,32, 0x0000007100d49af0,sub_7100D49AF0,32,
0x0000007100d49b10,sub_7100D49B10,416, 0x0000007100d49b10,sub_7100D49B10,416,
0x0000007100d49cb0,sub_7100D49CB0,56, 0x0000007100d49cb0,sub_7100D49CB0,56,
0x0000007100d49ce8,PlacementObj::ctor,124, 0x0000007100d49ce8,PlacementObj::ctor,124,_ZN4ksys3map6ObjectC1Ev!
0x0000007100d49d64,PlacementObj::dtor,52, 0x0000007100d49d64,PlacementObj::dtor,52,
0x0000007100d49d98,PlacementObj::initData,380, 0x0000007100d49d98,PlacementObj::initData,380,
0x0000007100d49f14,PlacementObj::initRevivalGameDataFlagAndMiscFlags,620, 0x0000007100d49f14,PlacementObj::initRevivalGameDataFlagAndMiscFlags,620,

Can't render this file because it is too large.

View File

@ -0,0 +1,7 @@
#include "KingSystem/Map/mapObject.h"
namespace ksys::map {
Object::Object() = default;
}

View File

@ -0,0 +1,111 @@
#pragma once
#include <basis/seadTypes.h>
#include <prim/seadTypedBitFlag.h>
#include "KingSystem/Map/mapMubinIter.h"
#include "KingSystem/Utils/Types.h"
namespace ksys::act {
class BaseProc;
}
namespace ksys::map {
class LinkData;
// FIXME: incomplete
class Object {
public:
// TODO: rename
enum class Flag0 {
};
enum class Flag {
IsLinkTag = 0x1,
IncrementSave = 0x2,
IsLinkTagNAndOrNOr = 0x4,
_8 = 0x8,
ShapeCapsuleOrCylinder = 0x10,
SheikSensorTargetDeadOrAlive = 0x20,
UnderGodForest = 0x40,
UnderGodForestOff = 0x80,
CreateNotRain = 0x100,
ActorCreated = 0x200,
HasTraversePos = 0x400,
HasUniqueName = 0x800,
IsCreateSharpWeapon = 0x1000,
// TODO: rename this. This name is too long...
IsTurnActorBowChargeAndHasBasicSigLink = 0x8000,
};
// TODO: rename
enum class ActorFlag8 {
};
enum class HardModeFlag {
ActorCreated = 0x1,
/// This actor only spawns in master mode (hard mode).
IsHardModeActor = 0x2,
/// This actor only spawns during the One-Hit Obliterator (Ichigeki/一撃) challenge.
IsOneHitChallengeActor = 0x4,
/// This actor does not rank up in master mode.
DisableRankup = 0x8,
};
Object();
~Object();
auto getFlags0() const { return mFlags0; }
auto getFlags() const { return mFlags; }
auto getActorFlags8() const { return mActorFlags8; }
auto getHardModeFlags() const { return mHardModeFlags; }
auto getActorDataIdx() const { return mActorDataIdx; }
auto getIdx() const { return mIdx; }
auto getId() const { return mId; }
auto getStaticCompoundId() const { return mStaticCompoundId; }
u8 getNumLinksPointingToMe() const { return mNumLinksPointingToMe; }
const MubinIter& getMubinIter() const { return mMubinIter; }
act::BaseProc* getProc() const { return mProc; }
LinkData* getLinkData() const { return mLinkData; }
u32 getRevivalGameDataFlagHash() const { return mRevivalGameDataFlagHash; }
u32 getHashId() const { return mHashId; }
const sead::Vector3f& getTranslate() const { return mTranslate; }
void setTranslate(const sead::Vector3f& translate);
auto getTraverseDist() const { return mTraverseDist; }
auto getTraverseDistInt() const { return mTraverseDistInt; }
private:
sead::TypedBitFlag<Flag0, u32> mFlags0;
u16 mActorDataIdx = 0xffff;
sead::TypedBitFlag<Flag, u16> mFlags;
u8 mIdx = 0;
u8 mNumLinksPointingToMe = 0;
sead::TypedBitFlag<ActorFlag8, u8> mActorFlags8;
u8 _b = 0xff;
u16 mId = 0;
u16 mStaticCompoundId = 0xffff;
void* _10 = nullptr;
void* _18 = nullptr;
void* _20 = nullptr;
MubinIter mMubinIter;
act::BaseProc* mProc = nullptr;
LinkData* mLinkData = nullptr;
u32 mRevivalGameDataFlagHash = 0xffffffff;
void* _50 = nullptr;
u32 mHashId = 0;
sead::Vector3f mTranslate;
f32 mTraverseDist = 0.0;
u16 mTraverseDistInt = 0;
sead::TypedBitFlag<HardModeFlag, u8> mHardModeFlags;
};
KSYS_CHECK_SIZE_NX150(Object, 0x70);
} // namespace ksys::map