# HG changeset patch
# User koryspansel
# Date 1315428468 25200
# Node ID 6f227dd9a94f9accb5a03629eaefb1551ddf0da5
# Parent fd55825393df7f2b5afcda441e7767efd76339b1
Re-add code that was lost during the transfer
diff -r fd55825393df -r 6f227dd9a94f LightClone/LightClone.vcproj
--- a/LightClone/LightClone.vcproj Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/LightClone.vcproj Wed Sep 07 13:47:48 2011 -0700
@@ -213,6 +213,10 @@
>
+
+
@@ -295,6 +299,10 @@
>
+
+
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Bot.cpp
--- a/LightClone/Source/Bot.cpp Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Bot.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -188,7 +188,7 @@
/*
* Update
*/
-void Bot::Update(float fElapsed)
+bool Bot::Update(float fElapsed)
{
if(nState == BotState_Evaluate)
{
@@ -326,6 +326,9 @@
if(kSequencer.fTimer <= 0.0f)
{
nState = BotState_Evaluate;
+ return true;
}
}
+
+ return false;
}
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Bot.h
--- a/LightClone/Source/Bot.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Bot.h Wed Sep 07 13:47:48 2011 -0700
@@ -165,7 +165,7 @@
/*
* Update
*/
- void Update(float fElapsed);
+ bool Update(float fElapsed);
private:
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Controller.cpp
--- a/LightClone/Source/Controller.cpp Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Controller.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -16,7 +16,16 @@
*/
ErrorCode Controller::Initialize()
{
- return kInputManager.Initialize(pView->GetWindow());
+ HWND kWindow = pView->GetWindow();
+
+ ErrorCode eCode = pModel->kInputManager.Initialize(kWindow);
+ if(eCode == Error_Success)
+ {
+ pModel->kInputManager.SetBounds(0, 0, (float)ScreenSizeX, (float)ScreenSizeY);
+ pModel->kInputManager.SetMouse(0.5f * ScreenSizeX, 0.5f * ScreenSizeY);
+ }
+
+ return eCode;
}
/*
@@ -24,7 +33,7 @@
*/
void Controller::Terminate()
{
- kInputManager.Terminate();
+ pModel->kInputManager.Terminate();
}
/*
@@ -40,19 +49,6 @@
sprintf_s(kBuffer, "Data\\Maps\\Map%02d.map", pModel->nCurrentLevel++);
pModel->nGameState = pModel->Load(kBuffer) ? GameState_Active : GameState_Over;
-
- /*
- bool bLoaded = pModel->Load(kBuffer);
- if(bLoaded)
- {
- pModel->nGameState = GameState_Active;
- }
- else
- {
- //TODO: Display game over dialog
- pModel->nGameState = GameState_Over;
- }
- */
}
else
@@ -60,36 +56,16 @@
{
if(pModel->nSimulationState == SimulationState_Active)
{
- pModel->GetBot()->Update(fElapsed);
-
- //TODO: Only check for requirements after an action has completed
- Environment* pEnvironment = pModel->GetEnvironment();
- if(pEnvironment->RequirementsMet())
+ if(pModel->GetBot()->Update(fElapsed))
{
- pModel->nGameState = GameState_Complete;
+ Environment* pEnvironment = pModel->GetEnvironment();
+ if(pEnvironment->RequirementsMet())
+ {
+ pModel->nGameState = GameState_Complete;
+ }
}
}
}
- else
-
- if(pModel->nGameState == GameState_Complete)
- {
- //TODO: Level is complete
- //TODO: Load next level or end game
- //pModel->nGameState = GameState_LoadMap;
- }
- else
-
- if(pModel->nGameState == GameState_Over)
- {
- //TODO: Game is over
- //pModel->nGameState = GameState_Exit;
- }
- else
-
- if(pModel->nGameState == GameState_Confirm)
- {
- }
}
/*
@@ -125,57 +101,76 @@
*/
void Controller::ProcessInput(float fElapsed)
{
- kInputManager.Update(fElapsed);
+ pModel->kInputManager.Update(fElapsed);
#if defined(_DEBUG)
- if(kInputManager.IsKeyDown(DIK_LEFT))
+ if(pModel->kInputManager.IsKeyDown(DIK_LEFT))
{
pView->UpdateCameraYaw(0.01f);
}
else
- if(kInputManager.IsKeyDown(DIK_RIGHT))
+ if(pModel->kInputManager.IsKeyDown(DIK_RIGHT))
{
pView->UpdateCameraYaw(-0.01f);
}
- if(kInputManager.IsKeyDown(DIK_UP))
+ if(pModel->kInputManager.IsKeyDown(DIK_UP))
{
pView->UpdateCameraPitch(0.01f);
}
else
- if(kInputManager.IsKeyDown(DIK_DOWN))
+ if(pModel->kInputManager.IsKeyDown(DIK_DOWN))
{
pView->UpdateCameraPitch(-0.01f);
}
- if(kInputManager.IsKeyDown(DIK_NEXT))
+ if(pModel->kInputManager.IsKeyDown(DIK_NEXT))
{
pView->UpdateCameraDistance(-0.1f);
}
else
- if(kInputManager.IsKeyDown(DIK_PRIOR))
+ if(pModel->kInputManager.IsKeyDown(DIK_PRIOR))
{
pView->UpdateCameraDistance(0.1f);
}
#endif
- const float fSensitivity = 1.5f;
- const float fDeltaX = (float)kInputManager.GetMouseDeltaX();
- const float fDeltaY = (float)kInputManager.GetMouseDeltaY();
-
- const float fMouseX = Max(0.0f, Min(pModel->fMouseX + fSensitivity * fDeltaX, (float)ScreenSizeX));
- const float fMouseY = Max(0.0f, Min(pModel->fMouseY + fSensitivity * fDeltaY, (float)ScreenSizeY));
-
- pModel->fMouseX = fMouseX;
- pModel->fMouseY = fMouseY;
+ const float fMouseX = pModel->kInputManager.GetMouseX();
+ const float fMouseY = pModel->kInputManager.GetMouseY();
if(pModel->nGameState == GameState_Active)
{
- if(kInputManager.IsButtonDown(0) && !kInputManager.WasButtonDown(0))
+ if(pModel->kInputManager.IsButtonDown(0) && !pModel->kInputManager.WasButtonDown(0))
{
+ if(pModel->kControlBounds[ControlButton_Play].Contains(fMouseX, fMouseY))
+ {
+ Start();
+ }
+ else
+
+ if(pModel->kControlBounds[ControlButton_Stop].Contains(fMouseX, fMouseY))
+ {
+ Stop();
+ }
+ else
+
+ if(pModel->kControlBounds[ControlButton_Exit].Contains(fMouseX, fMouseY))
+ {
+ pModel->nGameState = GameState_Exit;
+ }
+
+ 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;
+ }
+ }
+
for(uint32 i = 0; i < Action_Count; ++i)
{
if(pModel->kActionBounds[i].Contains(fMouseX, fMouseY))
@@ -209,44 +204,10 @@
}
}
}
-
- if(!pModel->kDragController.IsActive())
- {
- if(pModel->kControlBounds[0].Contains(fMouseX, fMouseY))
- {
- Start();
- }
- else
-
- if(pModel->kControlBounds[1].Contains(fMouseX, fMouseY))
- {
- Stop();
- }
- else
-
- if(pModel->kControlBounds[2].Contains(fMouseX, fMouseY))
- {
- pModel->nGameState = GameState_Exit;
- }
- else
-
- if(pModel->kArrowBounds[0].Contains(fMouseX, fMouseY))
- {
- const uint32 nCount = pModel->GetFunctionCount() - 1;
- pModel->nCurrentFunction = (pModel->nCurrentFunction - 1 + nCount) % nCount;
- }
- else
-
- if(pModel->kArrowBounds[1].Contains(fMouseX, fMouseY))
- {
- const uint32 nCount = pModel->GetFunctionCount() - 1;
- pModel->nCurrentFunction = (pModel->nCurrentFunction + 1) % nCount;
- }
- }
}
else
- if(!kInputManager.IsButtonDown(0) && kInputManager.WasButtonDown(0))
+ if(!pModel->kInputManager.IsButtonDown(0) && pModel->kInputManager.WasButtonDown(0))
{
if(pModel->kDragController.IsActive())
{
@@ -270,4 +231,68 @@
}
}
}
+ else
+
+ 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)
+ {
+ if(pModel->kDialog1Bounds[i].Contains(fMouseX, fMouseY))
+ {
+ if(i == 0)
+ {
+ pModel->nGameState = GameState_LoadMap;
+ }
+ }
+ }
+ }
+ }
+ else
+
+ if(pModel->nGameState == GameState_Over)
+ {
+ // 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)
+ {
+ if(pModel->kDialog1Bounds[i].Contains(fMouseX, fMouseY))
+ {
+ if(i == 0)
+ {
+ pModel->nCurrentLevel = 0;
+ pModel->nGameState = GameState_LoadMap;
+ }
+ }
+ }
+ }
+ }
+ else
+
+ if(pModel->nGameState == GameState_Confirm)
+ {
+ // check to see if button was clicked
+ if(pModel->kInputManager.IsButtonDown(0) && !pModel->kInputManager.WasButtonDown(0))
+ {
+ for(uint32 i = 0; i < sizeof(pModel->kDialog2Bounds) / sizeof(pModel->kDialog2Bounds[0]); ++i)
+ {
+ if(pModel->kDialog2Bounds[i].Contains(fMouseX, fMouseY))
+ {
+ if(i == 0)
+ {
+ pModel->nGameState = GameState_Exit;
+ }
+ else
+
+ if(i == 1)
+ {
+ pModel->nGameState = GameState_Active;
+ }
+ }
+ }
+ }
+ }
}
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Controller.h
--- a/LightClone/Source/Controller.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Controller.h Wed Sep 07 13:47:48 2011 -0700
@@ -7,7 +7,6 @@
#include "View.h"
#include "Model.h"
-#include "InputManager.h"
/*
* Controller
@@ -24,11 +23,6 @@
*/
View* pView;
- /*
- * kInputManager
- */
- InputManager kInputManager;
-
public:
/*
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Core.h
--- a/LightClone/Source/Core.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Core.h Wed Sep 07 13:47:48 2011 -0700
@@ -99,6 +99,16 @@
};
/*
+ * ControlButton
+ */
+enum
+{
+ ControlButton_Play,
+ ControlButton_Stop,
+ ControlButton_Exit,
+};
+
+/*
* ScreenSizeX
*/
const uint32 ScreenSizeX = 1280;
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/InputManager.cpp
--- a/LightClone/Source/InputManager.cpp Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/InputManager.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -5,6 +5,11 @@
#include "InputManager.h"
/*
+ * fMouseSensitivity
+ */
+static const float fMouseSensitivity = 1.5f;
+
+/*
* InputManager
*/
InputManager::InputManager()
@@ -12,6 +17,8 @@
pDirectInput = NULL;
pKeyboard = NULL;
pMouse = NULL;
+ fMouseX = 0.0f;
+ fMouseY = 0.0f;
memset(kCurrentKeyboardState, 0, sizeof(kCurrentKeyboardState));
memset(kPreviousKeyboardState, 0, sizeof(kPreviousKeyboardState));
@@ -136,23 +143,30 @@
hResult = pMouse->GetDeviceState(sizeof(kCurrentMouseState), &kCurrentMouseState);
}
}
+
+ fMouseX = Clamp(fMouseX + fMouseSensitivity * kCurrentMouseState.lX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f);
+ fMouseY = Clamp(fMouseY + fMouseSensitivity * kCurrentMouseState.lY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f);
}
}
/*
- * GetKeyboardState
+ * SetBounds
*/
-const char* InputManager::GetKeyboardState(bool bPrevious) const
+void InputManager::SetBounds(float fMinimumX, float fMinimumY, float fMaximumX, float fMaximumY)
{
- return bPrevious ? kPreviousKeyboardState : kCurrentKeyboardState;
+ kMouseBounds.X = fMinimumX;
+ kMouseBounds.Y = fMinimumY;
+ kMouseBounds.Width = fMaximumX - fMinimumX;
+ kMouseBounds.Height = fMaximumY - fMinimumY;
}
/*
- * GetMouseState
+ * SetMouse
*/
-const DIMOUSESTATE* InputManager::GetMouseState(bool bPrevious) const
+void InputManager::SetMouse(float fX, float fY)
{
- return bPrevious ? &kPreviousMouseState : &kCurrentMouseState;
+ fMouseX = Clamp(fX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f);
+ fMouseY = Clamp(fY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f);
}
/*
@@ -188,17 +202,17 @@
}
/*
- * GetMouseDeltaX
+ * GetMouseX
*/
-int32 InputManager::GetMouseDeltaX() const
+float InputManager::GetMouseX() const
{
- return (int32)kCurrentMouseState.lX;
+ return fMouseX;
}
/*
- * GetMouseDeltaY
+ * GetMouseY
*/
-int32 InputManager::GetMouseDeltaY() const
+float InputManager::GetMouseY() const
{
- return (int32)kCurrentMouseState.lY;
+ return fMouseY;
}
\ No newline at end of file
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/InputManager.h
--- a/LightClone/Source/InputManager.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/InputManager.h Wed Sep 07 13:47:48 2011 -0700
@@ -49,6 +49,21 @@
*/
DIMOUSESTATE kPreviousMouseState;
+ /*
+ * fMouseX
+ */
+ float fMouseX;
+
+ /*
+ * fMouseY
+ */
+ float fMouseY;
+
+ /*
+ * kMouseBounds
+ */
+ Rectangle2 kMouseBounds;
+
public:
/*
@@ -72,14 +87,14 @@
void Update(float fElapsed);
/*
- * GetKeyboardState
+ * SetBounds
*/
- const char* GetKeyboardState(bool bPrevious = false) const;
+ void SetBounds(float fMinimumX, float fMinimumY, float fMaximumX, float fMaximumY);
/*
- * GetMouseState
+ * SetMouse
*/
- const DIMOUSESTATE* GetMouseState(bool bPrevious = false) const;
+ void SetMouse(float fX, float fY);
/*
* IsKeyDown
@@ -102,14 +117,14 @@
bool WasButtonDown(uint32 nButton) const;
/*
- * GetMouseDeltaX
+ * GetMouseX
*/
- int32 GetMouseDeltaX() const;
+ float GetMouseX() const;
/*
- * GetMouseDeltaY
+ * GetMouseY
*/
- int32 GetMouseDeltaY() const;
+ float GetMouseY() const;
};
#endif //__INPUTMANAGER_H__
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Interface.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/Interface.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -0,0 +1,740 @@
+/*
+ * Interface
+ */
+
+#include "Interface.h"
+#include "VertexTypes.h"
+
+/*
+ * pActionTextureName
+ */
+static const char* pActionTextureName[] =
+{
+ "Data\\Textures\\Forward.tga",
+ "Data\\Textures\\RotateCW.tga",
+ "Data\\Textures\\RotateCCW.tga",
+ "Data\\Textures\\Jump.tga",
+ "Data\\Textures\\Light.tga",
+ "Data\\Textures\\Function1.tga",
+ "Data\\Textures\\Function2.tga",
+};
+
+/*
+ * pControlTextureName
+ */
+const char* pControlTextureName[] =
+{
+ "Data\\Textures\\Play.tga",
+ "Data\\Textures\\Stop.tga",
+ "Data\\Textures\\Exit.tga",
+};
+
+/*
+ * pArrowTextureName
+ */
+const char* pArrowTextureName[] =
+{
+ "Data\\Textures\\Left.tga",
+ "Data\\Textures\\Right.tga",
+};
+
+/*
+ * Interface
+ */
+Interface::Interface()
+{
+ pEffect = NULL;
+ pFont = NULL;
+ pVertexBuffer = NULL;
+ pBackgroundTexture = NULL;
+ pCursorTexture = NULL;
+ pDialog1Texture = NULL;
+ pDialog2Texture = NULL;
+
+ memset(pActionTexture, 0, sizeof(pActionTexture));
+ memset(pControlTexture, 0, sizeof(pControlTexture));
+ memset(pArrowTexture, 0, sizeof(pArrowTexture));
+}
+
+/*
+ * Initialize
+ */
+ErrorCode Interface::Initialize(RenderContext& kContext)
+{
+ ErrorCode eCode = kContext.CreateEffectFromFile("Data\\Shaders\\TexturedQuad.fx", &pEffect);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ eCode = kContext.CreateFontFromName("Courier New", 18, FW_BOLD, &pFont);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ eCode = kContext.CreateVertexBuffer(TrianglesPerFace * VerticesPerTriangle * sizeof(Vertex::Quad), D3DUSAGE_WRITEONLY, D3DPOOL_MANAGED, &pVertexBuffer);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ eCode = kContext.CreateTextureFromFile("Data\\Textures\\Background.tga", &pBackgroundTexture);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ for(uint32 i = 0; i < Action_Count; ++i)
+ {
+ eCode = kContext.CreateTextureFromFile(pActionTextureName[i], pActionTexture + i);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+ }
+
+ for(uint32 i = 0; i < sizeof(pControlTextureName) / sizeof(pControlTextureName[0]); ++i)
+ {
+ eCode = kContext.CreateTextureFromFile(pControlTextureName[i], pControlTexture + i);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+ }
+
+ for(uint32 i = 0; i < sizeof(pArrowTextureName) / sizeof(pArrowTextureName[0]); ++i)
+ {
+ eCode = kContext.CreateTextureFromFile(pArrowTextureName[i], pArrowTexture + i);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+ }
+
+ eCode = kContext.CreateTextureFromFile("Data\\Textures\\Dialog1.tga", &pDialog1Texture);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ eCode = kContext.CreateTextureFromFile("Data\\Textures\\Dialog2.tga", &pDialog2Texture);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ eCode = kContext.CreateTextureFromFile("Data\\Textures\\Arrow.tga", &pCursorTexture);
+ if(eCode != Error_Success)
+ {
+ Terminate();
+ return Error_Fail;
+ }
+
+ return SetupVertexBuffer();
+}
+
+/*
+ * Terminate
+ */
+void Interface::Terminate()
+{
+ if(pCursorTexture)
+ {
+ pCursorTexture->Release();
+ pCursorTexture = NULL;
+ }
+
+ if(pDialog1Texture)
+ {
+ pDialog1Texture->Release();
+ pDialog1Texture = NULL;
+ }
+
+ if(pDialog2Texture)
+ {
+ pDialog2Texture->Release();
+ pDialog2Texture = NULL;
+ }
+
+ for(uint32 i = 0; i < sizeof(pArrowTexture) / sizeof(pArrowTexture[0]); ++i)
+ {
+ if(pArrowTexture[i])
+ {
+ pArrowTexture[i]->Release();
+ pArrowTexture[i] = NULL;
+ }
+ }
+
+ for(uint32 i = 0; i < sizeof(pControlTexture) / sizeof(pControlTexture[0]); ++i)
+ {
+ if(pControlTexture[i])
+ {
+ pControlTexture[i]->Release();
+ pControlTexture[i] = NULL;
+ }
+ }
+
+ for(uint32 i = 0; i < Action_Count; ++i)
+ {
+ if(pActionTexture[i])
+ {
+ pActionTexture[i]->Release();
+ pActionTexture[i] = NULL;
+ }
+ }
+
+ if(pBackgroundTexture)
+ {
+ pBackgroundTexture->Release();
+ pBackgroundTexture = NULL;
+ }
+
+ if(pVertexBuffer)
+ {
+ pVertexBuffer->Release();
+ pVertexBuffer = NULL;
+ }
+
+ if(pFont)
+ {
+ pFont->Release();
+ pFont = NULL;
+ }
+
+ if(pEffect)
+ {
+ pEffect->Release();
+ pEffect = NULL;
+ }
+}
+
+/*
+ * Render
+ */
+void Interface::Render(RenderContext& kContext, Model* pModel)
+{
+ kContext.SetupCamera2D(pEffect);
+
+ uint32 nPasses = 0;
+
+ pEffect->SetTechnique(pEffect->GetTechnique(0));
+ pEffect->Begin(&nPasses, 0);
+ pEffect->BeginPass(0);
+
+ RenderBackground(kContext, pModel);
+ RenderToolbar(kContext, pModel);
+ RenderMain(kContext, pModel);
+ RenderFunctions(kContext, pModel);
+ RenderControls(kContext, pModel);
+
+ if(pModel->nGameState == GameState_Active)
+ {
+ }
+ else
+
+ if(pModel->nGameState == GameState_Complete)
+ {
+ char kMessage[256];
+ sprintf_s(kMessage, "Congratulations!\nYou have completed level %d", pModel->nCurrentLevel);
+
+ RenderDialog(kContext, pModel, kMessage, "Ok");
+ //RenderLevelDialog(kContext, pModel);
+ }
+ else
+
+ if(pModel->nGameState == GameState_Over)
+ {
+ const char* pMessage = "Congratulations!\nYou have won the game!";
+
+ RenderDialog(kContext, pModel, pMessage, "Ok");
+ //RenderGameOverDialog(kContext, pModel);
+ }
+ else
+
+ if(pModel->nGameState == GameState_Confirm)
+ {
+ const char* pMessage = "Are you sure you want to quit the game?";
+
+ RenderDialog(kContext, pModel, pMessage, "Yes", "No");
+ //RenderConfirmExitDialog(kContext, pModel);
+ }
+
+ RenderCursor(kContext, pModel);
+
+ pEffect->EndPass();
+ pEffect->End();
+}
+
+/*
+ * SetupVertexBuffer
+ */
+ErrorCode Interface::SetupVertexBuffer()
+{
+ Vertex::Quad* pVertices = NULL;
+
+ HRESULT hResult = pVertexBuffer->Lock(0, 0, (void**)&pVertices, D3DLOCK_DISCARD);
+ if(FAILED(hResult))
+ {
+ return Error_Fail;
+ }
+
+ pVertices[0] = Vertex::Quad(+0.0f, -1.0f, 1.0f, 0.0f, 1.0f);
+ pVertices[1] = Vertex::Quad(+0.0f, +0.0f, 1.0f, 0.0f, 0.0f);
+ pVertices[2] = Vertex::Quad(+1.0f, +0.0f, 1.0f, 1.0f, 0.0f);
+ pVertices[3] = Vertex::Quad(+0.0f, -1.0f, 1.0f, 0.0f, 1.0f);
+ pVertices[4] = Vertex::Quad(+1.0f, +0.0f, 1.0f, 1.0f, 0.0f);
+ pVertices[5] = Vertex::Quad(+1.0f, -1.0f, 1.0f, 1.0f, 1.0f);
+
+ pVertexBuffer->Unlock();
+
+ return Error_Success;
+}
+
+/*
+ * RenderBackground
+ */
+void Interface::RenderBackground(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ const float fWidth = 304.0f;//10.0f * ScreenSizeX / 26.0f;
+ const float fHeight = ScreenSizeY;
+ const float fX = ScreenSizeX - fWidth;
+ const float fY = 0.0f;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fWidth, fHeight, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + fX + 0.5f, 0.5f * ScreenSizeY - fY + 0.5f, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pBackgroundTexture);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+}
+
+/*
+ * RenderToolbar
+ */
+void Interface::RenderToolbar(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ for(uint32 i = 0; i < Action_Count; ++i)
+ {
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, pModel->kActionBounds[i].Width, pModel->kActionBounds[i].Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kActionBounds[i].X, 0.5f * ScreenSizeY - pModel->kActionBounds[i].Y, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pActionTexture[i]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+}
+
+/*
+ * RenderMain
+ */
+void Interface::RenderMain(RenderContext& kContext, Model* pModel)
+{
+ Code* pCode = pModel->GetFunction(0);
+ if(pCode)
+ {
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ for(uint32 i = 0; i < Max(pCode->GetSize(), 16U); ++i)
+ {
+ const uint32 nAction = pCode->GetSlot(i);
+
+ if(Action_Forward <= nAction && nAction <= Action_FunctionB)
+ {
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, pModel->kMainBounds[i].Width, pModel->kMainBounds[i].Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kMainBounds[i].X, 0.5f * ScreenSizeY - pModel->kMainBounds[i].Y, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pActionTexture[nAction - Action_Forward]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+ }
+
+ RECT kRectangle;
+ kRectangle.left = 1008;
+ kRectangle.top = 199;
+ kRectangle.right = kRectangle.left + 200;
+ kRectangle.bottom = kRectangle.top + 200;
+
+ pFont->DrawTextA(NULL, "Main", -1, &kRectangle, 0, D3DCOLOR_XRGB(0, 0, 0));
+ }
+}
+
+/*
+ * RenderFunctions
+ */
+void Interface::RenderFunctions(RenderContext& kContext, Model* pModel)
+{
+ Code* pCode = pModel->GetFunction(pModel->nCurrentFunction + 1);
+ if(pCode)
+ {
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ for(uint32 i = 0; i < Max(pCode->GetSize(), 8U); ++i)
+ {
+ const uint32 nAction = pCode->GetSlot(i);
+
+ if(Action_Forward <= nAction && nAction <= Action_FunctionB)
+ {
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, pModel->kFunctionBounds[i].Width, pModel->kFunctionBounds[i].Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kFunctionBounds[i].X, 0.5f * ScreenSizeY - pModel->kFunctionBounds[i].Y, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pActionTexture[nAction - Action_Forward]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+ }
+
+ for(uint32 i = 0; i < sizeof(pModel->kArrowBounds) / sizeof(pModel->kArrowBounds[0]); ++i)
+ {
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, pModel->kArrowBounds[i].Width, pModel->kArrowBounds[i].Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kArrowBounds[i].X, 0.5f * ScreenSizeY - pModel->kArrowBounds[i].Y, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pArrowTexture[i]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+
+ RECT kRectangle;
+
+ kRectangle.left = 1008;
+ kRectangle.top = 472;
+ kRectangle.right = kRectangle.left + 200;
+ kRectangle.bottom = kRectangle.top + 200;
+
+ pFont->DrawTextA(NULL, "Function", -1, &kRectangle, 0, D3DCOLOR_XRGB(0, 0, 0));
+
+ char kBuffer[16];
+ sprintf_s(kBuffer, "%d", pModel->nCurrentFunction + 1);
+
+ kRectangle.left = 1225;
+ kRectangle.top = 473;
+ kRectangle.right = kRectangle.left + 200;
+ kRectangle.bottom = kRectangle.top + 200;
+
+ pFont->DrawTextA(NULL, kBuffer, -1, &kRectangle, 0, D3DCOLOR_XRGB(0, 0, 0));
+ }
+}
+
+/*
+ * RenderControls
+ */
+void Interface::RenderControls(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ for(uint32 i = 0; i < sizeof(pModel->kControlBounds) / sizeof(pModel->kControlBounds[0]); ++i)
+ {
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, pModel->kControlBounds[i].Width, pModel->kControlBounds[i].Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kControlBounds[i].X, 0.5f * ScreenSizeY - pModel->kControlBounds[i].Y, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pControlTexture[i]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+}
+
+/*
+ * RenderLevelDialog
+ */
+void Interface::RenderLevelDialog(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ D3DSURFACE_DESC kDescriptor;
+ pDialog1Texture->GetLevelDesc(0, &kDescriptor);
+
+ const float fSizeX = (float)kDescriptor.Width;
+ const float fSizeY = (float)kDescriptor.Height;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * fSizeX, 0.5f * fSizeY, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pDialog1Texture);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+
+ RECT kRectangle;
+
+ kRectangle.left = ScreenSizeX / 2;
+ kRectangle.top = ScreenSizeY / 2 - 24;
+ kRectangle.right = ScreenSizeX / 2;
+ kRectangle.bottom = ScreenSizeY / 2 - 24;
+
+ char kMessage[256];
+ sprintf_s(kMessage, "Congratulations!\nYou have completed level %d", pModel->nCurrentLevel);
+
+ pFont->DrawTextA(NULL, kMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER | DT_CALCRECT, D3DCOLOR_XRGB(0, 0, 0));
+ pFont->DrawTextA(NULL, kMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(0, 0, 0));
+
+ //RenderDialog(kContext, pModel, kMessage, "Ok");
+}
+
+/*
+ * RenderGameOverDialog
+ */
+void Interface::RenderGameOverDialog(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ D3DSURFACE_DESC kDescriptor;
+ pDialog1Texture->GetLevelDesc(0, &kDescriptor);
+
+ const float fSizeX = (float)kDescriptor.Width;
+ const float fSizeY = (float)kDescriptor.Height;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * fSizeX, 0.5f * fSizeY, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pDialog1Texture);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+
+ RECT kRectangle;
+
+ kRectangle.left = ScreenSizeX / 2;
+ kRectangle.top = ScreenSizeY / 2 - 24;
+ kRectangle.right = ScreenSizeX / 2;
+ kRectangle.bottom = ScreenSizeY / 2 - 24;
+
+ const char* pMessage = "Congratulations!\nYou have won the game!";
+
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER | DT_CALCRECT, D3DCOLOR_XRGB(0, 0, 0));
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(0, 0, 0));
+
+ //RenderDialog(kContext, pModel, pMessage, "Ok");
+}
+
+/*
+ * RenderConfirmExitDialog
+ */
+void Interface::RenderConfirmExitDialog(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ D3DSURFACE_DESC kDescriptor;
+ pDialog1Texture->GetLevelDesc(0, &kDescriptor);
+
+ const float fSizeX = (float)kDescriptor.Width;
+ const float fSizeY = (float)kDescriptor.Height;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * fSizeX, 0.5f * fSizeY, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pDialog1Texture);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+
+ RECT kRectangle;
+
+ kRectangle.left = ScreenSizeX / 2;
+ kRectangle.top = ScreenSizeY / 2 - 24;
+ kRectangle.right = ScreenSizeX / 2;
+ kRectangle.bottom = ScreenSizeY / 2 - 24;
+
+ const char* pMessage = "Are you sure you want to quit the game?";
+
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER | DT_CALCRECT, D3DCOLOR_XRGB(0, 0, 0));
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(0, 0, 0));
+
+ //RenderDialog(kContext, pModel, pMessage, "Yes", "No");
+}
+
+/*
+ * RenderDialog
+ */
+void Interface::RenderDialog(RenderContext& kContext, Model* pModel, const char* pMessage, const char* pChoiceA, const char* pChoiceB)
+{
+ if(pMessage && pChoiceA)
+ {
+ IDirect3DTexture9* pTexture = pChoiceB ? pDialog2Texture : pDialog1Texture;
+
+ D3DSURFACE_DESC kDescriptor;
+ pTexture->GetLevelDesc(0, &kDescriptor);
+
+ const float fSizeX = (float)kDescriptor.Width;
+ const float fSizeY = (float)kDescriptor.Height;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * fSizeX, 0.5f * fSizeY, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pTexture);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &D3DXVECTOR4(1.0f, 1.0f, 1.0f, 1.0f));
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+
+ RECT kRectangle;
+
+ kRectangle.left = ScreenSizeX / 2;
+ kRectangle.top = ScreenSizeY / 2 - 24;
+ kRectangle.right = ScreenSizeX / 2;
+ kRectangle.bottom = ScreenSizeY / 2 - 24;
+
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER | DT_CALCRECT, D3DCOLOR_XRGB(0, 0, 0));
+ pFont->DrawTextA(NULL, pMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(0, 0, 0));
+
+ //TODO: Render button text
+ }
+}
+
+/*
+ * RenderCursor
+ */
+void Interface::RenderCursor(RenderContext& kContext, Model* pModel)
+{
+ const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
+
+ if(pCursorTexture)
+ {
+ const float fMouseX = pModel->kInputManager.GetMouseX();
+ const float fMouseY = pModel->kInputManager.GetMouseY();
+
+ if(pModel->kDragController.IsActive())
+ {
+ const uint32 nAction = pModel->kDragController.GetParameter() - Action_Forward;
+
+ D3DSURFACE_DESC kDescriptor;
+ pActionTexture[nAction]->GetLevelDesc(0, &kDescriptor);
+
+ const float fSizeX = (float)kDescriptor.Width;
+ const float fSizeY = (float)kDescriptor.Height;
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + (fMouseX - 0.5f * fSizeX) + 0.5f, 0.5f * ScreenSizeY - (fMouseY - 0.5f * fSizeY) + 0.5f, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pActionTexture[nAction]);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+
+ D3DSURFACE_DESC kDescriptor;
+ pCursorTexture->GetLevelDesc(0, &kDescriptor);
+
+ D3DXMATRIX kScale;
+ D3DXMatrixScaling(&kScale, (float)kDescriptor.Width, (float)kDescriptor.Height, 1.0f);
+
+ D3DXMATRIX kTranslate;
+ D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + fMouseX + 0.5f, 0.5f * ScreenSizeY - fMouseY + 0.5f, 0.0f);
+
+ D3DXMATRIX kWorldMatrix;
+ D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
+
+ pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pCursorTexture);
+ pEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Quad::Declaration, pVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
+ }
+}
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Interface.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LightClone/Source/Interface.h Wed Sep 07 13:47:48 2011 -0700
@@ -0,0 +1,149 @@
+/*
+ * Interface
+ */
+
+#ifndef __INTERFACE_H__
+#define __INTERFACE_H__
+
+#include "Core.h"
+#include "RenderContext.h"
+#include "Model.h"
+
+/*
+ * Interface
+ */
+class Interface
+{
+private:
+
+ /*
+ * pEffect
+ */
+ ID3DXEffect* pEffect;
+
+ /*
+ * pFont
+ */
+ ID3DXFont* pFont;
+
+ /*
+ * pVertexBuffer
+ */
+ IDirect3DVertexBuffer9* pVertexBuffer;
+
+ /*
+ * pBackgroundTexture
+ */
+ IDirect3DTexture9* pBackgroundTexture;
+
+ /*
+ * pActionTexture
+ */
+ IDirect3DTexture9* pActionTexture[Action_Count];
+
+ /*
+ * pControlTexture
+ */
+ IDirect3DTexture9* pControlTexture[3];
+
+ /*
+ * pArrowTexture
+ */
+ IDirect3DTexture9* pArrowTexture[2];
+
+ /*
+ * pDialog1Texture
+ */
+ IDirect3DTexture9* pDialog1Texture;
+
+ /*
+ * pDialog2Texture
+ */
+ IDirect3DTexture9* pDialog2Texture;
+
+ /*
+ * pCursorTexture
+ */
+ IDirect3DTexture9* pCursorTexture;
+
+public:
+
+ /*
+ * Interface
+ */
+ Interface();
+
+ /*
+ * Initialize
+ */
+ ErrorCode Initialize(RenderContext& kContext);
+
+ /*
+ * Terminate
+ */
+ void Terminate();
+
+ /*
+ * Render
+ */
+ void Render(RenderContext& kContext, Model* pModel);
+
+private:
+
+ /*
+ * SetupVertexBuffer
+ */
+ ErrorCode SetupVertexBuffer();
+
+ /*
+ * RenderBackground
+ */
+ void RenderBackground(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderToolbar
+ */
+ void RenderToolbar(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderMain
+ */
+ void RenderMain(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderFunctions
+ */
+ void RenderFunctions(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderControls
+ */
+ void RenderControls(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderLevelDialog
+ */
+ void RenderLevelDialog(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderGameOverDialog
+ */
+ void RenderGameOverDialog(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderConfirmExitDialog
+ */
+ void RenderConfirmExitDialog(RenderContext& kContext, Model* pModel);
+
+ /*
+ * RenderDialog
+ */
+ void RenderDialog(RenderContext& kContext, Model* pModel, const char* pMessage, const char* pChoiceA, const char* pChoiceB = NULL);
+
+ /*
+ * RenderCursor
+ */
+ void RenderCursor(RenderContext& kContext, Model* pModel);
+};
+
+#endif //__INTERFACE_H__
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Model.cpp
--- a/LightClone/Source/Model.cpp Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Model.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -12,8 +12,6 @@
nGameState = GameState_Active;
nSimulationState = SimulationState_Idle;
pFunction = 0;
- fMouseX = 0.5f * ScreenSizeX;
- fMouseY = 0.5f * ScreenSizeY;
nCurrentFunction = 0;
nCurrentLevel = 0;
@@ -58,6 +56,11 @@
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);
}
/*
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/Model.h
--- a/LightClone/Source/Model.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/Model.h Wed Sep 07 13:47:48 2011 -0700
@@ -10,6 +10,7 @@
#include "Environment.h"
#include "Code.h"
#include "Loader.h"
+#include "InputManager.h"
#include "DragController.h"
/*
@@ -110,14 +111,19 @@
Rectangle2 kControlBounds[3];
/*
- * fMouseX
+ * kDialog1Bounds
*/
- float fMouseX;
+ Rectangle2 kDialog1Bounds[1];
/*
- * fMouseY
+ * kDialog2Bounds
*/
- float fMouseY;
+ Rectangle2 kDialog2Bounds[2];
+
+ /*
+ * kInputManager
+ */
+ InputManager kInputManager;
/*
* kDragController
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/View.cpp
--- a/LightClone/Source/View.cpp Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/View.cpp Wed Sep 07 13:47:48 2011 -0700
@@ -16,39 +16,6 @@
static const TCHAR* kCaption = L"LightClone";
/*
- * pActionTextureName
- */
-static const char* pActionTextureName[] =
-{
- "Data\\Textures\\Forward.tga",
- "Data\\Textures\\RotateCW.tga",
- "Data\\Textures\\RotateCCW.tga",
- "Data\\Textures\\Jump.tga",
- "Data\\Textures\\Light.tga",
- "Data\\Textures\\Function1.tga",
- "Data\\Textures\\Function2.tga",
-};
-
-/*
- * pControlTextureName
- */
-const char* pControlTextureName[] =
-{
- "Data\\Textures\\Play.tga",
- "Data\\Textures\\Stop.tga",
- "Data\\Textures\\Exit.tga",
-};
-
-/*
- * pArrowTextureName
- */
-const char* pArrowTextureName[] =
-{
- "Data\\Textures\\Left.tga",
- "Data\\Textures\\Right.tga",
-};
-
-/*
* pView
*/
View* View::pView = NULL;
@@ -62,19 +29,8 @@
kWindow = NULL;
pBlockEffect = NULL;
- pInterfaceEffect = NULL;
- pInterfaceFont = NULL;
pBlockVertexBuffer = NULL;
- pInterfaceVertexBuffer = NULL;
pBlockTexture = NULL;
- pBackgroundTexture = NULL;
- pDialog1Texture = NULL;
- pDialog2Texture = NULL;
- pCursorTexture = NULL;
-
- memset(pActionTextures, 0, sizeof(pActionTextures));
- memset(pControlTextures, 0, sizeof(pControlTextures));
- memset(pArrowTextures, 0, sizeof(pArrowTextures));
}
/*
@@ -146,20 +102,6 @@
return Error_Fail;
}
- eCode = kContext.CreateEffectFromFile("Data\\Shaders\\TexturedQuad.fx", &pInterfaceEffect);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
- eCode = kContext.CreateFontFromName("Courier New", 18, FW_BOLD, &pInterfaceFont);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
eCode = kContext.CreateTextureFromFile("Data\\Textures\\Block02.tga", &pBlockTexture);
if(eCode != Error_Success)
{
@@ -167,64 +109,6 @@
return Error_Fail;
}
- eCode = kContext.CreateTextureFromFile("Data\\Textures\\Background00.tga", &pBackgroundTexture);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
- for(uint32 i = 0; i < Action_Count; ++i)
- {
- eCode = kContext.CreateTextureFromFile(pActionTextureName[i], pActionTextures + i);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
- }
-
- for(uint32 i = 0; i < sizeof(pControlTextureName) / sizeof(pControlTextureName[0]); ++i)
- {
- eCode = kContext.CreateTextureFromFile(pControlTextureName[i], pControlTextures + i);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
- }
-
- for(uint32 i = 0; i < sizeof(pArrowTextureName) / sizeof(pArrowTextureName[0]); ++i)
- {
- eCode = kContext.CreateTextureFromFile(pArrowTextureName[i], pArrowTextures + i);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
- }
-
- eCode = kContext.CreateTextureFromFile("Data\\Textures\\Dialog1.tga", &pDialog1Texture);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
- eCode = kContext.CreateTextureFromFile("Data\\Textures\\Dialog2.tga", &pDialog2Texture);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
- eCode = kContext.CreateTextureFromFile("Data\\Textures\\Arrow.tga", &pCursorTexture);
- if(eCode != Error_Success)
- {
- Terminate();
- return Error_Fail;
- }
-
eCode = kContext.CreateVertexBuffer(VerticesPerBlock * sizeof(Vertex::Block), D3DUSAGE_WRITEONLY, D3DPOOL_MANAGED, &pBlockVertexBuffer);
if(eCode != Error_Success)
{
@@ -232,14 +116,14 @@
return Error_Fail;
}
- eCode = kContext.CreateVertexBuffer(TrianglesPerFace * VerticesPerTriangle * sizeof(Vertex::Quad), D3DUSAGE_WRITEONLY, D3DPOOL_MANAGED, &pInterfaceVertexBuffer);
+ eCode = SetupVertexBuffer();
if(eCode != Error_Success)
{
Terminate();
return Error_Fail;
}
- return SetupVertexBuffers();
+ return kInterface.Initialize(kContext);
}
/*
@@ -247,56 +131,7 @@
*/
void View::Terminate()
{
- if(pCursorTexture)
- {
- pCursorTexture->Release();
- pCursorTexture = NULL;
- }
-
- if(pDialog1Texture)
- {
- pDialog1Texture->Release();
- pDialog1Texture = NULL;
- }
-
- if(pDialog2Texture)
- {
- pDialog2Texture->Release();
- pDialog2Texture = NULL;
- }
-
- for(uint32 i = 0; i < sizeof(pArrowTextures) / sizeof(pArrowTextures[0]); ++i)
- {
- if(pArrowTextures[i])
- {
- pArrowTextures[i]->Release();
- pArrowTextures[i] = NULL;
- }
- }
-
- for(uint32 i = 0; i < sizeof(pControlTextures) / sizeof(pControlTextures[0]); ++i)
- {
- if(pControlTextures[i])
- {
- pControlTextures[i]->Release();
- pControlTextures[i] = NULL;
- }
- }
-
- for(uint32 i = 0; i < Action_Count; ++i)
- {
- if(pActionTextures[i])
- {
- pActionTextures[i]->Release();
- pActionTextures[i] = NULL;
- }
- }
-
- if(pBackgroundTexture)
- {
- pBackgroundTexture->Release();
- pBackgroundTexture = NULL;
- }
+ kInterface.Terminate();
if(pBlockTexture)
{
@@ -304,30 +139,12 @@
pBlockTexture = NULL;
}
- if(pInterfaceVertexBuffer)
- {
- pInterfaceVertexBuffer->Release();
- pInterfaceVertexBuffer = NULL;
- }
-
if(pBlockVertexBuffer)
{
pBlockVertexBuffer->Release();
pBlockVertexBuffer = NULL;
}
- if(pInterfaceFont)
- {
- pInterfaceFont->Release();
- pInterfaceFont = NULL;
- }
-
- if(pInterfaceEffect)
- {
- pInterfaceEffect->Release();
- pInterfaceEffect = NULL;
- }
-
if(pBlockEffect)
{
pBlockEffect->Release();
@@ -391,86 +208,65 @@
}
/*
- * SetupVertexBuffers
+ * SetupVertexBuffer
*/
-ErrorCode View::SetupVertexBuffers()
+ErrorCode View::SetupVertexBuffer()
{
+ Vertex::Block* pVertices = NULL;
+
+ HRESULT hResult = pBlockVertexBuffer->Lock(0, 0, (void**)&pVertices, D3DLOCK_DISCARD);
+ if(FAILED(hResult))
{
- Vertex::Block* pVertices = NULL;
-
- HRESULT hResult = pBlockVertexBuffer->Lock(0, 0, (void**)&pVertices, D3DLOCK_DISCARD);
- if(FAILED(hResult))
- {
- return Error_Fail;
- }
-
- const float fU1 = 0.66f;
- const float fV1 = 0.66f;
-
- // front
- pVertices[0] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 1.00f);
- pVertices[1] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 0.66f);
- pVertices[2] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 0.66f);
- pVertices[3] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 1.00f);
- pVertices[4] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 0.66f);
- pVertices[5] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 1.00f);
- // back
- pVertices[6] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 1.00f);
- pVertices[7] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 0.66f);
- pVertices[8] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 0.66f);
- pVertices[9] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 1.00f);
- pVertices[10] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 0.66f);
- pVertices[11] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 1.00f);
- // left
- pVertices[12] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
- pVertices[13] = Vertex::Block(-0.5f, 1.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 0.66f);
- pVertices[14] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
- pVertices[15] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
- pVertices[16] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
- pVertices[17] = Vertex::Block(-0.5f, 0.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 1.00f);
- // right
- pVertices[18] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
- pVertices[19] = Vertex::Block(+0.5f, 1.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 0.66f);
- pVertices[20] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
- pVertices[21] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
- pVertices[22] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
- pVertices[23] = Vertex::Block(+0.5f, 0.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 1.00f);
- // top
- pVertices[24] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.66f);
- pVertices[25] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.00f);
- pVertices[26] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.00f);
- pVertices[27] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.66f);
- pVertices[28] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.00f);
- pVertices[29] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.66f);
- // bottom
- pVertices[30] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.66f);
- pVertices[31] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.00f);
- pVertices[32] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.00f);
- pVertices[33] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.66f);
- pVertices[34] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.00f);
- pVertices[35] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.66f);
-
- pBlockVertexBuffer->Unlock();
+ return Error_Fail;
}
- {
- Vertex::Quad* pVertices = NULL;
-
- HRESULT hResult = pInterfaceVertexBuffer->Lock(0, 0, (void**)&pVertices, D3DLOCK_DISCARD);
- if(FAILED(hResult))
- {
- return Error_Fail;
- }
+ const float fU1 = 0.66f;
+ const float fV1 = 0.66f;
- pVertices[0] = Vertex::Quad(+0.0f, -1.0f, 1.0f, 0.0f, 1.0f);
- pVertices[1] = Vertex::Quad(+0.0f, +0.0f, 1.0f, 0.0f, 0.0f);
- pVertices[2] = Vertex::Quad(+1.0f, +0.0f, 1.0f, 1.0f, 0.0f);
- pVertices[3] = Vertex::Quad(+0.0f, -1.0f, 1.0f, 0.0f, 1.0f);
- pVertices[4] = Vertex::Quad(+1.0f, +0.0f, 1.0f, 1.0f, 0.0f);
- pVertices[5] = Vertex::Quad(+1.0f, -1.0f, 1.0f, 1.0f, 1.0f);
+ // front
+ pVertices[0] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 1.00f);
+ pVertices[1] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 0.66f);
+ pVertices[2] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 0.66f);
+ pVertices[3] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 0.00f, 1.00f);
+ pVertices[4] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 0.66f);
+ pVertices[5] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 1.00f, 1.00f);
+ // back
+ pVertices[6] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 1.00f);
+ pVertices[7] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 0.66f);
+ pVertices[8] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 0.66f);
+ pVertices[9] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 0.00f, 1.00f);
+ pVertices[10] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 0.66f);
+ pVertices[11] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 1.00f, 1.00f);
+ // left
+ pVertices[12] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
+ pVertices[13] = Vertex::Block(-0.5f, 1.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[14] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
+ pVertices[15] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
+ pVertices[16] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
+ pVertices[17] = Vertex::Block(-0.5f, 0.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1.00f, 1.00f);
+ // right
+ pVertices[18] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
+ pVertices[19] = Vertex::Block(+0.5f, 1.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[20] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
+ pVertices[21] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0.00f, 1.00f);
+ pVertices[22] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 0.66f);
+ pVertices[23] = Vertex::Block(+0.5f, 0.0f, +0.5f, +1.0f, 0.0f, 0.0f, 1.00f, 1.00f);
+ // top
+ pVertices[24] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[25] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.00f);
+ pVertices[26] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.00f);
+ pVertices[27] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[28] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.00f);
+ pVertices[29] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 1.00f, 0.66f);
+ // bottom
+ pVertices[30] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[31] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.00f);
+ pVertices[32] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.00f);
+ pVertices[33] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 0.00f, 0.66f);
+ pVertices[34] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.00f);
+ pVertices[35] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 1.00f, 0.66f);
- pInterfaceVertexBuffer->Unlock();
- }
+ pBlockVertexBuffer->Unlock();
return Error_Success;
}
@@ -505,44 +301,7 @@
*/
void View::Render2D()
{
- Environment* pEnvironment = pModel->GetEnvironment();
- if(pEnvironment)
- {
- Bot* pBot = pModel->GetBot();
- if(pBot)
- {
- kContext.SetupCamera2D(pInterfaceEffect);
-
- uint32 nPasses = 0;
-
- pInterfaceEffect->SetTechnique(pInterfaceEffect->GetTechnique(0));
- pInterfaceEffect->Begin(&nPasses, 0);
- pInterfaceEffect->BeginPass(0);
-
- //RenderControlPanel();
- RenderBackground();
- RenderToolbar();
- RenderMain();
- RenderFunction();
- RenderControls();
-
- if(pModel->nGameState == GameState_Complete)
- {
- RenderLevelDialog();
- }
- else
-
- if(pModel->nGameState == GameState_Over)
- {
- RenderGameOverDialog();
- }
-
- RenderCursor();
-
- pInterfaceEffect->EndPass();
- pInterfaceEffect->End();
- }
- }
+ kInterface.Render(kContext, pModel);
}
/*
@@ -589,7 +348,19 @@
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScaleMatrix, &kTranslateMatrix);
- RenderBlock(kWorldMatrix, nColor);
+ const float fAlpha = ((nColor >> 24) & 0xFF) / 255.0f;
+ const float fRed = ((nColor >> 16) & 0xFF) / 255.0f;
+ const float fGreen = ((nColor >> 8 ) & 0xFF) / 255.0f;
+ const float fBlue = ((nColor >> 0 ) & 0xFF) / 255.0f;
+
+ const D3DXVECTOR4 kColorVector(fRed, fGreen, fBlue, fAlpha);
+
+ pBlockEffect->SetMatrix(pBlockEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pBlockEffect->SetVector(pBlockEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pBlockEffect->SetTexture(pBlockEffect->GetParameterByName(NULL, "kTexture"), pBlockTexture);
+ pBlockEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Block::Declaration, pBlockVertexBuffer, sizeof(Vertex::Block), FacesPerCube * TrianglesPerFace);
}
}
}
@@ -615,7 +386,14 @@
D3DXMATRIX kWorldMatrix;
D3DXMatrixMultiply(&kWorldMatrix, &kScaleMatrix, &kTranslateMatrix);
- RenderBlock(kWorldMatrix, D3DCOLOR_XRGB(0x00, 0x00, 0x00));
+ const D3DXVECTOR4 kColorVector(0.0f, 0.0f, 0.0f, 1.0f);
+
+ pBlockEffect->SetMatrix(pBlockEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
+ pBlockEffect->SetVector(pBlockEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
+ pBlockEffect->SetTexture(pBlockEffect->GetParameterByName(NULL, "kTexture"), pBlockTexture);
+ pBlockEffect->CommitChanges();
+
+ kContext.DrawTriangles(Vertex::Block::Declaration, pBlockVertexBuffer, sizeof(Vertex::Block), FacesPerCube * TrianglesPerFace);
}
}
}
@@ -671,336 +449,6 @@
}
/*
- * RenderBlock
- */
-void View::RenderBlock(const D3DXMATRIX& kWorldMatrix, D3DCOLOR kColor)
-{
- const float fAlpha = ((kColor >> 24) & 0xFF) / 255.0f;
- const float fRed = ((kColor >> 16) & 0xFF) / 255.0f;
- const float fGreen = ((kColor >> 8 ) & 0xFF) / 255.0f;
- const float fBlue = ((kColor >> 0 ) & 0xFF) / 255.0f;
-
- const D3DXVECTOR4 kColorVector(fRed, fGreen, fBlue, fAlpha);
-
- pBlockEffect->SetMatrix(pBlockEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pBlockEffect->SetVector(pBlockEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pBlockEffect->SetTexture(pBlockEffect->GetParameterByName(NULL, "kTexture"), pBlockTexture);
- pBlockEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Block::Declaration, pBlockVertexBuffer, sizeof(Vertex::Block), FacesPerCube * TrianglesPerFace);
-}
-
-/*
- * RenderBackground
- */
-void View::RenderBackground()
-{
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- const float fWidth = 304.0f;//10.0f * ScreenSizeX / 26.0f;
- const float fHeight = ScreenSizeY;
- const float fX = ScreenSizeX - fWidth;
- const float fY = 0.0f;
-
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, fWidth, fHeight, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + fX + 0.5f, 0.5f * ScreenSizeY - fY + 0.5f, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pBackgroundTexture);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
-}
-
-/*
- * RenderToolbar
- */
-void View::RenderToolbar()
-{
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- for(uint32 i = 0; i < Action_Count; ++i)
- {
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kActionBounds[i].Width, pModel->kActionBounds[i].Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kActionBounds[i].X, 0.5f * ScreenSizeY - pModel->kActionBounds[i].Y, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pActionTextures[i]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
-}
-
-/*
- * RenderMain
- */
-void View::RenderMain()
-{
- Code* pCode = pModel->GetFunction(0);
- if(pCode)
- {
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- for(uint32 i = 0; i < Max(pCode->GetSize(), 16U); ++i)
- {
- const uint32 nAction = pCode->GetSlot(i);
-
- if(Action_Forward <= nAction && nAction <= Action_FunctionB)
- {
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kMainBounds[i].Width, pModel->kMainBounds[i].Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kMainBounds[i].X, 0.5f * ScreenSizeY - pModel->kMainBounds[i].Y, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pActionTextures[nAction - Action_Forward]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
- }
- }
-}
-
-/*
- * RenderFunction();
- */
-void View::RenderFunction()
-{
- Code* pCode = pModel->GetFunction(pModel->nCurrentFunction + 1);
- if(pCode)
- {
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- for(uint32 i = 0; i < Max(pCode->GetSize(), 8U); ++i)
- {
- const uint32 nAction = pCode->GetSlot(i);
-
- if(Action_Forward <= nAction && nAction <= Action_FunctionB)
- {
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kFunctionBounds[i].Width, pModel->kFunctionBounds[i].Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kFunctionBounds[i].X, 0.5f * ScreenSizeY - pModel->kFunctionBounds[i].Y, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pActionTextures[nAction - Action_Forward]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
- }
- }
-}
-
-/*
- * RenderControls
- */
-void View::RenderControls()
-{
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- for(uint32 i = 0; i < sizeof(pModel->kControlBounds) / sizeof(pModel->kControlBounds[0]); ++i)
- {
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kControlBounds[i].Width, pModel->kControlBounds[i].Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kControlBounds[i].X, 0.5f * ScreenSizeY - pModel->kControlBounds[i].Y, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pControlTextures[i]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
-
- for(uint32 i = 0; i < sizeof(pModel->kArrowBounds) / sizeof(pModel->kArrowBounds[0]); ++i)
- {
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, pModel->kArrowBounds[i].Width, pModel->kArrowBounds[i].Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->kArrowBounds[i].X, 0.5f * ScreenSizeY - pModel->kArrowBounds[i].Y, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pArrowTextures[i]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
-
- const uint32 nColor = D3DCOLOR_XRGB(0, 0, 0);
-
- RECT kRectangle;
-
- kRectangle.left = 1008;
- kRectangle.top = 199;
- kRectangle.right = kRectangle.left + 200;
- kRectangle.bottom = kRectangle.top + 200;
-
- pInterfaceFont->DrawTextA(NULL, "Main", -1, &kRectangle, 0, nColor);
-
- kRectangle.left = 1008;
- kRectangle.top = 472;
- kRectangle.right = kRectangle.left + 200;
- kRectangle.bottom = kRectangle.top + 200;
-
- pInterfaceFont->DrawTextA(NULL, "Function", -1, &kRectangle, 0, nColor);
-
- char kBuffer[16];
- sprintf_s(kBuffer, "%d", pModel->nCurrentFunction + 1);
-
- kRectangle.left = 1225;
- kRectangle.top = 473;
- kRectangle.right = kRectangle.left + 200;
- kRectangle.bottom = kRectangle.top + 200;
-
- pInterfaceFont->DrawTextA(NULL, kBuffer, -1, &kRectangle, 0, nColor);
-}
-
-/*
- * RenderLevelDialog
- */
-void View::RenderLevelDialog()
-{
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- D3DSURFACE_DESC kDescriptor;
- pDialog1Texture->GetLevelDesc(0, &kDescriptor);
-
- const float fSizeX = (float)kDescriptor.Width;
- const float fSizeY = (float)kDescriptor.Height;
-
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 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 * fSizeX, 0.5f * fSizeY, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pDialog1Texture);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
-
- RECT kRectangle;
-
- kRectangle.left = ScreenSizeX / 2;
- kRectangle.top = ScreenSizeY / 2 - 24;
- kRectangle.right = ScreenSizeX / 2;
- kRectangle.bottom = ScreenSizeY / 2 - 24;
-
- char kMessage[256];
- sprintf_s(kMessage, "Congratulations!\nYou have completed level %d", pModel->nCurrentLevel);
-
- pInterfaceFont->DrawTextA(NULL, kMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER | DT_CALCRECT, D3DCOLOR_XRGB(0, 0, 0));
- pInterfaceFont->DrawTextA(NULL, kMessage, -1, &kRectangle, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(0, 0, 0));
-}
-
-/*
- * RenderGameOverDialog
- */
-void View::RenderGameOverDialog()
-{
-}
-
-/*
- * RenderCursor
- */
-void View::RenderCursor()
-{
- const D3DXVECTOR4 kColorVector(1.0f, 1.0f, 1.0f, 1.0f);
-
- if(pCursorTexture)
- {
- if(pModel->kDragController.IsActive())
- {
- const uint32 nAction = pModel->kDragController.GetParameter() - Action_Forward;
-
- D3DSURFACE_DESC kDescriptor;
- pActionTextures[nAction]->GetLevelDesc(0, &kDescriptor);
-
- const float fSizeX = (float)kDescriptor.Width;
- const float fSizeY = (float)kDescriptor.Height;
-
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, fSizeX, fSizeY, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + (pModel->fMouseX - 0.5f * fSizeX) + 0.5f, 0.5f * ScreenSizeY - (pModel->fMouseY - 0.5f * fSizeY) + 0.5f, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pActionTextures[nAction]);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
-
- D3DSURFACE_DESC kDescriptor;
- pCursorTexture->GetLevelDesc(0, &kDescriptor);
-
- D3DXMATRIX kScale;
- D3DXMatrixScaling(&kScale, (float)kDescriptor.Width, (float)kDescriptor.Height, 1.0f);
-
- D3DXMATRIX kTranslate;
- D3DXMatrixTranslation(&kTranslate, -0.5f * ScreenSizeX + pModel->fMouseX + 0.5f, 0.5f * ScreenSizeY - pModel->fMouseY + 0.5f, 0.0f);
-
- D3DXMATRIX kWorldMatrix;
- D3DXMatrixMultiply(&kWorldMatrix, &kScale, &kTranslate);
-
- pInterfaceEffect->SetMatrix(pInterfaceEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
- pInterfaceEffect->SetVector(pInterfaceEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
- pInterfaceEffect->SetTexture(pInterfaceEffect->GetParameterByName(NULL, "kTexture"), pCursorTexture);
- pInterfaceEffect->CommitChanges();
-
- kContext.DrawTriangles(Vertex::Quad::Declaration, pInterfaceVertexBuffer, sizeof(Vertex::Quad), TrianglesPerFace);
- }
-}
-
-/*
* OnMessage
*/
LRESULT View::OnMessage(UINT nMessage, WPARAM wParam, LPARAM lParam)
diff -r fd55825393df -r 6f227dd9a94f LightClone/Source/View.h
--- a/LightClone/Source/View.h Wed Sep 07 13:02:06 2011 -0700
+++ b/LightClone/Source/View.h Wed Sep 07 13:47:48 2011 -0700
@@ -5,13 +5,11 @@
#ifndef __VIEW_H__
#define __VIEW_H__
-//#include
-//#include
-//#include
#include "Core.h"
#include "Model.h"
#include "RenderContext.h"
#include "CameraController.h"
+#include "Interface.h"
/*
* View
@@ -49,64 +47,19 @@
ID3DXEffect* pBlockEffect;
/*
- * pInterfaceEffect
- */
- ID3DXEffect* pInterfaceEffect;
-
- /*
- * pInterfaceFont
- */
- ID3DXFont* pInterfaceFont;
-
- /*
* pBlockVertexBuffer
*/
IDirect3DVertexBuffer9* pBlockVertexBuffer;
/*
- * pInterfaceVertexBuffer
- */
- IDirect3DVertexBuffer9* pInterfaceVertexBuffer;
-
- /*
* pBlockTexture
*/
IDirect3DTexture9* pBlockTexture;
/*
- * pBackgroundTexture
- */
- IDirect3DTexture9* pBackgroundTexture;
-
- /*
- * pActionTextures
- */
- IDirect3DTexture9* pActionTextures[Action_Count];
-
- /*
- * pControlTextures
- */
- IDirect3DTexture9* pControlTextures[3];
-
- /*
- * pArrowTextures
+ * kInterface
*/
- IDirect3DTexture9* pArrowTextures[2];
-
- /*
- * pDialog1Texture
- */
- IDirect3DTexture9* pDialog1Texture;
-
- /*
- * pDialog2Texture
- */
- IDirect3DTexture9* pDialog2Texture;
-
- /*
- * pCursorTexture
- */
- IDirect3DTexture9* pCursorTexture;
+ Interface kInterface;
public:
@@ -153,9 +106,9 @@
private:
/*
- * SetupVertexBuffers
+ * SetupVertexBuffer
*/
- ErrorCode SetupVertexBuffers();
+ ErrorCode SetupVertexBuffer();
/*
* Render3D