# HG changeset patch
# User koryspansel
# Date 1316712074 25200
# Node ID 00d17d8f407d9491f2c259e766e716d409693a80
# Parent d0ce73ced12e06fb1295fd85b5d8cdde37e6c71d
Hookup game over dialog; Remove Code class
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/LightClone.vcproj
--- a/LightClone/LightClone.vcproj Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/LightClone.vcproj Thu Sep 22 10:21:14 2011 -0700
@@ -42,7 +42,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_WINDOWS=0x0410;_WIN32_IE=0x0700;WIN32_LEAN_AND_MEAN"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_WINDOWS=0x0410;_WIN32_IE=0x0700;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -118,7 +118,7 @@
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_WINDOWS=0x0410;_WIN32_IE=0x0700;WIN32_LEAN_AND_MEAN"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_WINDOWS=0x0410;_WIN32_IE=0x0700;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
@@ -185,10 +185,6 @@
>
-
-
@@ -347,10 +343,6 @@
>
-
-
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/Bot.h
--- a/LightClone/Source/Bot.h Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/Source/Bot.h Thu Sep 22 10:21:14 2011 -0700
@@ -10,7 +10,6 @@
#include "ResourceManager.h"
#include "VirtualMachine.h"
#include "Environment.h"
-#include "Code.h"
#include "Clock.h"
#include "Program.h"
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/Code.cpp
--- a/LightClone/Source/Code.cpp Thu Sep 22 09:01:42 2011 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Code
- */
-
-#include "Code.h"
-
-/*
- * Code
- */
-Code::Code()
-{
- pSlot = 0;
- nSize = 0;
- nLength = 0;
-}
-
-/*
- * Initialize
- */
-void Code::Initialize(uint32 nValue)
-{
- if(pSlot)
- {
- delete[] pSlot;
- pSlot = 0;
- }
-
- nLength = 0;
- nSize = nValue;
- pSlot = new uint32[nValue];
-
- Clear();
-}
-
-/*
- * Clear
- */
-void Code::Clear()
-{
- for(uint32 i = 0; i < nSize; ++i)
- {
- pSlot[i] = 0;
- }
-}
-
-/*
- * SetSlot
- */
-void Code::SetSlot(uint32 nSlot, uint32 nValue)
-{
- if(nSlot < nSize)
- {
- pSlot[nSlot] = nValue;
- }
-}
-
-/*
- * GetSlot
- */
-uint32 Code::GetSlot(uint32 nSlot)
-{
- return nSlot < nSize ? pSlot[nSlot] : 0;
-}
-
-/*
- * ClearSlot
- */
-void Code::ClearSlot(uint32 nSlot)
-{
- if(nSlot < nSize)
- {
- pSlot[nSlot] = 0;
- }
-}
-
-/*
- * IsEmptySlot
- */
-bool Code::IsEmptySlot(uint32 nSlot) const
-{
- return nSlot < nSize ? (pSlot[nSlot] < Action_Forward || pSlot[nSlot] > Action_Light) : true;
-}
-
-/*
- * GetSize
- */
-uint32 Code::GetSize() const
-{
- return nSize;
-}
-
-/*
- * GetLength
- */
-uint32 Code::GetLength() const
-{
- uint32 nLength = 0;
-
- for(uint32 i = 0; i < nSize; ++i)
- {
- if(pSlot[nLength] != 0)
- {
- ++nLength;
- }
- }
-
- return nLength;
-}
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/Code.h
--- a/LightClone/Source/Code.h Thu Sep 22 09:01:42 2011 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Code
- */
-
-#ifndef __CODE_H__
-#define __CODE_H__
-
-#include "Core.h"
-
-/*
- * Code
- */
-class Code
-{
- /*
- * pSlot
- * Code blocks are made up of an array of actions
- */
- uint32* pSlot;
-
- /*
- * nSize
- */
- uint32 nSize;
-
- /*
- * nLength
- */
- uint32 nLength;
-
-public:
-
- /*
- * Code
- */
- Code();
-
- /*
- * Initialize
- */
- void Initialize(uint32 nLength);
-
- /*
- * Clear
- */
- void Clear();
-
- /*
- * SetSlot
- */
- void SetSlot(uint32 nSlot, uint32 nValue);
-
- /*
- * GetSlot
- */
- uint32 GetSlot(uint32 nSlot);
-
- /*
- * ClearSlot
- */
- void ClearSlot(uint32 nSlot);
-
- /*
- * IsEmptySlot
- */
- bool IsEmptySlot(uint32 nSlot) const;
-
- /*
- * GetSize
- */
- uint32 GetSize() const;
-
- /*
- * GetLength
- */
- uint32 GetLength() const;
-};
-
-#endif //__CODE_H__
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/Dialog.h
--- a/LightClone/Source/Dialog.h Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/Source/Dialog.h Thu Sep 22 10:21:14 2011 -0700
@@ -9,6 +9,8 @@
#include "GuiDialog.h"
#include "GuiLabel.h"
#include "GuiButton.h"
+#include
+#include
/*
* DialogResult
@@ -103,9 +105,17 @@
/*
* SetMessage
*/
- void SetMessage(const char* pMessage)
+ void SetMessage(const char* pFormat, ...)
{
- kLabel.SetText(pMessage);
+ va_list kArguments;
+ va_start(kArguments, pFormat);
+
+ char kBuffer[128];
+ vsprintf(kBuffer, pFormat, kArguments);
+
+ kLabel.SetText(kBuffer);
+
+ va_end(kArguments);
}
/*
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/GuiInterface.cpp
--- a/LightClone/Source/GuiInterface.cpp Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/Source/GuiInterface.cpp Thu Sep 22 10:21:14 2011 -0700
@@ -61,12 +61,6 @@
if(pCursor)
{
- /*
- char kBuffer[128];
- sprintf_s(kBuffer, "<%0.2f, %0.2f>\n", fX, fY);
- OutputDebugStringA(kBuffer);
- */
-
pCursor->SetPosition(fMouseX, fMouseY);
pCursor->Update(fElapsed);
}
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/Util.cpp
--- a/LightClone/Source/Util.cpp Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/Source/Util.cpp Thu Sep 22 10:21:14 2011 -0700
@@ -13,8 +13,8 @@
uint8* pData = NULL;
uint32 nSize = 0;
- FILE* pFile = NULL;
- if(fopen_s(&pFile, pName, "rt") == 0)
+ FILE* pFile = fopen(pName, "rt");
+ if(pFile)
{
fseek(pFile, 0, SEEK_END);
nSize = (uint32)ftell(pFile);
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/World.cpp
--- 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;
}
}
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/Source/World.h
--- a/LightClone/Source/World.h Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/Source/World.h Thu Sep 22 10:21:14 2011 -0700
@@ -11,7 +11,6 @@
#include "RenderContext.h"
#include "Environment.h"
#include "Bot.h"
-#include "Code.h"
#include "Loader.h"
#include "CameraController.h"
#include "InputManager.h"
@@ -63,6 +62,11 @@
uint32 nGameState;
/*
+ * nGameStatePrevious
+ */
+ uint32 nGameStatePrevious;
+
+ /*
* nSimulationState
*/
uint32 nSimulationState;
@@ -128,29 +132,14 @@
CodePanel* pFunctionB;
/*
- * pLevelDialog
+ * kMessageDialog
*/
- //GuiImage* pLevelDialog;
-
- /*
- * pLevelDialogOk
- */
- //GuiButton* pLevelDialogOk;
+ Dialog<1> kMessageDialog;
/*
- * pGameDialog
- */
- //GuiImage* pGameDialog;
-
- /*
- * pGameDialogOk
+ * kConfirmDialog
*/
- //GuiButton* pGameDialogOk;
-
- /*
- * kLevelDialog
- */
- Dialog<1> kLevelDialog;
+ Dialog<2> kConfigDialog;
public:
@@ -260,6 +249,11 @@
* OnResult
*/
void OnResult(GuiEventArguments& kArguments);
+
+ /*
+ * OnConfirm
+ */
+ void OnConfirm(GuiEventArguments& kArguments);
};
#endif //__WORLD_H__
diff -r d0ce73ced12e -r 00d17d8f407d LightClone/ToDo.txt
--- a/LightClone/ToDo.txt Thu Sep 22 09:01:42 2011 -0700
+++ b/LightClone/ToDo.txt Thu Sep 22 10:21:14 2011 -0700
@@ -1,13 +1,8 @@
1. Only draw slots that are being used
-2. Center grid in viewport
-3. Button tool tips
-4. Main menu
-5. Pause menu
-6. Robot model & texture
-7. Implement confirm exit dialog
-8. Help interface
-9. Add button to clear code panes
-10. Implement drag and drop
- a. Add drag and drop interface to GuiInterface and move handling into subclasses
- b. Support creating a new element when dragging and destroying it when done
-11. Implement gui batching
\ No newline at end of file
+2. Button tool tips
+3. Main menu
+4. Pause menu
+5. Robot model & texture
+6. Implement confirm exit dialog
+7. Help interface
+8. Implement gui batching
\ No newline at end of file