CSC8503_Advanced_Game_Technologies / CSC8503 / CSC8503Common / StateTransition.h
StateTransition.h
Raw
#pragma once
#include <functional>
namespace NCL {
	namespace CSC8503 {
		class State;
		typedef std::function<bool()> StateTransitionFunction;
		class StateTransition {
		public:
			StateTransition(State* source, State* dest,
				StateTransitionFunction f) {
				sourceState = source;
				destinationState = dest;
				function = f;
			}
			bool CanTransition() const {
				return function();
			}
			State* GetDestinationState() const { return destinationState; }
			State* GetSourceState() const { return sourceState; }			
		protected:
			State* sourceState;
			State* destinationState;
			StateTransitionFunction function;
		};
	}
}