GameStateManager.h
Go to the documentation of this file.00001 00010 #ifndef __GameStateManager_H__ 00011 #define __GameStateManager_H__ 00012 00013 // Includes 00014 #include "Singleton.h" 00015 #include "Array.h" 00016 #include "HashTable.h" 00017 #include "HashTableKey_StringId.h" 00018 00019 // Forward declares 00020 class GameState; 00021 class GameStateDefinition; 00022 00023 // GameStateManager 00024 class GameStateManager:public Singleton<GameStateManager> 00025 { 00026 public: 00027 GameStateManager(); 00028 virtual ~GameStateManager(); 00029 00030 void Update(float deltaTime); 00031 00032 void SetState(StringId state); 00033 StringId GetState(); 00034 00035 typedef GameState* (*CreateFunction)(); 00036 void RegisterGameState(StringId id, CreateFunction createFunction); 00037 00038 void ExitCurrentState(); 00039 00040 void SwitchState(StringId state, float transitionOutTime = 0, float transitionInTime = 0); 00041 00042 bool IsTransitioning(); 00043 bool IsTransitioningOut(); 00044 bool IsTransitioningIn(); 00045 float GetTransitionValue(); 00046 00047 void ExitApplication(); 00048 bool IsExitFlagSet(); 00049 00050 private: 00051 friend class GameState; 00052 GameState* CreateGameState(StringId id); 00053 00054 private: 00055 bool exitRequested_; 00056 bool exitFlag_; 00057 00058 StringId state_; 00059 GameState* stateInstance_; 00060 StringId stateToSwitchTo_; 00061 00062 bool transitioningOut_; 00063 bool transitioningIn_; 00064 float transitionInTime_; 00065 float transitionInTimeElapsed_; 00066 float transitionOutTime_; 00067 float transitionOutTimeElapsed_; 00068 float newTransitionInTime_; 00069 00070 HashTable<HashTableKey_StringId,CreateFunction> gameStates_; 00071 }; 00072 00073 #define siGameStateManager GameStateManager::GetInstance() 00074 00075 #endif /* __GameStateManager_H__ */
Reproduction/republishing of any material on this site without permission is strictly prohibited.
