Professional Documents
Culture Documents
*/
/*!
/file StateMachine.h
/author Team42, Jiawei Gu
/e-mail Team42@digipen.edu, jiawei.gu@digipen.edu
/date 10/04/2015
/Brief Copyright (C) 2015 DigiPen Institute of Technology. Reproduction or
disclosure of this file or its contents without the prior written consent of
DigiPen Institute of Technology is prohibited.
*/
/* End Header ******************************************************************
*/
#ifndef T_STATE_MACHINE
#define T_STATE_MACHINE
#include <map>
#include <vector>
#include <string>
#include
#include
#include
#include
#include
"OGRE/Ogre.h"
"../Component.h"
"../../Serialization/ISerializable.h"
"../../Behaviors/Behavior.h"
"../../Systems/EventSystem/IEventListener.h"
namespace TrillianComponent
{
enum class StateMachineStatus
{
OnEnter,
OnUpdate,
OnExit
};
class StateMachine : public Component, public TrillianEvent::IEventListe
ner
{
public:
StateMachine();
~StateMachine() override;
/// <summary>
/// Assignment operator used to create copies of objects with Ar
chetype and clone function
/// </summary>
/// <param name="stateMachine">The state machine.</param>
/// <returns>State Machine</returns>
StateMachine & operator= (const StateMachine & stateMachine);
/// <summary>
/// Initialize the state machine
/// </summary>
void Initialize() override;
///
///
///
///
<summary>
Update the state machine
</summary>
<param name="dt">The delta time.</param>
/// </summary>
std::vector<std::string> events;
/// <summary>
/// States.
/// </summary>
std::map<std::string, TrillianBehavior::Behavior *> states;
/// <summary>
/// Stack used by common behaviors.
/// </summary>
std::vector<std::string> stack;
/// <summary>
/// Current state.
/// </summary>
std::string currentState;
/// <summary>
/// Next state.
/// </summary>
std::string nextState;
/// <summary>
/// Current state machine status.
/// </summary>
StateMachineStatus status;
};
}
#endif