#pragma once #include "TutorialEnum.h" #include "TutorialConstraint.h" #include class AABB; class Tutorial; class GameType; class ChangeStateConstraint : public TutorialConstraint { private: AABB* movementArea; bool contains; // If true we must stay in this area, if false must stay out // of this area bool m_changeGameMode; GameType* m_targetGameMode; GameType* m_changedFromGameMode; eTutorial_State m_targetState; eTutorial_State* m_sourceStates; std::size_t m_sourceStatesCount; bool m_bHasChanged; eTutorial_State m_changedFromState; bool m_bComplete; Tutorial* m_tutorial; public: virtual ConstraintType getType() { return e_ConstraintChangeState; } ChangeStateConstraint(Tutorial* tutorial, eTutorial_State targetState, eTutorial_State sourceStates[], std::size_t sourceStatesCount, double x0, double y0, double z0, double x1, double y1, double z1, bool contains = true, bool changeGameMode = false, GameType* targetGameMode = NULL); ~ChangeStateConstraint(); virtual void tick(int iPad); };