SuperMarioOdysseyOnline/include/nn/nex/system.h
2022-06-16 14:33:18 -07:00

70 lines
No EOL
2 KiB
C++

/**
* @file system.h
* @brief System state / component interface for NEX.
*/
#pragma once
#include "reference.h"
#include "string.h"
namespace nn
{
namespace nex
{
class SystemComponent : public nn::nex::RefCountedObject
{
public:
enum _State
{
State_Uninitialized = 1 << 0,
State_Initializing = 1 << 1,
State_Ready = 1 << 2,
State_ReadyInUse = 1 << 3,
State_Terminating = 1 << 4,
State_TerminatingWhileInUse = 1 << 5,
State_Terminated = 1 << 6,
State_Faulty = 1 << 7,
State_Unknown = 1 << 8,
State_HighestState = 1 << 8
};
SystemComponent(nn::nex::String const &);
virtual ~SystemComponent();
virtual char* GetType() const;
virtual bool IsAKindOf(char const *) const;
virtual void EnforceDeclareSysComponentMacro() = 0;
virtual void StateTransition(nn::nex::SystemComponent::_State);
virtual void OnInitialize();
virtual void OnTerminate();
virtual bool BeginInitialization();
virtual bool EndInitialization();
virtual bool BeginTermination();
virtual bool EndTermination();
virtual bool ValidTransition(nn::nex::SystemComponent::_State);
virtual bool UseIsAllowed();
virtual nn::nex::SystemComponent::_State TestState();
virtual void DoWork();
nn::nex::SystemComponent::_State Initialize();
nn::nex::SystemComponent::_State Terminate();
u8 _C;
u8 _D;
u8 _E;
u8 _F;
u64 _10;
u64 _18;
u64 _20;
u32 _28;
u32 _2C;
u64 _30;
nn::nex::SystemComponent::_State mState; // _38
u32 _3C;
u64 _40;
};
};
};