diff GUI/UI/UIMainMenu.cpp @ 2551:4008b2f34be0

MainMenu rendering moved from event loop to respective window class
author a.parshin
date Tue, 12 May 2015 12:03:30 +0200
parents 87e5590d034b
children ac16f4a3a91e
line wrap: on
line diff
--- a/GUI/UI/UIMainMenu.cpp	Tue May 12 11:28:22 2015 +0200
+++ b/GUI/UI/UIMainMenu.cpp	Tue May 12 12:03:30 2015 +0200
@@ -1,28 +1,106 @@
 #define _CRTDBG_MAP_ALLOC
+#define _CRT_SECURE_NO_WARNINGS
 #include <stdlib.h>
 #include <crtdbg.h>
 
-#define _CRT_SECURE_NO_WARNINGS
-
 #include "Engine/Engine.h"
-
-#include "..\../IO/Mouse.h"
-#include "..\../IO/Keyboard.h"
+#include "Engine/LOD.h"
+#include "Engine/MMT.h"
+#include "Engine/texts.h"
+#include "Engine/Graphics/IRender.h"
+#include "Engine/Graphics/Viewport.h"
+#include "Engine/Graphics/PaletteManager.h"
+#include "Engine/Tables/IconFrameTable.h"
 
-#include "..\../GUI/GUIWindow.h"
-#include "..\../GUI/GUIFont.h"
-#include "..\../Media/Audio/AudioPlayer.h"
-#include "..\../Engine/Graphics/Render.h"
-#include "..\../Engine/LOD.h"
-#include "..\../Engine/Graphics/PaletteManager.h"
-#include "..\../Engine/Tables/IconFrameTable.h"
-#include "..\../Engine/texts.h"
-#include "..\../Engine/MMT.h"
+#include "IO/Mouse.h"
+#include "IO/Keyboard.h"
+
+#include "GUI/UI/UIMainMenu.h"
+#include "GUI/GUIFont.h"
+
+#include "Media/Audio/AudioPlayer.h"
 
 #include "Game/Game.h"
 #include "Game/MainMenu.h"
 
 
+
+GUIButton *pMainMenu_BtnExit = nullptr;
+GUIButton *pMainMenu_BtnCredits = nullptr;
+GUIButton *pMainMenu_BtnLoad = nullptr;
+GUIButton *pMainMenu_BtnNew = nullptr;
+
+
+
+GUIWindow_MainMenu::GUIWindow_MainMenu() :
+    GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
+{
+// -----------------------------------
+// 004627B7 void MainMenu_Loop -- part
+    Texture *pNew = pIcons_LOD->LoadTexturePtr("title_new", TEXTURE_16BIT_PALETTE);
+    Texture *pLoad = pIcons_LOD->LoadTexturePtr("title_load", TEXTURE_16BIT_PALETTE);
+    Texture *pCredits = pIcons_LOD->LoadTexturePtr("title_cred", TEXTURE_16BIT_PALETTE);
+    Texture *pExit = pIcons_LOD->LoadTexturePtr("title_exit", TEXTURE_16BIT_PALETTE);
+
+    pMainMenu_BtnNew = CreateButton(495, 172, pNew->uTextureWidth, pNew->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowPartyCreationWnd, 0, 'N', "", pNew, 0);
+    pMainMenu_BtnLoad = CreateButton(495, 227, pLoad->uTextureWidth, pLoad->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowLoadWindow, 1, 'L', "", pLoad, 0);
+    pMainMenu_BtnCredits = CreateButton(495, 282, pCredits->uTextureWidth, pCredits->uTextureHeight, 1, 0, UIMSG_ShowCredits, 2, 'C', "", pCredits, 0);
+    pMainMenu_BtnExit = CreateButton(495, 337, pExit->uTextureWidth, pExit->uTextureHeight, 1, 0, UIMSG_ExitToWindows, 3, 0, "", pExit, 0);
+}
+
+
+void GUIWindow_MainMenu::Update()
+{
+// -----------------------------------
+// 004627B7 void MainMenu_Loop -- part
+    POINT pt;
+    pMouse->GetCursorPos(&pt);
+    GUIWindow *pWindow = this;//pWindow_MainMenu;
+    if (GetCurrentMenuID() == MENU_SAVELOAD)
+        pWindow = pGUIWindow_CurrentMenu;
+
+
+    if (GetCurrentMenuID() == MENU_MAIN)
+    {
+        Texture *pTexture = nullptr;
+        if (!pModalWindow)// ???
+        {
+            auto pButton = pWindow->pControlsHead;
+            for (pButton = pWindow->pControlsHead; pButton; pButton = pButton->pNext)
+            {
+                if (pt.x >= (signed int)pButton->uX && pt.x <= (signed int)pButton->uZ
+                    && pt.y >= (signed int)pButton->uY && pt.y <= (signed int)pButton->uW
+                    && pWindow == pWindow_MainMenu)
+                {
+                    auto pControlParam = pButton->msg_param;
+                    int pY = 0;
+                    switch (pControlParam) // backlight for buttons
+                    {
+                    case 0:
+                        pTexture = pIcons_LOD->LoadTexturePtr("title_new", TEXTURE_16BIT_PALETTE);
+                        pY = 172;
+                        break;
+                    case 1:
+                        pTexture = pIcons_LOD->LoadTexturePtr("title_load", TEXTURE_16BIT_PALETTE);
+                        pY = 227;
+                        break;
+                    case 2:
+                        pTexture = pIcons_LOD->LoadTexturePtr("title_cred", TEXTURE_16BIT_PALETTE);
+                        pY = 282;
+                        break;
+                    case 3:
+                        pTexture = pIcons_LOD->LoadTexturePtr("title_exit", TEXTURE_16BIT_PALETTE);
+                        pY = 337;
+                        break;
+                    }
+                    pRenderer->DrawTextureIndexed(495, pY, pTexture);
+                }
+            }
+        }
+    }
+}
+
+
 //----- (0041B578) --------------------------------------------------------
 void MainMenuUI_LoadFontsAndSomeStuff()
 {