botw/src/KingSystem/ActorSystem/actActor.h

97 lines
2.5 KiB
C++

#pragma once
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include <prim/seadTypedBitFlag.h>
#include "KingSystem/ActorSystem/actBaseProc.h"
#include "KingSystem/Map/mapMubinIter.h"
namespace ksys {
namespace map {
class Object;
} // namespace map
namespace act {
namespace ai {
class RootAi;
}
class LifeRecoverInfo;
class ActorParam;
class Actor : public BaseProc {
public:
enum class StasisFlag {
_1 = 1,
_2 = 2,
_4 = 4,
};
enum class ActorFlag {
_18 = 0x18,
_25 = 0x25,
_2b = 0x2b,
};
enum class DeleteType {
_1 = 1,
_2 = 2,
_3 = 3,
};
Actor(); // FIXME
~Actor() override;
SEAD_RTTI_OVERRIDE(Actor, BaseProc)
const sead::SafeString& getProfile() const;
const char* getUniqueName() const;
ai::RootAi* getRootAi() const { return mRootAi; }
const ActorParam* getParam() const { return mActorParam; }
map::Object* getMapObject() const { return mMapObject; }
const map::MubinIter& getMapObjIter() const { return mMapObjIter; }
bool checkFlag(ActorFlag flag) const;
bool deleteEx(DeleteType type, DeleteReason reason, bool* ok = nullptr);
void setProperties(int x, const sead::Matrix34f& mtx, const sead::Vector3f& vel,
const sead::Vector3f& ang_vel, const sead::Vector3f& scale,
bool is_life_infinite, int i, int life) const;
virtual s32 getMaxLife();
virtual LifeRecoverInfo* getLifeRecoverInfo();
void emitBasicSigOn();
void emitBasicSigOff();
void nullsub_4649(); // Some kind of logging which has been excluded from the build?
const sead::TypedBitFlag<StasisFlag>& getStasisFlags() const { return mStasisFlags; }
void onAiEnter(const char* name, const char* context);
protected:
/* 0x180 */ u8 TEMP_0x180[0x3D8]; // FIXME
/* 0x558 */ ai::RootAi* mRootAi;
/* 0x560 */ void* mASList; // FIXME
/* 0x568 */ void* mEffects; // FIXME
/* 0x570 */ ActorParam* mActorParam;
/* 0x578 */ u8 TEMP_0x578[0x648 - 0x578];
/* 0x648 */ map::MubinIter mMapObjIter;
/* 0x658 */ u8 TEMP_0x650[0x710 - 0x658];
/* ..... */ // The name could be incorrect.
/* 0x710 */ sead::TypedBitFlag<StasisFlag> mStasisFlags;
/* 0x714 */ u8 TEMP_0x714[0x7c8 - 0x714]; // FIXME
/* 0x7c8 */ map::Object* mMapObject;
/* 0x7d0 */ u8 TEMP_0x7d0[0x838 - 0x7d0];
};
KSYS_CHECK_SIZE_NX150(Actor, 0x838);
} // namespace act
} // namespace ksys