diff GUI/UI/Books/TownPortalBook.cpp @ 2548:87e5590d034b

All Books windows are refactored into respective classes
author a.parshin
date Tue, 12 May 2015 03:24:19 +0200
parents
children 0c67be4ec900
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GUI/UI/Books/TownPortalBook.cpp	Tue May 12 03:24:19 2015 +0200
@@ -0,0 +1,106 @@
+#include "Engine/Engine.h"
+#include "Engine/LOD.h"
+#include "Engine/Party.h"
+#include "Engine/texts.h"
+#include "Engine/Graphics/IRender.h"
+
+#include "GUI/GUIFont.h"
+#include "GUI/UI/Books/TownPortalBook.h"
+
+#include "IO/Mouse.h"
+
+static int pTownPortalBook_xs[6] = { 260, 324, 147, 385, 390,  19 };
+static int pTownPortalBook_ys[6] = { 206,  84, 182, 239,  17, 283 };
+static int pTownPortalBook_ws[6] = {  80,  66,  68,  72,  67,  74 };
+static int pTownPortalBook_hs[6] = {  55,  56,  65,  67,  67,  59 };
+
+GUIWindow_TownPortalBook::GUIWindow_TownPortalBook(const char *a1) :
+    GUIWindow_Book()
+{
+    this->Hint = a1; // inherited from GUIWindow::GUIWindow
+    this->ptr_1C = (void *)WINDOW_TownPortal; // inherited from GUIWindow::GUIWindow
+    BasicBookInitialization();
+
+// ----------------------------------------------
+// 00411BFC GUIWindow::InitializeBookView -- part
+    pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("townport", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[0] = pIcons_LOD->LoadTexturePtr("tpharmndy", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[1] = pIcons_LOD->LoadTexturePtr("tpelf", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[2] = pIcons_LOD->LoadTexturePtr("tpwarlock", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[3] = pIcons_LOD->LoadTexturePtr("tpisland", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[4] = pIcons_LOD->LoadTexturePtr("tpheaven", TEXTURE_16BIT_PALETTE);
+    pTexture_TownPortalIcons[5] = pIcons_LOD->LoadTexturePtr("tphell", TEXTURE_16BIT_PALETTE);
+
+    for (uint i = 0; i < 6; ++i)
+        CreateButton(
+            pTownPortalBook_xs[i],
+            pTownPortalBook_ys[i],
+            pTownPortalBook_ws[i],
+            pTownPortalBook_hs[i],
+            1, 182, UIMSG_ClickTownInTP, i, 0, "", nullptr
+        );
+}
+
+
+void GUIWindow_TownPortalBook::Update()
+{
+// -----------------------------------
+// 004156F0 GUI_UpdateWindows --- part
+// {
+//     BookUI_Draw((WindowType)(int)ptr_1C);
+// }
+
+// ----- (00413CC6) --------------------------------------------------------
+// void BookUI_Draw(WindowType book) --- part
+// {
+    pRenderer->DrawTextureIndexed(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
+//     BookUI_DrawTownPortalMap();
+
+// ----- (00411150) --------------------------------------------------------
+// void BookUI_DrawTownPortalMap()
+// {
+    int v3; // edi@17
+    GUIWindow TownPortalWindow; // [sp+Ch] [bp-64h]@1
+    POINT a2; // [sp+68h] [bp-8h]@17
+
+    pRenderer->ClearZBuffer(0, 479);
+    pRenderer->DrawTextureIndexedAlpha(8, 8, pTexture_CurrentBook);
+    pRenderer->DrawTextureIndexedAlpha(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
+
+    TownPortalWindow.uFrameX = game_viewport_x;
+    TownPortalWindow.uFrameY = game_viewport_y;
+    TownPortalWindow.uFrameWidth = game_viewport_width;
+    TownPortalWindow.uFrameHeight = game_viewport_height;
+    TownPortalWindow.uFrameZ = game_viewport_z;
+    TownPortalWindow.uFrameW = game_viewport_w;
+
+    const uint fountain_bits_lut[] =
+    {
+        PARTY_QUEST_FOUNTAIN_HARMONDALE,
+        PARTY_QUEST_FOUNTAIN_PIERPONT,
+        PARTY_QUEST_FOUNTAIN_NIGHON,
+        PARTY_QUEST_FOUNTAIN_EVENMORN_ISLE,
+        PARTY_QUEST_FOUNTAIN_CELESTIA,
+        PARTY_QUEST_FOUNTAIN_THE_PIT
+    };
+    for (uint i = 0; i < 6; ++i)
+    {
+
+        if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[i]))
+            pRenderer->DrawMaskToZBuffer(
+                pTownPortalBook_xs[i],
+                pTownPortalBook_ys[i],
+                pTexture_TownPortalIcons[i], i + 1
+            );
+    }
+
+    pMouse->GetCursorPos(&a2);
+    v3 = pRenderer->pActiveZBuffer[a2.x + pSRZBufferLineOffsets[a2.y]] & 0xFFFF;
+
+    if (v3)
+    {
+        if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[v3 - 1]))
+            pRenderer->DrawTextureIndexed(pTownPortalBook_xs[v3 - 1], pTownPortalBook_ys[v3 - 1], pTexture_TownPortalIcons[v3 - 1]);
+    }
+    TownPortalWindow.DrawTitleText(pBook2Font, 0, 22, 0, pGlobalTXT_LocalizationStrings[10], 3);
+}
\ No newline at end of file