1 #ifndef __END_LEVEL_SCORE_SCREEN_H__ 2 #define __END_LEVEL_SCORE_SCREEN_H__ 3 4 #include "ScoreScreenCommon.h" 5 6 #include "../../Scene/Scene.h" 7 #include "../../SharedDefines.h" 8 9 #include <SDL2/SDL.h> 10 11 class Image; 12 class LevelData; 13 14 enum ScoreScreenState 15 { 16 ScoreScreenState_None, 17 ScoreScreenState_Intro, 18 ScoreScreenState_SpawningScoreRows, 19 ScoreScreenState_Finished, 20 ScoreScreenState_Exiting, 21 }; 22 23 // This encapsulates score screen background and its children 24 class ScreenElementScoreScreen : public IScreenElement, public Scene 25 { 26 public: 27 ScreenElementScoreScreen(SDL_Renderer* pRenderer); 28 virtual ~ScreenElementScoreScreen(); 29 30 // IScreenElement implementation VOnLostDevice()31 virtual void VOnLostDevice() { } 32 virtual void VOnUpdate(uint32 msDiff); 33 virtual void VOnRender(uint32 msDiff); 34 VGetZOrder()35 virtual int32 VGetZOrder() const { return 0; } VSetZOrder(int32 const zOrder)36 virtual void VSetZOrder(int32 const zOrder) { } VIsVisible()37 virtual bool VIsVisible() { return true; } VSetVisible(bool visible)38 virtual void VSetVisible(bool visible) { } 39 40 virtual bool VOnEvent(SDL_Event& evt); 41 42 bool Initialize(TiXmlElement* pScoreScreenRootElem); 43 44 private: 45 // Delegates 46 void FinishedLoadingRowDelegate(IEventDataPtr pEventData); 47 void ScoreScreenFinishedIntroDelegate(IEventDataPtr pEventData); 48 void ScoreScreenLevelScoreAddedDelegate(IEventDataPtr pEventData); 49 50 void LoadNextLevel(); 51 void ForceNextState(); 52 void QueueDelayedProcess(StrongProcessPtr pProcess, int delay); 53 void TestSpawnEverything(); 54 55 ScoreScreenState m_State; 56 57 SDL_Renderer* m_pRenderer; 58 Point m_OriginalScale; 59 60 shared_ptr<Image> m_pBackground; 61 shared_ptr<Image> m_pScoreBackgroundImage; 62 63 std::vector<ScoreRowDef> m_ScoreRowList; 64 65 int m_DisplayedLevelScore; 66 int m_DisplayedGameScore; 67 68 ActorList m_LevelScoreNumbersList; 69 ActorList m_GameScoreNumbersList; 70 71 int m_NextLevelNumber; 72 int m_ScorePointsOnLevelStart; 73 int m_ScorePointsCollectedInLevel; 74 75 ProcessMgr* m_pProcessMgr; 76 std::vector<StrongProcessPtr> m_SpawnRowProcessList; 77 78 // Internal states 79 bool m_bInScoreScreen; 80 }; 81 82 #endif