Ndk/StateMachine: Add constructor/destructor, should be usable now

Former-commit-id: fab76ba97470e8d7a2f4a01a9d1746a8e213892f
This commit is contained in:
Lynix 2016-03-25 21:34:17 +01:00
parent 8d6c8e8a79
commit 11fe78f7e0
2 changed files with 14 additions and 1 deletions

View File

@ -16,7 +16,7 @@ namespace Ndk
class StateMachine class StateMachine
{ {
public: public:
inline StateMachine(); inline StateMachine(std::shared_ptr<State> originalState);
StateMachine(const StateMachine&) = delete; StateMachine(const StateMachine&) = delete;
inline StateMachine(StateMachine&& fsm) = default; inline StateMachine(StateMachine&& fsm) = default;
inline ~StateMachine(); inline ~StateMachine();

View File

@ -2,11 +2,24 @@
// This file is part of the "Nazara Development Kit" // This file is part of the "Nazara Development Kit"
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp // For conditions of distribution and use, see copyright notice in Prerequesites.hpp
#include <Nazara/Core/Error.hpp>
#include <NDK/StateMachine.hpp> #include <NDK/StateMachine.hpp>
#include <utility> #include <utility>
namespace Ndk namespace Ndk
{ {
inline StateMachine::StateMachine(std::shared_ptr<State> originalState) :
m_currentState(std::move(originalState))
{
NazaraAssert(m_currentState, "StateMachine must have a state to begin with");
}
inline StateMachine::~StateMachine()
{
m_currentState->Leave(*this);
}
inline void StateMachine::ChangeState(std::shared_ptr<State> state) inline void StateMachine::ChangeState(std::shared_ptr<State> state)
{ {
m_nextState = std::move(state); m_nextState = std::move(state);