# HG changeset patch
# User koryspansel
# Date 1315436979 25200
# Node ID d52a7042fa1a48ff806bbebab65c37add0e11af4
# Parent 6f227dd9a94f9accb5a03629eaefb1551ddf0da5
Refactor code panes & VM functions
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/LightClone.vcproj
--- a/LightClone/LightClone.vcproj Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/LightClone.vcproj Wed Sep 07 16:09:39 2011 -0700
@@ -181,6 +181,10 @@
>
+
+
@@ -201,6 +205,10 @@
>
+
+
@@ -267,6 +275,10 @@
>
+
+
@@ -287,6 +299,10 @@
>
+
+
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Bot.cpp
--- a/LightClone/Source/Bot.cpp Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Bot.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -134,15 +134,26 @@
{
ErrorCode eCode = Error_Success;
+ kMachine.Reset();
+ kMachine.ClearMemory();
+
+ kMachine.RemoveAllFunctions();
+ kMachine.AddFunction(0, (uint8)MainFunctionLength * 2);
+
for(uint32 i = 0; i < nCount && eCode == Error_Success; ++i)
{
+ kMachine.AddFunction(i + 1, (uint8)pCode[i].GetSize() * 2);
+
uint32 nSize = kMachine.GetFunctionSize(i);
uint8* pData = kMachine.GetFunctionMemory(i);
eCode = Compile(pCode + i, pData, nSize);
}
- nState = BotState_Evaluate;
+ if(eCode == Error_Success)
+ {
+ nState = BotState_Evaluate;
+ }
return eCode;
}
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/ButtonPane.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/ButtonPane.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -0,0 +1,64 @@
+/*
+ * ButtonPane
+ */
+
+#include "ButtonPane.h"
+
+/*
+ * ButtonPane
+ */
+ButtonPane::ButtonPane(uint32 nMax) : nMaximum(nMax), nSize(0)
+{
+ pBounds = new Rectangle2[nMax];
+}
+
+/*
+ * Add
+ */
+void ButtonPane::Add(float fX, float fY, float fWidth, float fHeight)
+{
+ if(nSize < nMaximum)
+ {
+ pBounds[nSize++] = Rectangle2(fX, fY, fWidth, fHeight);
+ }
+}
+
+/*
+ * Pick
+ */
+int32 ButtonPane::Pick(float fX, float fY)
+{
+ for(uint32 i = 0; i < nMaximum; ++i)
+ {
+ if(pBounds[i].Contains(fX, fY))
+ {
+ return (int32)i;
+ }
+ }
+
+ return -1;
+}
+
+/*
+ * GetMaximum
+ */
+uint32 ButtonPane::GetMaximum() const
+{
+ return nMaximum;
+}
+
+/*
+ * GetSize
+ */
+uint32 ButtonPane::GetSize() const
+{
+ return nSize;
+}
+
+/*
+ * GetBounds
+ */
+const Rectangle2& ButtonPane::GetBounds(uint32 nSlot) const
+{
+ return pBounds[nSlot];
+}
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/ButtonPane.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/ButtonPane.h Wed Sep 07 16:09:39 2011 -0700
@@ -0,0 +1,65 @@
+/*
+ * ButtonPane
+ */
+
+#ifndef __BUTTONPANE_H__
+#define __BUTTONPANE_H__
+
+#include "Core.h"
+
+/*
+ * ButtonPane
+ */
+class ButtonPane
+{
+private:
+
+ /*
+ * nMaximum
+ */
+ uint32 nMaximum;
+
+ /*
+ * nSize
+ */
+ uint32 nSize;
+
+ /*
+ * pBounds
+ */
+ Rectangle2* pBounds;
+
+public:
+
+ /*
+ * ButtonPane
+ */
+ ButtonPane(uint32 nMax);
+
+ /*
+ * Add
+ */
+ void Add(float fX, float fY, float fWidth, float fHeight);
+
+ /*
+ * Pick
+ */
+ int32 Pick(float fX, float fY);
+
+ /*
+ * GetMaximum
+ */
+ uint32 GetMaximum() const;
+
+ /*
+ * GetSize
+ */
+ uint32 GetSize() const;
+
+ /*
+ * GetBounds
+ */
+ const Rectangle2& GetBounds(uint32 nSlot) const;
+};
+
+#endif //__BUTTONPANE_H__
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Controller.cpp
--- a/LightClone/Source/Controller.cpp Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Controller.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -61,6 +61,9 @@
Environment* pEnvironment = pModel->GetEnvironment();
if(pEnvironment->RequirementsMet())
{
+ //kDialog.Reset();
+ //kDialog.SetMessage("Some message");
+ //kDialog.SetButton(0, "Ok");
pModel->nGameState = GameState_Complete;
}
}
@@ -69,34 +72,6 @@
}
/*
- * Start
- */
-void Controller::Start()
-{
- if(pModel->nSimulationState == SimulationState_Idle)
- {
- pModel->ResetBot();
- pModel->GetBot()->Upload(pModel->GetFunction(0), pModel->GetFunctionCount());
-
- pModel->nSimulationState = SimulationState_Active;
- }
-}
-
-/*
- * Stop
- */
-void Controller::Stop()
-{
- if(pModel->nSimulationState == SimulationState_Active)
- {
- pModel->ResetEnvironment();
- pModel->ResetBot();
-
- pModel->nSimulationState = SimulationState_Idle;
- }
-}
-
-/*
* ProcessInput
*/
void Controller::ProcessInput(float fElapsed)
@@ -145,62 +120,84 @@
{
if(pModel->kInputManager.IsButtonDown(0) && !pModel->kInputManager.WasButtonDown(0))
{
- if(pModel->kControlBounds[ControlButton_Play].Contains(fMouseX, fMouseY))
+ int32 nSelection = pModel->kControls.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
{
- Start();
- }
- else
+ if(nSelection == ControlButton_Play)
+ {
+ if(pModel->nSimulationState == SimulationState_Idle)
+ {
+ pModel->ResetBot();
+ pModel->GetBot()->Upload(pModel->GetFunction(0), pModel->GetFunctionCount());
- if(pModel->kControlBounds[ControlButton_Stop].Contains(fMouseX, fMouseY))
- {
- Stop();
- }
- else
+ pModel->nSimulationState = SimulationState_Active;
+ }
+ }
+ else
- if(pModel->kControlBounds[ControlButton_Exit].Contains(fMouseX, fMouseY))
- {
- pModel->nGameState = GameState_Exit;
- }
+ if(nSelection == ControlButton_Stop)
+ {
+ if(pModel->nSimulationState == SimulationState_Active)
+ {
+ pModel->ResetEnvironment();
+ pModel->ResetBot();
- for(uint32 i = 0; i < sizeof(pModel->kArrowBounds) / sizeof(pModel->kArrowBounds[0]); ++i)
- {
- if(pModel->kArrowBounds[i].Contains(fMouseX, fMouseY))
+ pModel->nSimulationState = SimulationState_Idle;
+ }
+ }
+ else
+
+ if(nSelection == ControlButton_Exit)
{
- const uint32 nCount = pModel->GetFunctionCount() - 1;
- pModel->nCurrentFunction = (pModel->nCurrentFunction + 2 * (int32)i - 1 + nCount) % nCount;
+ pModel->nGameState = GameState_Exit;
}
}
-
- for(uint32 i = 0; i < Action_Count; ++i)
+ else
{
- if(pModel->kActionBounds[i].Contains(fMouseX, fMouseY))
+ // pick against the toolbar
+ nSelection = pModel->kToolbar.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
{
- pModel->kDragController.Begin(Action_Forward + i);
+ pModel->kDragController.Begin(Action_Forward + nSelection);
}
- }
-
- for(uint32 i = 0; i < sizeof(pModel->kMainBounds) / sizeof(pModel->kMainBounds[0]); ++i)
- {
- if(pModel->kMainBounds[i].Contains(fMouseX, fMouseY))
+ else
{
- Code* pCode = pModel->GetFunction(0);
- if(!pCode->IsEmptySlot(i))
+ // pick against the main pane
+ nSelection = pModel->kMain.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
+ {
+ Code* pCode = pModel->GetFunction(0);
+ if(!pCode->IsEmptySlot(nSelection))
+ {
+ pModel->kDragController.Begin(pCode->GetSlot(nSelection));
+ pCode->ClearSlot(nSelection);
+ }
+ }
+ else
{
- pModel->kDragController.Begin(pCode->GetSlot(i));
- pCode->ClearSlot(i);
- }
- }
- }
-
- for(uint32 i = 0; i < sizeof(pModel->kFunctionBounds) / sizeof(pModel->kFunctionBounds[0]); ++i)
- {
- if(pModel->kFunctionBounds[i].Contains(fMouseX, fMouseY))
- {
- Code* pCode = pModel->GetFunction(pModel->nCurrentFunction + 1);
- if(!pCode->IsEmptySlot(i))
- {
- pModel->kDragController.Begin(pCode->GetSlot(i));
- pCode->ClearSlot(i);
+ // pick against the function pane
+ nSelection = pModel->kFunction.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
+ {
+ Code* pCode = pModel->GetFunction(pModel->nCurrentFunction + 1);
+ if(!pCode->IsEmptySlot(nSelection))
+ {
+ pModel->kDragController.Begin(pCode->GetSlot(nSelection));
+ pCode->ClearSlot(nSelection);
+ }
+ }
+ else
+ {
+ // pick against the function pane arrows
+ for(uint32 i = 0; i < sizeof(pModel->kArrowBounds) / sizeof(pModel->kArrowBounds[0]); ++i)
+ {
+ if(pModel->kArrowBounds[i].Contains(fMouseX, fMouseY))
+ {
+ const uint32 nCount = pModel->GetFunctionCount() - 1;
+ pModel->nCurrentFunction = (pModel->nCurrentFunction + 2 * (int32)i - 1 + nCount) % nCount;
+ }
+ }
+ }
}
}
}
@@ -213,19 +210,17 @@
{
const uint32 nAction = pModel->kDragController.End();
- for(uint32 i = 0; i < sizeof(pModel->kMainBounds) / sizeof(pModel->kMainBounds[0]); ++i)
+ int32 nSelection = pModel->kMain.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
{
- if(pModel->kMainBounds[i].Contains(fMouseX, fMouseY))
- {
- pModel->GetFunction(0)->SetSlot(i, nAction);
- }
+ pModel->GetFunction(0)->SetSlot(nSelection, nAction);
}
-
- for(uint32 i = 0; i < sizeof(pModel->kFunctionBounds) / sizeof(pModel->kFunctionBounds[0]); ++i)
+ else
{
- if(pModel->kFunctionBounds[i].Contains(fMouseX, fMouseY))
+ nSelection = pModel->kFunction.Pick(fMouseX, fMouseY);
+ if(nSelection >= 0)
{
- pModel->GetFunction(pModel->nCurrentFunction + 1)->SetSlot(i, nAction);
+ pModel->GetFunction(pModel->nCurrentFunction + 1)->SetSlot(nSelection, nAction);
}
}
}
@@ -235,7 +230,6 @@
if(pModel->nGameState == GameState_Complete)
{
- // check to see if button was clicked
if(pModel->kInputManager.IsButtonDown(0) && !pModel->kInputManager.WasButtonDown(0))
{
for(uint32 i = 0; i < sizeof(pModel->kDialog1Bounds) / sizeof(pModel->kDialog1Bounds[0]); ++i)
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Controller.h
--- a/LightClone/Source/Controller.h Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Controller.h Wed Sep 07 16:09:39 2011 -0700
@@ -48,16 +48,6 @@
private:
/*
- * Start
- */
- void Start();
-
- /*
- * Stop
- */
- void Stop();
-
- /*
* ProcessInput
*/
void ProcessInput(float fElapsed);
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Dialog.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/Dialog.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -0,0 +1,21 @@
+/*
+ * Dialog
+ */
+
+#include "Dialog.h"
+
+/*
+ * kDialogBounds
+ */
+Rectangle2 kDialogBounds[][Dialog::MaximumButtonCount] =
+{
+ {
+ Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f),
+ Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f),
+ },
+
+ {
+ Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f),
+ Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f),
+ },
+};
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Dialog.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/Dialog.h Wed Sep 07 16:09:39 2011 -0700
@@ -0,0 +1,48 @@
+/*
+ * Dialog
+ */
+
+#ifndef __DIALOG_H__
+#define __DIALOG_H__
+
+#include "Core.h"
+
+/*
+ * Dialog
+ */
+class Dialog
+{
+public:
+
+ /*
+ * MaximumButtonCount
+ */
+ static const uint32 MaximumButtonCount = 2;
+
+ /*
+ * MaximumMessageLength
+ */
+ static const uint32 MaximumMessageLength = 256;
+
+private:
+
+ /*
+ * kMessage
+ */
+ char kMessage[MaximumMessageLength];
+
+public:
+
+ /*
+ * Dialog
+ */
+ Dialog();
+
+ /*
+ * SetButton
+ */
+ void SetButton(uint32 nButton, const char* pMessage);
+
+};
+
+#endif //__DIALOG_H__
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Interface.cpp
--- a/LightClone/Source/Interface.cpp Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Interface.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -338,11 +338,14 @@
for(uint32 i = 0; i < Action_Count; ++i)
{
+ const Rectangle2& kBounds = pModel->kToolbar.GetBounds(i);
+
D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kActionBounds[i].Width, pModel->kActionBounds[i].Height, 1.0f);
+ //D3DXMatrixScaling(&kScale, pModel->kActionBounds[i].Width, pModel->kActionBounds[i].Height, 1.0f);
+ D3DXMatrixScaling(&kScale, kBounds.Width, kBounds.Height, 1.0f);
D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kActionBounds[i].X, 0.5f * ScreenSizeY - pModel->kActionBounds[i].Y, 0.0f);
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + kBounds.X, 0.5f * ScreenSizeY - kBounds.Y, 0.0f);
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
@@ -366,17 +369,19 @@
{
const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
- for(uint32 i = 0; i < Max(pCode->GetSize(), 16U); ++i)
+ for(uint32 i = 0; i < Max(pCode->GetSize(), pModel->kMain.GetMaximum()); ++i)
{
const uint32 nAction = pCode->GetSlot(i);
if(Action_Forward <= nAction && nAction <= Action_FunctionB)
{
+ const Rectangle2& kBounds = pModel->kMain.GetBounds(i);
+
D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kMainBounds[i].Width, pModel->kMainBounds[i].Height, 1.0f);
+ D3DXMatrixScaling(&kScale, kBounds.Width, kBounds.Height, 1.0f);
D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kMainBounds[i].X, 0.5f * ScreenSizeY - pModel->kMainBounds[i].Y, 0.0f);
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + kBounds.X, 0.5f * ScreenSizeY - kBounds.Y, 0.0f);
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
@@ -410,17 +415,21 @@
{
const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
- for(uint32 i = 0; i < Max(pCode->GetSize(), 8U); ++i)
+ //TODO: Need to draw slots first, then action
+
+ for(uint32 i = 0; i < Max(pCode->GetSize(), pModel->kFunction.GetMaximum()); ++i)
{
const uint32 nAction = pCode->GetSlot(i);
if(Action_Forward <= nAction && nAction <= Action_FunctionB)
{
+ const Rectangle2& kBounds = pModel->kFunction.GetBounds(i);
+
D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kFunctionBounds[i].Width, pModel->kFunctionBounds[i].Height, 1.0f);
+ D3DXMatrixScaling(&kScale, kBounds.Width, kBounds.Height, 1.0f);
D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kFunctionBounds[i].X, 0.5f * ScreenSizeY - pModel->kFunctionBounds[i].Y, 0.0f);
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + kBounds.X, 0.5f * ScreenSizeY - kBounds.Y, 0.0f);
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
@@ -481,13 +490,16 @@
{
const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
- for(uint32 i = 0; i < sizeof(pModel->kControlBounds) / sizeof(pModel->kControlBounds[0]); ++i)
+ //for(uint32 i = 0; i < sizeof(pModel->kControlBounds) / sizeof(pModel->kControlBounds[0]); ++i)
+ for(uint32 i = 0; i < pModel->kControls.GetSize(); ++i)
{
+ const Rectangle2& kBounds = pModel->kControls.GetBounds(i);
+
D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kControlBounds[i].Width, pModel->kControlBounds[i].Height, 1.0f);
+ D3DXMatrixScaling(&kScale, kBounds.Width, kBounds.Height, 1.0f);
D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kControlBounds[i].X, 0.5f * ScreenSizeY - pModel->kControlBounds[i].Y, 0.0f);
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + kBounds.X, 0.5f * ScreenSizeY - kBounds.Y, 0.0f);
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Model.cpp
--- a/LightClone/Source/Model.cpp Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Model.cpp Wed Sep 07 16:09:39 2011 -0700
@@ -7,7 +7,7 @@
/*
* Model
*/
-Model::Model()
+Model::Model() : kToolbar(Action_Count), kMain(MaximumFunctionLength), kFunction(MaximumFunctionLength / 2), kControls(4)
{
nGameState = GameState_Active;
nSimulationState = SimulationState_Idle;
@@ -15,52 +15,52 @@
nCurrentFunction = 0;
nCurrentLevel = 0;
- kActionBounds[0] = Rectangle2(1023.0f + 0 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
- kActionBounds[1] = Rectangle2(1023.0f + 1 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
- kActionBounds[2] = Rectangle2(1023.0f + 2 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
- kActionBounds[3] = Rectangle2(1023.0f + 3 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
- kActionBounds[4] = Rectangle2(1023.0f + 0 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
- kActionBounds[5] = Rectangle2(1023.0f + 1 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
- kActionBounds[6] = Rectangle2(1023.0f + 2 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
- kActionBounds[7] = Rectangle2(1023.0f + 3 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
-
- kMainBounds[0] = Rectangle2(1023.0f + 0 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
- kMainBounds[1] = Rectangle2(1023.0f + 1 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
- kMainBounds[2] = Rectangle2(1023.0f + 2 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
- kMainBounds[3] = Rectangle2(1023.0f + 3 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
- kMainBounds[4] = Rectangle2(1023.0f + 0 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
- kMainBounds[5] = Rectangle2(1023.0f + 1 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
- kMainBounds[6] = Rectangle2(1023.0f + 2 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
- kMainBounds[7] = Rectangle2(1023.0f + 3 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
- kMainBounds[8] = Rectangle2(1023.0f + 0 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
- kMainBounds[9] = Rectangle2(1023.0f + 1 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
- kMainBounds[10] = Rectangle2(1023.0f + 2 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
- kMainBounds[11] = Rectangle2(1023.0f + 3 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
- kMainBounds[12] = Rectangle2(1023.0f + 0 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
- kMainBounds[13] = Rectangle2(1023.0f + 1 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
- kMainBounds[14] = Rectangle2(1023.0f + 2 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
- kMainBounds[15] = Rectangle2(1023.0f + 3 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
-
- kFunctionBounds[0] = Rectangle2(1023.0f + 0 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[1] = Rectangle2(1023.0f + 1 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[2] = Rectangle2(1023.0f + 2 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[3] = Rectangle2(1023.0f + 3 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[4] = Rectangle2(1023.0f + 0 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[5] = Rectangle2(1023.0f + 1 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[6] = Rectangle2(1023.0f + 2 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
- kFunctionBounds[7] = Rectangle2(1023.0f + 3 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
-
kArrowBounds[0] = Rectangle2(1206.0f + 0 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f);
kArrowBounds[1] = Rectangle2(1206.0f + 2 * 16.0f, 473.0f + 0 * 54.0f, 16.0f, 16.0f);
- kControlBounds[0] = Rectangle2(1023.0f + 0.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
- kControlBounds[1] = Rectangle2(1023.0f + 1.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
- kControlBounds[2] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
-
kDialog1Bounds[0] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
kDialog2Bounds[0] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
kDialog2Bounds[1] = Rectangle2(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
+
+ kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 0 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 1 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 2 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kToolbar.Add(1023.0f + 3 * 54.0f, 85.0f + 1 * 54.0f, 48.0f, 48.0f);
+
+ kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 2 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 0 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 1 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 2 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
+ kMain.Add(1023.0f + 3 * 54.0f, 238.0f + 3 * 54.0f, 48.0f, 48.0f);
+
+ kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 0 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 0 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 1 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 2 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
+ kFunction.Add(1023.0f + 3 * 54.0f, 501.0f + 1 * 54.0f, 48.0f, 48.0f);
+
+ kControls.Add(1023.0f + 0.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
+ kControls.Add(1023.0f + 1.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
+ kControls.Add(1023.0f + 2.5f * 54.0f, 638.0f + 0 * 00.0f, 48.0f, 48.0f);
}
/*
@@ -101,16 +101,12 @@
pFunction[0].Initialize(MainFunctionLength);
pFunction[0].Clear();
- kBot.AddFunction(0, MainFunctionLength);
-
for(uint32 i = 0; i < nCount; ++i)
{
const uint32 nLength = kLoader.GetFunctionLength(i);
pFunction[i + 1].Initialize(nLength);
pFunction[i + 1].Clear();
-
- kBot.AddFunction(i + 1, nLength);
}
}
}
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/Source/Model.h
--- a/LightClone/Source/Model.h Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/Source/Model.h Wed Sep 07 16:09:39 2011 -0700
@@ -12,6 +12,7 @@
#include "Loader.h"
#include "InputManager.h"
#include "DragController.h"
+#include "ButtonPane.h"
/*
* GameState
@@ -86,19 +87,44 @@
public:
/*
+ * kInputManager
+ */
+ InputManager kInputManager;
+
+ /*
+ * kDragController
+ */
+ DragController kDragController;
+
+ /*
* kActionBounds
*/
- Rectangle2 kActionBounds[8];
+ //Rectangle2 kActionBounds[8];
+
+ /*
+ * kToolbar
+ */
+ ButtonPane kToolbar;
/*
* kMainBounds
*/
- Rectangle2 kMainBounds[16];
+ //Rectangle2 kMainBounds[16];
+
+ /*
+ * kMain
+ */
+ ButtonPane kMain;
/*
* kFunctionBounds
*/
- Rectangle2 kFunctionBounds[8];
+ //Rectangle2 kFunctionBounds[8];
+
+ /*
+ * kFunction
+ */
+ ButtonPane kFunction;
/*
* kArrowBounds
@@ -108,7 +134,8 @@
/*
* kControlBounds
*/
- Rectangle2 kControlBounds[3];
+ //Rectangle2 kControlBounds[3];
+ ButtonPane kControls;
/*
* kDialog1Bounds
@@ -120,16 +147,6 @@
*/
Rectangle2 kDialog2Bounds[2];
- /*
- * kInputManager
- */
- InputManager kInputManager;
-
- /*
- * kDragController
- */
- DragController kDragController;
-
public:
/*
diff -r 6f227dd9a94f -r d52a7042fa1a LightClone/ToDo.txt
--- a/LightClone/ToDo.txt Wed Sep 07 13:47:48 2011 -0700
+++ b/LightClone/ToDo.txt Wed Sep 07 16:09:39 2011 -0700
@@ -4,3 +4,4 @@
4. Main menu
5. Robot model & texture
6. Separate button images from dialog box
+7. Refactor function handling in the VM
\ No newline at end of file