prime/include/MetroidPrime/CArchitectureMessage.hpp

52 lines
1.1 KiB
C++
Raw Normal View History

#ifndef _CARCHITECTUREMESSAGE
#define _CARCHITECTUREMESSAGE
2022-10-01 06:19:09 +00:00
#include "types.h"
#include "rstl/rc_ptr.hpp"
enum EArchMsgTarget {
kAMT_IOWinManager,
kAMT_Game,
};
enum EArchMsgType {
kAM_RemoveIOWin = 0,
kAM_CreateIOWin = 1,
kAM_ChangeIOWinPriority = 2,
kAM_RemoveAllIOWins = 3,
kAM_TimerTick = 4,
kAM_UserInput = 5,
kAM_SetGameState = 6,
kAM_ControllerStatus = 7,
kAM_QuitGameplay = 8,
kAM_FrameBegin = 10,
kAM_FrameEnd = 11,
};
struct IArchitectureMessageParm {
2022-10-08 19:38:29 +00:00
inline virtual ~IArchitectureMessageParm() = 0;
2022-10-01 06:19:09 +00:00
};
2022-10-08 19:38:29 +00:00
IArchitectureMessageParm::~IArchitectureMessageParm() {}
2022-10-01 06:19:09 +00:00
class CArchitectureMessage {
public:
2022-10-14 07:45:18 +00:00
CArchitectureMessage(EArchMsgTarget target, int type, const rstl::rc_ptr<IArchitectureMessageParm>& parm)
: x0_target(target)
, x4_type(static_cast<EArchMsgType>(type))
, x8_parm(parm) {}
EArchMsgType GetType() const { return x4_type; }
2022-10-14 07:45:18 +00:00
const IArchitectureMessageParm* GetParm() const {
return x8_parm.GetPtr();
}
2022-10-01 06:19:09 +00:00
private:
EArchMsgTarget x0_target;
EArchMsgType x4_type;
rstl::rc_ptr< IArchitectureMessageParm > x8_parm;
};
#endif // _CARCHITECTUREMESSAGE