annotate GUI/UI/Books/TownPortalBook.cpp @ 2556:91c75d202d30

Shooting bow sound & stats word wrap (bugfix submitted by default8p)
author a.parshin
date Thu, 14 May 2015 11:03:14 +0200
parents 87e5590d034b
children 0c67be4ec900
rev   line source
2548
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
1 #include "Engine/Engine.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
2 #include "Engine/LOD.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
3 #include "Engine/Party.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
4 #include "Engine/texts.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
5 #include "Engine/Graphics/IRender.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
6
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
7 #include "GUI/GUIFont.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
8 #include "GUI/UI/Books/TownPortalBook.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
9
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
10 #include "IO/Mouse.h"
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
11
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
12 static int pTownPortalBook_xs[6] = { 260, 324, 147, 385, 390, 19 };
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
13 static int pTownPortalBook_ys[6] = { 206, 84, 182, 239, 17, 283 };
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
14 static int pTownPortalBook_ws[6] = { 80, 66, 68, 72, 67, 74 };
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
15 static int pTownPortalBook_hs[6] = { 55, 56, 65, 67, 67, 59 };
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
16
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
17 GUIWindow_TownPortalBook::GUIWindow_TownPortalBook(const char *a1) :
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
18 GUIWindow_Book()
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
19 {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
20 this->Hint = a1; // inherited from GUIWindow::GUIWindow
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
21 this->ptr_1C = (void *)WINDOW_TownPortal; // inherited from GUIWindow::GUIWindow
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
22 BasicBookInitialization();
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
23
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
24 // ----------------------------------------------
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
25 // 00411BFC GUIWindow::InitializeBookView -- part
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
26 pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("townport", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
27 pTexture_TownPortalIcons[0] = pIcons_LOD->LoadTexturePtr("tpharmndy", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
28 pTexture_TownPortalIcons[1] = pIcons_LOD->LoadTexturePtr("tpelf", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
29 pTexture_TownPortalIcons[2] = pIcons_LOD->LoadTexturePtr("tpwarlock", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
30 pTexture_TownPortalIcons[3] = pIcons_LOD->LoadTexturePtr("tpisland", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
31 pTexture_TownPortalIcons[4] = pIcons_LOD->LoadTexturePtr("tpheaven", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
32 pTexture_TownPortalIcons[5] = pIcons_LOD->LoadTexturePtr("tphell", TEXTURE_16BIT_PALETTE);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
33
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
34 for (uint i = 0; i < 6; ++i)
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
35 CreateButton(
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
36 pTownPortalBook_xs[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
37 pTownPortalBook_ys[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
38 pTownPortalBook_ws[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
39 pTownPortalBook_hs[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
40 1, 182, UIMSG_ClickTownInTP, i, 0, "", nullptr
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
41 );
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
42 }
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
43
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
44
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
45 void GUIWindow_TownPortalBook::Update()
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
46 {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
47 // -----------------------------------
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
48 // 004156F0 GUI_UpdateWindows --- part
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
49 // {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
50 // BookUI_Draw((WindowType)(int)ptr_1C);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
51 // }
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
52
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
53 // ----- (00413CC6) --------------------------------------------------------
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
54 // void BookUI_Draw(WindowType book) --- part
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
55 // {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
56 pRenderer->DrawTextureIndexed(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
57 // BookUI_DrawTownPortalMap();
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
58
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
59 // ----- (00411150) --------------------------------------------------------
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
60 // void BookUI_DrawTownPortalMap()
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
61 // {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
62 int v3; // edi@17
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
63 GUIWindow TownPortalWindow; // [sp+Ch] [bp-64h]@1
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
64 POINT a2; // [sp+68h] [bp-8h]@17
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
65
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
66 pRenderer->ClearZBuffer(0, 479);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
67 pRenderer->DrawTextureIndexedAlpha(8, 8, pTexture_CurrentBook);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
68 pRenderer->DrawTextureIndexedAlpha(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
69
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
70 TownPortalWindow.uFrameX = game_viewport_x;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
71 TownPortalWindow.uFrameY = game_viewport_y;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
72 TownPortalWindow.uFrameWidth = game_viewport_width;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
73 TownPortalWindow.uFrameHeight = game_viewport_height;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
74 TownPortalWindow.uFrameZ = game_viewport_z;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
75 TownPortalWindow.uFrameW = game_viewport_w;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
76
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
77 const uint fountain_bits_lut[] =
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
78 {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
79 PARTY_QUEST_FOUNTAIN_HARMONDALE,
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
80 PARTY_QUEST_FOUNTAIN_PIERPONT,
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
81 PARTY_QUEST_FOUNTAIN_NIGHON,
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
82 PARTY_QUEST_FOUNTAIN_EVENMORN_ISLE,
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
83 PARTY_QUEST_FOUNTAIN_CELESTIA,
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
84 PARTY_QUEST_FOUNTAIN_THE_PIT
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
85 };
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
86 for (uint i = 0; i < 6; ++i)
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
87 {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
88
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
89 if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[i]))
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
90 pRenderer->DrawMaskToZBuffer(
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
91 pTownPortalBook_xs[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
92 pTownPortalBook_ys[i],
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
93 pTexture_TownPortalIcons[i], i + 1
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
94 );
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
95 }
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
96
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
97 pMouse->GetCursorPos(&a2);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
98 v3 = pRenderer->pActiveZBuffer[a2.x + pSRZBufferLineOffsets[a2.y]] & 0xFFFF;
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
99
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
100 if (v3)
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
101 {
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
102 if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[v3 - 1]))
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
103 pRenderer->DrawTextureIndexed(pTownPortalBook_xs[v3 - 1], pTownPortalBook_ys[v3 - 1], pTexture_TownPortalIcons[v3 - 1]);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
104 }
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
105 TownPortalWindow.DrawTitleText(pBook2Font, 0, 22, 0, pGlobalTXT_LocalizationStrings[10], 3);
87e5590d034b All Books windows are refactored into respective classes
a.parshin
parents:
diff changeset
106 }