NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
s_State.hpp
1#pragma once
2#include <game/sLib/s_FStateStateMgr.hpp>
3#include <game/sLib/s_FStateMgr.hpp>
4#include <game/sLib/s_StateMethodUsr_FI.hpp>
5#include <game/sLib/s_FStateVirtualID.hpp>
6
7#define STATE_FUNC_DECLARE(class, name) \
8 void initializeState_##name(); \
9 void executeState_##name(); \
10 void finalizeState_##name(); \
11 static sFStateID_c<class> StateID_##name
12
13#define STATE_VIRTUAL_FUNC_DECLARE(class, name) \
14 virtual void initializeState_##name(); \
15 virtual void executeState_##name(); \
16 virtual void finalizeState_##name(); \
17 static sFStateVirtualID_c<class> StateID_##name
18
19#define STATE_DEFINE(class, name) sFStateID_c<class> class::StateID_##name( \
20 #class "::StateID_" #name, \
21 &class::initializeState_##name, \
22 &class::executeState_##name, \
23 &class::finalizeState_##name)
24
25#define STATE_VIRTUAL_DEFINE(class, name) sFStateVirtualID_c<class> class::StateID_##name( \
26 baseID_ ##name<sStateID_c> (), \
27 #class "::StateID_" #name, \
28 &class::initializeState_##name, \
29 &class::executeState_##name, \
30 &class::finalizeState_##name)
31
32#define STATE_BASE_VIRTUAL_DEFINE(class, name) \
33 template <typename T> \
34 const sStateIDIf_c &baseID_##name() { \
35 return T::StateID_##name; \
36 } \
37 template <> \
38 const sStateIDIf_c &baseID_##name<sStateID_c>() { \
39 return sStateID::null; \
40 }
41