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;
 	}
 }