New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
FStateVirtualID.h
Go to the documentation of this file.
1#pragma once
2
3#include <state/FStateID.h>
4
5template <typename T>
6class FStateVirtualID : public FStateID<T>
7{
8public:
9 typedef typename FStateID<T>::FunctionPtr FunctionPtr;
10
11public:
12 FStateVirtualID(FunctionPtr initialize, FunctionPtr execute, FunctionPtr finalize, const StateID& super_id)
15 {
16 }
17
21
22 s32 number() const override
23 {
24 if (!mSuperID->isNull())
25 return mSuperID->number();
26
27 return this->mNumber;
28 }
29
30 const StateID* superID() const
31 {
32 return mSuperID;
33 }
34
35protected:
37};
38
39#define DECLARE_STATE_VIRTUAL_ID_BASE(CLASS, NAME)
40 static FStateVirtualID<CLASS> StateID_##NAME;
41 virtual void initializeState_##NAME();
42 virtual void executeState_##NAME();
43 virtual void finalizeState_##NAME();
44
45#define DECLARE_STATE_VIRTUAL_ID_OVERRIDE(CLASS, NAME)
46 static FStateVirtualID<CLASS> StateID_##NAME;
47 void initializeState_##NAME() override;
48 void executeState_##NAME() override;
49 void finalizeState_##NAME() override;
50
51#define CREATE_STATE_VIRTUAL_ID_BASE(CLASS, NAME)
52 FStateVirtualID<CLASS> CLASS::StateID_##NAME
53 (&CLASS::initializeState_##NAME,
54 &CLASS::executeState_##NAME,
55 &CLASS::finalizeState_##NAME,
56 StateID::cNull);
57
58#define CREATE_STATE_VIRTUAL_ID_OVERRIDE(CLASS, BASE, NAME)
59 FStateVirtualID<CLASS> CLASS::StateID_##NAME
60 (&CLASS::initializeState_##NAME,
61 &CLASS::executeState_##NAME,
62 &CLASS::finalizeState_##NAME,
63 BASE::StateID_##NAME);
Definition FStateVirtualID.h:7
s32 number() const override
Definition FStateVirtualID.h:22
FStateVirtualID(FunctionPtr initialize, FunctionPtr execute, FunctionPtr finalize, const StateID &super_id)
Definition FStateVirtualID.h:12
FStateID< T >::FunctionPtr FunctionPtr
Definition FStateVirtualID.h:9
~FStateVirtualID() override
Definition FStateVirtualID.h:18
const StateID * superID() const
Definition FStateVirtualID.h:30
const StateID * mSuperID
Definition FStateVirtualID.h:36