Files
echoes/include/MetroidPrime/CEntityInfo.hpp

142 lines
3.4 KiB
C++

#ifndef _CENTITYINFO
#define _CENTITYINFO
#include "MetroidPrime/TGameTypes.hpp"
#include "rstl/vector.hpp"
enum EEntityType {
kET_Entity = 0,
kET_Actor = 1,
kET_PhysicsActor = 2,
kET_Ai = 3,
kET_Patterned = 4,
kET_Weapon = 6,
kET_Effect = 7,
kET_GameProjectile = 8,
kET_Bomb = 14,
kET_EnergyProjectile = 19,
kET_Explosion = 22,
kET_GameLight = 26,
kET_HUDBillboardEffect = 28,
kET_Player = 32,
kET_ScriptPlayerActor = 34,
kET_ScriptActorKeyframe = 35,
kET_ScriptCameraShaker = 41,
kET_ScriptCamera = 44,
kET_ScriptColorModulate = 45,
kET_DarkSamusBattleStage = 51,
kET_ScriptDock = 55,
kET_ScriptDoor = 56,
kET_ScriptLayerController = 64,
kET_ScriptPickup = 66,
kET_ScriptPlayerProxy = 69,
kET_ScriptPortalTransition = 72,
kET_Relay = 73,
kET_ScriptSpawnPoint = 79,
kET_ScriptSpecialFunction = 80,
kET_ScriptStreamedMusic = 84,
kET_ScriptTeamAi = 88,
kET_ScriptTrigger = 92,
kET_ScriptWorldTeleporter = 98,
kET_DarkSamus = 111,
kET_PowerBomb = 156,
};
enum EScriptObjectState {
kSS_Active = 0x41435456,
kSS_Inactive = 0x49435456,
kSS_Zero = 0x5a45524f,
kSS_DefaultState = 0x44465354,
kSS_MaxReached = 0x4d415852,
kSS_ScanStart = 0x4553434e,
kSS_ScanProcessing = 0x4253434e,
kSS_ScanDone = 0x53434e44,
kSS_InvalidState = 0xffffffff,
};
enum EScriptObjectMessage {
kSM_Start = 0x53545254,
kSM_Stop = 0x53544f50,
kSM_Play = 0x504c4159,
kSM_Activate = 0x41435456,
kSM_Deactivate = 0x44435456,
kSM_ToggleActive = 0x54435456,
kSM_SetToZero = 0x5a45524f,
kSM_Increment = 0x494e4352,
kSM_Decrement = 0x44454352,
kSM_XCRT = 0x58435254,
kSM_XALD = 0x58414c44,
kSM_XDelete = 0x5844454c,
kSM_None = 0xffffffff,
};
struct SConnection {
EScriptObjectState state;
EScriptObjectMessage msg;
TEditorId objId;
SConnection(EScriptObjectState state, EScriptObjectMessage msg, TEditorId id)
: state(state), msg(msg), objId(id) {}
};
class CEntityInfo {
TAreaId areaId;
rstl::vector< SConnection > conns;
TEditorId editorId;
bool active;
public:
CEntityInfo(TAreaId aid, const rstl::vector< SConnection >& conns, bool active,
TEditorId eid = kInvalidEditorId);
TAreaId GetAreaId() const { return areaId; }
const rstl::vector< SConnection >& GetConnectionList() const { return conns; }
TEditorId GetEditorId() const { return editorId; }
bool GetActive() const { return active; }
};
class CScriptMsg {
public:
CScriptMsg()
: m_unk(kInvalidUniqueId)
, m_originator(kInvalidUniqueId)
, m_id(kInvalidUniqueId)
, m_msg(kSM_None)
, m_state(kSS_InvalidState)
{}
CScriptMsg(TUniqueId unk, TUniqueId originator, TUniqueId id, EScriptObjectMessage msg, EScriptObjectState state)
: m_unk(unk)
, m_originator(originator)
, m_id(id)
, m_msg(msg)
, m_state(state)
{}
TUniqueId GetUnk() const { return m_unk; }
TUniqueId GetOriginator() const { return m_originator; }
TUniqueId GetId() const { return m_id; }
EScriptObjectMessage GetMessage() const { return m_msg; }
EScriptObjectState GetState() const { return m_state; }
void SetMessage(EScriptObjectMessage msg) {
m_msg = msg;
}
public:
TUniqueId m_unk;
TUniqueId m_originator;
TUniqueId m_id;
EScriptObjectMessage m_msg;
EScriptObjectState m_state;
};
struct SLdrEditorProperties;
const CEntityInfo& LdrToEntityInfo(const CEntityInfo&, const SLdrEditorProperties&);
#endif // _CENTITYINFO