Mercurial > mm7
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