Mercurial > LightClone
diff LightClone/Source/World.cpp @ 40:00d17d8f407d
Hookup game over dialog; Remove Code class
author | koryspansel |
---|---|
date | Thu, 22 Sep 2011 10:21:14 -0700 |
parents | d0ce73ced12e |
children | d27c06bd8ce1 |
line wrap: on
line diff
--- a/LightClone/Source/World.cpp Thu Sep 22 09:01:42 2011 -0700 +++ b/LightClone/Source/World.cpp Thu Sep 22 10:21:14 2011 -0700 @@ -14,6 +14,7 @@ World::World() { nGameState = GameState_Active; + nGameStatePrevious = GameState_Active; nSimulationState = SimulationState_Idle; nCurrentLevel = 0; } @@ -42,7 +43,7 @@ eCode = InitializeInterface(pResourceManager); if(eCode == Error_Success) { - nCurrentLevel = 1; + nCurrentLevel = 0; nGameState = GameState_LoadMap; } } @@ -129,7 +130,7 @@ if(nGameState == GameState_LoadMap) { char kBuffer[256]; - sprintf_s(kBuffer, "Data\\Maps\\Map%02d.map", nCurrentLevel++); + sprintf(kBuffer, "Data\\Maps\\Map%02d.map", nCurrentLevel++); ErrorCode eCode = Load(kBuffer); if(eCode == Error_Success) @@ -144,6 +145,10 @@ } else { + kMessageDialog.SetButton(0, "Ok", 0); + kMessageDialog.SetMessage("Congratulations!\nYou have completed the game"); + kMessageDialog.Show(); + nGameState = GameState_Over; } @@ -159,23 +164,17 @@ { if(kEnvironment.RequirementsMet()) { - kLevelDialog.SetButton(0, "Ok", 0); - kLevelDialog.SetMessage("Congratulations!\nYou have completed level XX"); - kLevelDialog.Show(); + kMessageDialog.SetButton(0, "Ok", 0); + kMessageDialog.SetMessage("Congratulations!\nYou have completed level XX"); + kMessageDialog.Show(); nGameState = GameState_Complete; } } } - - kInterface.Update(fElapsed); } - else - if(nGameState == GameState_Complete) - { - kInterface.Update(fElapsed); - } + kInterface.Update(fElapsed); } /* @@ -340,16 +339,21 @@ pBackground->Add(pButtonReset); pBackground->Add(pButtonExit); - kLevelDialog.Initialize(pResourceManager); - kLevelDialog.Subscribe(GuiDialog::EventResult, &World::OnResult, this); + kMessageDialog.Initialize(pResourceManager); + kMessageDialog.Subscribe(GuiDialog::EventResult, &World::OnResult, this); + + const D3DXVECTOR2& kMessageSize = kMessageDialog.GetDimensions(); + kMessageDialog.SetPosition(0.5f * ((ScreenSizeX - pBackground->GetWidth()) - kMessageSize.x), 0.5f * (ScreenSizeY - kMessageSize.y)); - const D3DXVECTOR2& kDialogSize = kLevelDialog.GetDimensions(); + kConfigDialog.Initialize(pResourceManager); + kConfigDialog.Subscribe(GuiDialog::EventResult, &World::OnConfirm, this); - kLevelDialog.SetPosition(0.5f * ((ScreenSizeX - pBackground->GetWidth()) - kDialogSize.x), 0.5f * (ScreenSizeY - kDialogSize.y)); + const D3DXVECTOR2& kConfigSize = kMessageDialog.GetDimensions(); + kConfigDialog.SetPosition(0.5f * ((ScreenSizeX - pBackground->GetWidth()) - kConfigSize.x), 0.5f * (ScreenSizeY - kConfigSize.y)); kInterface.Add(pBackground); - kInterface.Add(&kLevelDialog); - //kInterface.Add(pGameDialog); + kInterface.Add(&kMessageDialog); + kInterface.Add(&kConfigDialog); } return eCode; @@ -490,7 +494,8 @@ */ void World::OnExit(GuiEventArguments& kArguments) { - nGameState = GameState_Exit; + nGameStatePrevious = nGameState; + nGameState = GameState_Confirm; } /* @@ -498,18 +503,34 @@ */ void World::OnResult(GuiEventArguments& kArguments) { - if(GameState_Complete) + if(nGameState == GameState_Complete) { nGameState = GameState_LoadMap; } else - if(GameState_Over) + if(nGameState == GameState_Over) { + nCurrentLevel = 0; + nGameState = GameState_LoadMap; + } +} + +/* + * OnConfirm + */ +void World::OnConfirm(GuiEventArguments& kArguments) +{ + GuiResultArguments& kResultArguments = (GuiResultArguments&)kArguments; + + if(kResultArguments.nResult == DialogResult_Yes) + { + nGameState = GameState_Exit; } else - if(GameState_Confirm) + if(kResultArguments.nResult == DialogResult_No) { + nGameState = nGameStatePrevious; } }