New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
FStateID.h
Go to the documentation of this file.
1#pragma once
2
3#include <state/StateID.h>
4
5template <typename T>
6class FStateID : public StateID
7{
8public:
9 typedef void (T::*FunctionPtr)();
10
11public:
12 FStateID(FunctionPtr initialize, FunctionPtr execute, FunctionPtr finalize)
13 : mInitialize(initialize)
14 , mExecute(execute)
15 , mFinalize(finalize)
16 {
17 }
18
20 {
21 }
22
23 void initializeState(T& obj) const
24 {
25 (obj.*mInitialize)();
26 }
27
28 void executeState(T& obj) const
29 {
30 (obj.*mExecute)();
31 }
32
33 void finalizeState(T& obj) const
34 {
35 (obj.*mFinalize)();
36 }
37
38protected:
42};
43
44#define DECLARE_STATE_ID(CLASS, NAME)
45 static FStateID<CLASS> StateID_##NAME;
46 void initializeState_##NAME();
47 void executeState_##NAME();
48 void finalizeState_##NAME();
49
50#define CREATE_STATE_ID(CLASS, NAME)
51 FStateID<CLASS> CLASS::StateID_##NAME
52 (&CLASS::initializeState_##NAME,
53 &CLASS::executeState_##NAME,
54 &CLASS::finalizeState_##NAME);
55
56// The following is only ever used by PlayerObject demo states
57
58#define DECLARE_STATE_ID_VIRTUAL_FUNC_OVERRIDE(CLASS, NAME)
59 static FStateID<CLASS> StateID_##NAME;
60 void initializeState_##NAME() override;
61 void executeState_##NAME() override;
62 void finalizeState_##NAME() override;
Definition FStateID.h:7
FunctionPtr mFinalize
Definition FStateID.h:41
void(T::* FunctionPtr)()
Definition FStateID.h:9
FunctionPtr mExecute
Definition FStateID.h:40
void executeState(T &obj) const
Definition FStateID.h:28
void initializeState(T &obj) const
Definition FStateID.h:23
FStateID(FunctionPtr initialize, FunctionPtr execute, FunctionPtr finalize)
Definition FStateID.h:12
~FStateID() override
Definition FStateID.h:19
FunctionPtr mInitialize
Definition FStateID.h:39
void finalizeState(T &obj) const
Definition FStateID.h:33