8#ifndef MALENA_STATEMANAGER_H
9#define MALENA_STATEMANAGER_H
28 using type = std::function<void(T)>;
32 struct StateCallback<void>
34 using type = std::function<void()>;
84 template<
typename StateEnum =
void>
89 !std::is_void_v<StateEnum>,
94 typename StateCallback<StateEnum>::type _onEnterCallback;
95 typename StateCallback<StateEnum>::type _onExitCallback;
104 template<
typename T = StateEnum>
105 explicit StateManager(std::enable_if_t<!std::is_void_v<T>, T> initialState);
118 template<
typename T = StateEnum>
119 std::enable_if_t<!std::is_void_v<T>>
130 template<
typename T = StateEnum>
131 std::enable_if_t<!std::is_void_v<T>>
143 template<
typename T = StateEnum>
144 std::enable_if_t<!std::is_void_v<T>>
152 template<
typename T = StateEnum>
153 std::enable_if_t<!std::is_void_v<T>, T>
162 template<
typename T = StateEnum>
163 std::enable_if_t<!std::is_void_v<T>,
bool>
178#include "../../../src/Resources/StateManager.tpp"
std::enable_if_t<!std::is_void_v< T > > setState(T newState)
Transition to a new state.
StateManager(std::enable_if_t<!std::is_void_v< T >, T > initialState)
Construct with an explicit initial state.
std::enable_if_t<!std::is_void_v< T > > onStateExit(std::function< void(T)> callback)
Register a callback invoked before each state transition.
std::enable_if_t<!std::is_void_v< T >, T > getState() const
Return the current state value.
StateManager()=default
Default constructor — initial state is the zero-value of StateEnum.
std::enable_if_t<!std::is_void_v< T > > onStateEnter(std::function< void(T)> callback)
Register a callback invoked after each state transition.
std::enable_if_t<!std::is_void_v< T >, bool > isState(T state) const
Return true if currently in state.