NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
s_State.hpp
Go to the documentation of this file.
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
/// @file
7
8
/// @brief Declares a state.
9
/// @param class The class name.
10
/// @param name The state name.
11
/// @hideinitializer
12
#define STATE_FUNC_DECLARE(class, name) \
13
void initializeState_##name(); \
14
void executeState_##name(); \
15
void finalizeState_##name(); \
16
static sFStateID_c<class> StateID_##name
17
18
/// @brief Declares a virtual state.
19
/// @param class The class name.
20
/// @param name The state name.
21
/// @hideinitializer
22
#define STATE_VIRTUAL_FUNC_DECLARE(class, name) \
23
virtual void initializeState_##name(); \
24
virtual void executeState_##name(); \
25
virtual void finalizeState_##name(); \
26
static sFStateVirtualID_c<class> StateID_##name; \
27
template <typename T> static typename T::StateIDSelf_##name StateBaseGetter##name(int) {} \
28
template <typename T> static sStateID_c StateBaseGetter##name(...) {} \
29
typedef decltype(StateBaseGetter##name<class>(0)) StateIDBase_##name; \
30
typedef class StateIDSelf_##name
31
32
/// @brief Defines a state.
33
/// @param class The class name.
34
/// @param name The state name.
35
/// @hideinitializer
36
#define STATE_DEFINE(class, name) sFStateID_c<class> class::StateID_##name( \
37
#class "::StateID_" #name, \
38
&class::initializeState_##name, \
39
&class::executeState_##name, \
40
&class::finalizeState_##name)
41
42
/// @brief Defines a virtual state.
43
/// @param class The class name.
44
/// @param name The state name.
45
/// @hideinitializer
46
#define STATE_VIRTUAL_DEFINE(class, name) \
47
template <typename T> \
48
static const sStateIDIf_c &baseID_##name() { \
49
return T::StateID_##name; \
50
} \
51
template <> \
52
const sStateIDIf_c &baseID_##name<sStateID_c>() { \
53
return sStateID::null; \
54
} \
55
sFStateVirtualID_c<class> class::StateID_##name( \
56
baseID_##name<class::StateIDBase_##name>(), \
57
#class "::StateID_" #name, \
58
&class::initializeState_##name, \
59
&class::executeState_##name, \
60
&class::finalizeState_##name \
61
);
include
game
sLib
s_State.hpp
Made with ❤️ by
CLF78
and
RootCubed
. Logos by
Chasical
and
B1
. Website generated by
Doxygen
1.15.0