annotate GUI/UI/UiGame.cpp @ 2513:28afacb08f76

Слияние
author Ritor1
date Thu, 02 Oct 2014 19:33:11 +0600
parents 491f0babd563
children 56b6d74ce716
rev   line source
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1 #define _CRTDBG_MAP_ALLOC
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2 #include <stdlib.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
3 #include <crtdbg.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
5 #define _CRT_SECURE_NO_WARNINGS
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
6 #include "..\../Engine/Events.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
7 #include "..\../Engine/Graphics/Texture.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
8 #include "..\../Engine/MM7.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
9 #include "..\../Engine/ErrorHandling.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
10
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
11 #include "..\../IO/Mouse.h"
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
12 #include "..\../IO/Keyboard.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
13 #include "..\../Engine/mm7_data.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
15 #include "..\../Engine/Graphics/Vis.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
16 #include "..\../Engine/MapInfo.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
17 #include "..\../Engine/Game.h"
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
18 #include "..\../GUI/GUIWindow.h"
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
19 #include "..\../GUI/GUIFont.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
20 #include "..\../Engine/Party.h"
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
21 #include "..\../Media/Audio/AudioPlayer.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
22 #include "..\../Engine/Graphics/Outdoor.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
23 #include "..\../Engine/LOD.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
24 #include "..\../Engine/Objects/Actor.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
25 #include "..\../Engine/Graphics/Viewport.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
26 #include "..\../Engine/Objects/SpriteObject.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
27 #include "..\../Engine/Objects/ObjectList.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
28 #include "..\../Engine/Graphics/DecorationList.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
29 #include "..\../Engine/Tables/PlayerFrameTable.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
30 #include "..\../Engine/stru123.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
31 #include "..\../Engine/Timer.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
32 #include "..\../Engine/Tables/IconFrameTable.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
33 #include "..\../Engine/TurnEngine/TurnEngine.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
34 #include "..\../Engine/texts.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
35 #include "UIHouses.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
36 #include "..\../Engine/Graphics/BSPModel.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
37 #include "..\../Engine/OurMath.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
38 #include "..\../Engine/Graphics/Level/Decoration.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
39 #include "..\../Engine/Objects/Chest.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
40 #include "UIGame.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
41
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
42 #include "..\../Engine/Graphics/Overlays.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
43
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
44 #include "..\../Engine/Graphics/Sprites.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
45 #include "..\../Engine/Graphics/PaletteManager.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
46
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
47 int uTextureID_GameUI_CharSelectionFrame; // 50C98C
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
48
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
49 //----- (00421D00) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
50 void __fastcall GameUI_OnPlayerPortraitLeftClick(unsigned int uPlayerID)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
51 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
52 Player* player = &pParty->pPlayers[uPlayerID - 1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
53 if (pParty->pPickedItem.uItemID)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
54 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
55 if (int slot = player->AddItem(-1, pParty->pPickedItem.uItemID))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
56 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
57 memcpy(&player->pInventoryItemList[slot-1], &pParty->pPickedItem, 0x24u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
58 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
59 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
60 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
61 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
62
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
63 if (!player->CanAct())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
64 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
65 player = pPlayers[uActiveCharacter];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
66 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
67 if( player->CanAct() || !pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
68 player->PlaySound(SPEECH_NoRoom, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
69 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
70
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
71 if (pCurrentScreen == SCREEN_GAME)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
72 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
73 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
74 if ( uActiveCharacter != uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
75 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
76 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
77 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
78
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
79 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
80 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
81 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
82 pGUIWindow_CurrentMenu = CharacterUI_Initialize(7);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
83 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
84 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
85 if ( pCurrentScreen == SCREEN_SPELL_BOOK )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
86 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
87 if ( pCurrentScreen == SCREEN_CHEST )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
88 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
89 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
90 if ( uActiveCharacter == uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
91 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
92 pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
93 pCurrentScreen = SCREEN_CHEST_INVENTORY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
94 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
95 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
96 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
97 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
98 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
99 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
100 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
101 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
102 if ( pCurrentScreen != SCREEN_HOUSE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
103 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
104 if ( pCurrentScreen == SCREEN_E )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
105 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
106 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
107 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
108 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
109 if ( pCurrentScreen != SCREEN_CHEST_INVENTORY )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
110 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
111 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
112 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
113 if ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] == 102 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
114 FillAwardsData();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
115 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
116 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
117 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
118 if ( uActiveCharacter == uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
119 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
120 pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
121 pCurrentScreen = SCREEN_CHEST_INVENTORY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
122 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
123 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
124 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
125 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
126 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
127 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
128 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
129 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
130 if ( window_SpeakInHouse->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
131 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
132 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
133 if ( uActiveCharacter != uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
134 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
135 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
136 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
137 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
138 if (dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD || dialog_menu_id == HOUSE_DIALOGUE_SHOP_6)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
139 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
140 __debugbreak(); // fix indexing
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
141 pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
142 pGUIWindow_CurrentMenu = CharacterUI_Initialize(14);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
143 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
144 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
145 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
146 // 4E28F8: using guessed type int pCurrentScreen;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
147 // F8B19C: using guessed type int dword_F8B19C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
148
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
149 //----- (00416B01) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
150 void GameUI_DrawNPCPopup(void *_this)//PopupWindowForBenefitAndJoinText
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
151 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
152 int v1; // edi@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
153 NPCData *pNPC; // eax@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
154 const CHAR *pText; // eax@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
155 char *v11; // esi@26
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
156 GUIWindow popup_window; // [sp+Ch] [bp-60h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
157 int a2; // [sp+60h] [bp-Ch]@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
158 LPCSTR lpsz; // [sp+68h] [bp-4h]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
159
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
160 if ( bNoNPCHiring != 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
161 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
162 v1 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
163 /*do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
164 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
165 if ( v3->pName )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
166 pTmpBuf[v1++] = v2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
167 ++v3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
168 ++v2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
169 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
170 while ( (signed int)v3 < (signed int)&pParty->pPickedItem );*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
171 for (int i = 0; i < 2; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
172 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
173 if (pParty->pHirelings[i].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
174 pTmpBuf[v1++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
175 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
176 lpsz = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
177 if ( (signed int)pNPCStats->uNumNewNPCs > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
178 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
179 /*v4 = pNPCStats->pNewNPCData;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
180 do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
181 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
182 if ( v4->uFlags & 0x80
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
183 && (!pParty->pHirelings[0].pName || strcmp(v4->pName, pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
184 && (!pParty->pHirelings[1].pName || strcmp(v4->pName, pParty->pHirelings[1].pName)) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
185 pTmpBuf[v1++] = (char)lpsz + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
186 ++lpsz;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
187 ++v4;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
188 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
189 while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs );*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
190 for ( uint i = 0; i < pNPCStats->uNumNewNPCs; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
191 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
192 if (pNPCStats->pNewNPCData[i].Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
193 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
194 if (!pParty->pHirelings[0].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
195 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
196 if (!pParty->pHirelings[1].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[1].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
197 pTmpBuf[v1++] = i + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
198 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
199 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
200 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
201 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
202 if ( (signed int)((char *)_this + pParty->hirelingScrollPosition) < v1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
203 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
204 sDialogue_SpeakingActorNPC_ID = -1 - pParty->hirelingScrollPosition - (int)_this;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
205 pNPC = GetNewNPCData(sDialogue_SpeakingActorNPC_ID, &a2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
206 if ( pNPC )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
207 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
208 if ( a2 == 57 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
209 pText = pNPCTopics[512].pText; // Baby dragon
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
210 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
211 pText = (const CHAR *)pNPCStats->pProfessions[pNPC->uProfession].pBenefits;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
212 lpsz = pText;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
213 if ( !pText )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
214 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
215 lpsz = (LPCSTR)pNPCStats->pProfessions[pNPC->uProfession].pJoinText;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
216 if ( !lpsz )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
217 lpsz = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
218 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
219 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
220 popup_window.uFrameX = 38;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
221 popup_window.uFrameY = 60;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
222 popup_window.uFrameWidth = 276;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
223 popup_window.uFrameZ = 313;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
224 popup_window.uFrameHeight = pFontArrus->CalcTextHeight(lpsz, &popup_window, 0, 0) + 2 * LOBYTE(pFontArrus->uFontHeight) + 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
225 if ( (signed int)popup_window.uFrameHeight < 130 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
226 popup_window.uFrameHeight = 130;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
227 popup_window.uFrameWidth = 400;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
228 popup_window.uFrameZ = popup_window.uFrameX + 399;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
229 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
230 sprintfex(pTmpBuf2.data(), "NPC%03d", pNPC->uPortraitID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
231 pRenderer->DrawTextureIndexed(popup_window.uFrameX + 22, popup_window.uFrameY + 36,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
232 (Texture *)(pIcons_LOD->LoadTexture(pTmpBuf2.data(), TEXTURE_16BIT_PALETTE) != -1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
233 ? &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(pTmpBuf2.data(), TEXTURE_16BIT_PALETTE)] : 0));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
234 if ( pNPC->uProfession )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
235 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
236 v11 = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
237 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], pNPC->pName, aNPCProfessionNames[pNPC->uProfession]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
238 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
239 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
240 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
241 v11 = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
242 strcpy(pTmpBuf.data(), pNPC->pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
243 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
244 popup_window.DrawTitleText(pFontArrus, 0, 12, Color16(0xFFu, 0xFFu, 0x9Bu), v11, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
245 popup_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
246 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
247 popup_window.DrawText(pFontArrus, 100, 36, 0, BuildDialogueString((char *)lpsz, uActiveCharacter - 1, 0, 0, 0, 0), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
248 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
249 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
250 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
251 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
252
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
253 //----- (00445D4A) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
254 void GameUI_InitializeDialogue(Actor *actor, int bPlayerSaysHello)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
255 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
256 NPCData *pNPCInfo; // ebp@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
257 int v9; // esi@8
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
258 int pNumberContacts; // eax@11
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
259 char pContainer[32]; // [sp+14h] [bp-28h]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
260
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
261 dword_A74CDC = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
262 pNPCStats->dword_AE336C_LastMispronouncedNameFirstLetter = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
263 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
264 pMiscTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
265 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
266 uDialogueType = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
267 sDialogue_SpeakingActorNPC_ID = actor->sNPC_ID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
268 pDialogue_SpeakingActor = actor;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
269 pNPCInfo = GetNPCData(actor->sNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
270 if ( (pNPCInfo->uFlags & 3) != 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
271 pNPCInfo->uFlags = pNPCInfo->uFlags + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
272
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
273 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
274 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
275 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
276 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
277 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
278 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
279
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
280 pDialogueNPCCount = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
281 uNumDialogueNPCPortraits = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
282 pTexture_Dialogue_Background = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
283 sprintfex(pContainer, "npc%03u", pNPCInfo->uPortraitID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
284 v9 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
285 pDialogueNPCPortraits[0] = pIcons_LOD->LoadTexturePtr(pContainer, TEXTURE_16BIT_PALETTE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
286 dword_591084 = areWeLoadingTexture;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
287 uTextureID_right_panel_loop = uTextureID_right_panel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
288 if ( !pNPCInfo->Hired() && pNPCInfo->Location2D >= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
289 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
290 if ( (signed int)pParty->GetPartyFame() <= pNPCInfo->fame
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
291 || (pNumberContacts = pNPCInfo->uFlags & 0xFFFFFF7F, (pNumberContacts & 0x80000000u) != 0) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
292 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
293 v9 = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
294 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
295 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
296 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
297 if ( pNumberContacts > 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
298 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
299 if ( pNumberContacts == 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
300 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
301 v9 = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
302 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
303 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
304 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
305 if ( pNumberContacts != 3 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
306 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
307 if ( pNumberContacts != 4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
308 v9 = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
309 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
310 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
311 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
312 v9 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
313 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
314 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
315 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
316 else if ( pNPCInfo->rep )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
317 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
318 v9 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
319 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
320 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
321 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
322 if (sDialogue_SpeakingActorNPC_ID < 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
323 v9 = 4;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
324 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_Dialogue, 3, 0);//pNumberContacts = 1, v9 = 0; pNumberContacts = 2, v9 = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
325 if (pNPCInfo->Hired() && !pNPCInfo->bHasUsedTheAbility)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
326 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
327 if (pNPCInfo->uProfession == 10 || //Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
328 pNPCInfo->uProfession == 11 || //Expert Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
329 pNPCInfo->uProfession == 12 || //Master Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
330 pNPCInfo->uProfession == 33 || //Cook
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
331 pNPCInfo->uProfession == 34 || //Chef
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
332 pNPCInfo->uProfession == 39 || //Wind Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
333 pNPCInfo->uProfession == 40 || //Water Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
334 pNPCInfo->uProfession == 41 || //Gate Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
335 pNPCInfo->uProfession == 42 || //Chaplain
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
336 pNPCInfo->uProfession == 43 || //Piper
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
337 pNPCInfo->uProfession == 52 //Fallen Wizard
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
338 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
339 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
340 pDialogueWindow->CreateButton(480, 250, 140, LOBYTE(pFontArrus->uFontHeight) - 3, 1, 0, UIMSG_SelectNPCDialogueOption, 9, 0, "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
341 pDialogueWindow->_41D08F_set_keyboard_control_group(4, 1, 0, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
342 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
343 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
344
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
345 pDialogueWindow->CreateButton( 61, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
346 pDialogueWindow->CreateButton(177, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
347 pDialogueWindow->CreateButton(292, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
348 pDialogueWindow->CreateButton(407, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
349
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
350 if (bPlayerSaysHello && uActiveCharacter && !pNPCInfo->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
351 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
352 if (pParty->uCurrentHour < 5 || pParty->uCurrentHour > 21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
353 pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodEvening, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
354 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
355 pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodDay, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
356 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
357 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
358
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
359 //----- (00445350) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
360 void GameUI_DrawDialogue()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
361 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
362 NPCData *pNPC; // ebx@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
363 int pGreetType; // eax@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
364 int pTextHeight; // esi@39
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
365 GUIButton *pButton; // eax@43
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
366 int all_text_height; // ebx@93
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
367 signed int index; // esi@99
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
368 int v42; // edi@102
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
369 int v45;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
370 unsigned __int16 pTextColor; // ax@104
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
371 GUIWindow window; // [sp+ACh] [bp-68h]@42
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
372 // GUIFont *pOutString; // [sp+10Ch] [bp-8h]@39
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
373 const char *pInString=nullptr; // [sp+110h] [bp-4h]@32
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
374
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
375 if ( !pDialogueWindow )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
376 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
377
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
378 // Window title( )----
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
379 memcpy(&window, pDialogueWindow, sizeof(window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
380 pNPC = GetNPCData(sDialogue_SpeakingActorNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
381 pGreetType = GetGreetType(sDialogue_SpeakingActorNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
382 window.uFrameWidth -= 10;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
383 window.uFrameZ -= 10;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
384 pRenderer->DrawTextureIndexed(477, 0, pTexture_Dialogue_Background);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
385 pRenderer->DrawTextureTransparent(468, 0, (Texture *)(uTextureID_right_panel_loop != -1 ? &pIcons_LOD->pTextures[uTextureID_right_panel_loop] : 0));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
386 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0] - 4, pNPCPortraits_y[0][0] - 4, (Texture *)(uTextureID_50795C != -1 ? &pIcons_LOD->pTextures[uTextureID_50795C] : 0));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
387 pRenderer->DrawTextureIndexed(pNPCPortraits_x[0][0], pNPCPortraits_y[0][0], pDialogueNPCPortraits[0]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
388
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
389 if (pNPC->uProfession)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
390 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
391 assert(pNPC->uProfession < sizeof(aNPCProfessionNames) / sizeof(*aNPCProfessionNames.data())); // sometimes buffer overflows; errors emerge both here and in dialogue text
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
392 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], pNPC->pName, aNPCProfessionNames[pNPC->uProfession]);//^Pi[%s] %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
393 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
394 else if (pNPC->pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
395 strcpy(pTmpBuf.data(), pNPC->pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
396
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
397 window.DrawTitleText(pFontArrus, 483, 112, ui_game_dialogue_npc_name_color, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
398 pParty->GetPartyFame();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
399
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
400 pInString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
401 switch (uDialogueType)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
402 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
403 case DIALOGUE_13:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
404 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
405 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
406
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
407 case DIALOGUE_PROFESSION_DETAILS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
408 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
409 //auto prof = pNPCStats->pProfessions[pNPC->uProfession];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
410
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
411 if (dialogue_show_profession_details)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
412 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pBenefits, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
413 else if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
414 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pDismissText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
415 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
416 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
417 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
418 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
419
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
420
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
421 case DIALOGUE_ARENA_WELCOME:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
422 pInString = pGlobalTXT_LocalizationStrings[574]; // "Welcome to the Arena of Life and Death. Remember, you are only allowed one arena combat per visit. To fight an arena battle, select the option that best describes your abilities and return to me- if you survive:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
423 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
424
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
425 case DIALOGUE_ARENA_FIGHT_NOT_OVER_YET:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
426 pInString = pGlobalTXT_LocalizationStrings[577]; //"Get back in there you wimps:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
427 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
428
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
429 case DIALOGUE_ARENA_REWARD:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
430 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[576], gold_transaction_amount);// "Congratulations on your win: here's your stuff: %u gold."
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
431 pInString = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
432 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
433
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
434 case DIALOGUE_ARENA_ALREADY_WON:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
435 pInString = pGlobalTXT_LocalizationStrings[582]; // "You already won this trip to the Arena:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
436 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
437
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
438 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
439 if (uDialogueType > DIALOGUE_18 && uDialogueType < DIALOGUE_EVT_E && !byte_5B0938[0])
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
440 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
441 pInString = (char *)current_npc_text;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
442 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
443 else if (pGreetType == 1)//QuestNPC_greet
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
444 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
445 if (pNPC->greet)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
446 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
447 if ((pNPC->uFlags & 3) == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
448 pInString = pNPCStats->pNPCGreetings[pNPC->greet].pGreeting2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
449 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
450 pInString = pNPCStats->pNPCGreetings[pNPC->greet].pGreeting1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
451 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
452 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
453 else if (pGreetType == 2)//HiredNPC_greet
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
454 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
455 NPCProfession* prof = &pNPCStats->pProfessions[pNPC->uProfession];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
456
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
457 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
458 pInString = BuildDialogueString(prof->pDismissText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
459 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
460 pInString = BuildDialogueString(prof->pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
461 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
462 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
463 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
464
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
465 // Message window( )----
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
466 if (pInString)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
467 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
468 window.uFrameWidth = game_viewport_width;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
469 window.uFrameZ = 452;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
470 GUIFont* font = pFontArrus;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
471 pTextHeight = pFontArrus->CalcTextHeight(pInString, &window, 13, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
472 if ( 352 - pTextHeight < 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
473 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
474 font = pFontCreate;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
475 pTextHeight = pFontCreate->CalcTextHeight(pInString, &window, 13, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
476 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
477 if (uTextureID_Leather != -1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
478 pRenderer->GetLeather(8, 352 - pTextHeight, &pIcons_LOD->pTextures[uTextureID_Leather], pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight - pTextHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
479 pRenderer->DrawTextureIndexed(8, 347 - pTextHeight, pTexture_591428);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
480 pDialogueWindow->DrawText(font, 13, 354 - pTextHeight, 0, FitTextInAWindow(pInString, font, &window, 13, 0), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
481 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
482 // Right panel( )-------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
483 memcpy(&window, pDialogueWindow, sizeof(window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
484 window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
485 window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
486 window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
487 for (int i = window.pStartingPosActiveItem; i < window.pStartingPosActiveItem + window.pNumPresenceButton; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
488 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
489 pButton = window.GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
490 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
491 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
492
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
493 if ( pButton->msg_param > 88 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
494 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
495 else if (pButton->msg_param == 88)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
496 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[581]); // Lord
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
497 else if (pButton->msg_param == 87)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
498 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[580]); // Knight
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
499 else if (pButton->msg_param == 86)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
500 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[579]); // Squire
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
501 else if (pButton->msg_param == 85)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
502 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[578]); // Page
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
503 else if (pButton->msg_param == 77)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
504 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[407]); // Details
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
505 else if (pButton->msg_param == 76)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
506 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
507 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
508 sprintf(pButton->pButtonName, (const char*)pGlobalTXT_LocalizationStrings[408], pNPC->pName); // Release %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
509 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
510 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[406]); // Hire
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
511 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
512 else if (pButton->msg_param == 24)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
513 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
514 __debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
515 if (!pNPC->evt_F)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
516 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
517 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
518 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
519 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
520 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
521 strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_F].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
522 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
523 else if (pButton->msg_param == 9)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
524 strcpy(pButton->pButtonName, GetProfessionActionText(pNPC->uProfession));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
525 else if (pButton->msg_param == 19) // Scavenger Hunt
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
526 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
527 if (!pNPC->evt_A)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
528 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
529 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
530 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
531 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
532 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
533 strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_A].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
534 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
535 else if (pButton->msg_param == 20) // Scavenger Hunt
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
536 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
537 if (!pNPC->evt_B)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
538 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
539 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
540 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
541 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
542 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_B].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
543 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
544 else if (pButton->msg_param == 21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
545 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
546 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
547 if (!pNPC->evt_C)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
548 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
549 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
550 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
551 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
552 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_C].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
553 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
554 else if (pButton->msg_param == 22)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
555 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
556 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
557 if (!pNPC->evt_D)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
558 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
559 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
560 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
561 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
562 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_D].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
563 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
564 else if (pButton->msg_param == 23)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
565 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
566 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
567 if (!pNPC->evt_E)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
568 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
569 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
570 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
571 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
572 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_E].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
573 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
574 else if (pButton->msg_param == 13)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
575 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
576 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
577 sprintf(pButton->pButtonName, pGlobalTXT_LocalizationStrings[408], pNPC->pName); // Release %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
578 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
579 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[122]); // Join
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
580 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
581 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
582 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
583
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
584 if (pParty->field_7B5_in_arena_quest && pParty->field_7B5_in_arena_quest != -1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
585 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
586 int num_dead_actors = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
587 pInString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
588 for ( uint i = 0; i < uNumActors; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
589 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
590 if (pActors[i].uAIState == Dead || pActors[i].uAIState == Removed || pActors[i].uAIState == Disabled)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
591 ++num_dead_actors;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
592 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
593 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
594 int sumonner_type = PID_TYPE(pActors[i].uSummonerID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
595 if (sumonner_type == OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
596 ++num_dead_actors;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
597 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
598 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
599 if (num_dead_actors == uNumActors)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
600 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[658]); // Collect Prize
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
601 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
602 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
603
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
604 // Install Buttons( )--------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
605 index = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
606 all_text_height = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
607 for ( int i = pDialogueWindow->pStartingPosActiveItem;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
608 i < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
609 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
610 pButton = pDialogueWindow->GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
611 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
612 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
613 all_text_height += pFontArrus->CalcTextHeight(pButton->pButtonName, &window, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
614 index++;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
615 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
616 if ( index )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
617 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
618 v45 = (174 - all_text_height) / index;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
619 if ( v45 > 32 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
620 v45 = 32;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
621 v42 = (174 - v45 * index - all_text_height)/ 2 - v45 / 2 + 138;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
622 for ( int i = pDialogueWindow->pStartingPosActiveItem;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
623 i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
624 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
625 pButton = pDialogueWindow->GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
626 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
627 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
628 pButton->uY = (unsigned int)(v45 + v42);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
629 pTextHeight = pFontArrus->CalcTextHeight(pButton->pButtonName, &window, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
630 pButton->uHeight = pTextHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
631 v42 = pButton->uY + pTextHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
632 pButton->uW = v42;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
633 pTextColor = ui_game_dialogue_option_normal_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
634 if ( pDialogueWindow->pCurrentPosActiveItem == i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
635 pTextColor = ui_game_dialogue_option_highlight_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
636 window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pButton->pButtonName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
637 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
638 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
639 pRenderer->DrawTextureIndexed(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
640 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
641
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
642 //----- (00444FBE) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
643 void GameUI_DrawBranchlessDialogue()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
644 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
645 int pTextHeight; // esi@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
646 char Str[200]; // [sp+Ch] [bp-120h]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
647 GUIWindow BranchlessDlg_window; // [sp+D4h] [bp-58h]@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
648 GUIFont *pFont; // [sp+128h] [bp-4h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
649
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
650 pFont = pFontArrus;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
651 if ( current_npc_text && !byte_5B0938[0] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
652 strcpy(byte_5B0938.data(), current_npc_text);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
653 BranchlessDlg_window.uFrameWidth = game_viewport_width;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
654 BranchlessDlg_window.uFrameZ = 452;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
655 pTextHeight = pFontArrus->CalcTextHeight(byte_5B0938.data(), &BranchlessDlg_window, 12, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
656 if ( 352 - pTextHeight < 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
657 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
658 pFont = pFontCreate;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
659 pTextHeight = pFontCreate->CalcTextHeight(byte_5B0938.data(), &BranchlessDlg_window, 12, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
660 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
661 pRenderer->GetLeather(8, 352 - pTextHeight, pIcons_LOD->GetTexture(uTextureID_Leather), pIcons_LOD->GetTexture(uTextureID_Leather)->uTextureHeight - pTextHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
662 pRenderer->DrawTextureIndexed(8, 347 - pTextHeight, pTexture_591428);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
663 pGUIWindow2->DrawText(pFont, 12, 354 - pTextHeight, 0, FitTextInAWindow(byte_5B0938.data(), pFont, &BranchlessDlg_window, 12, 0), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
664 pRenderer->DrawTextureRGB(0, 0x160u, pTexture_StatusBar);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
665 if ( pGUIWindow2->receives_keyboard_input_2 != WINDOW_INPUT_IN_PROGRESS)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
666 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
667 if ( pGUIWindow2->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
668 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
669 pGUIWindow2->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
670 strcpy(GameUI_Footer_TimedString.data(), pKeyActionMap->pPressedKeysBuffer);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
671 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
672 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
673 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
674 if ( pGUIWindow2->receives_keyboard_input_2 != WINDOW_INPUT_CANCELLED)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
675 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
676 pGUIWindow2->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
677 memset(GameUI_Footer_TimedString.data(), 0, 0xC8u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
678 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
679 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
680 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
681 if ( pGUIWindow2->ptr_1C == (void *)26 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
682 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
683 sprintf(Str, "%s %s", GameUI_Footer_TimedString, pKeyActionMap->pPressedKeysBuffer);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
684 pGUIWindow2->DrawText(pFontLucida, 13, 357, 0, Str, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
685 pGUIWindow2->DrawFlashingInputCursor(pFontLucida->GetLineWidth(Str) + 13, 357, pFontLucida);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
686 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
687 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
688 if ( pKeyActionMap->pPressedKeysBuffer[0] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
689 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
690 pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
691 memset(GameUI_Footer_TimedString.data(), 0, 0xC8u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
692 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
693 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
694 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
695 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
696
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
697 //----- (004443D5) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
698 const char *GameUI_GetMinimapHintText()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
699 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
700 double v3; // st7@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
701 int v7; // eax@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
702 const char *v14; // eax@8
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
703 char *result; // eax@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
704 unsigned int pMapID; // eax@14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
705 int global_coord_X; // [sp+10h] [bp-1Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
706 int global_coord_Y; // [sp+14h] [bp-18h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
707 unsigned int pY; // [sp+1Ch] [bp-10h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
708 unsigned int pX; // [sp+28h] [bp-4h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
709
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
710 result = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
711 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
712 v3 = 1.0 / (float)((signed int)viewparams->uMinimapZoom * 0.000015258789);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
713 global_coord_X = (signed __int64)((double)(pX - 557) * v3 + (double)pParty->vPosition.x);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
714 global_coord_Y = (signed __int64)((double)pParty->vPosition.y - (double)(pY - 74) * v3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
715 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor || pOutdoor->uNumBModels <= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
716 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
717 pMapID = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
718 if ( pMapID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
719 result = "No Maze Info for this maze on file!";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
720 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
721 result = pMapStats->pInfos[pMapID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
722 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
723 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
724 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
725 for ( uint j = 0; j < (uint)pOutdoor->uNumBModels; ++j )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
726 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
727 v7 = int_get_vector_length(abs((signed)pOutdoor->pBModels[j].vBoundingCenter.x - global_coord_X),
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
728 abs((signed)pOutdoor->pBModels[j].vBoundingCenter.y - global_coord_Y), 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
729 if ( v7 < 2 * pOutdoor->pBModels[j].sBoundingRadius )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
730 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
731 if ( pOutdoor->pBModels[j].uNumFaces )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
732 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
733 for ( uint i = 0; i < (uint)pOutdoor->pBModels[j].uNumFaces; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
734 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
735 if ( pOutdoor->pBModels[j].pFaces[i].sCogTriggeredID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
736 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
737 if ( !(pOutdoor->pBModels[j].pFaces[i].uAttributes & FACE_HAS_EVENT) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
738 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
739 v14 = GetEventHintString(pOutdoor->pBModels[j].pFaces[i].sCogTriggeredID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
740 if ( v14 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
742 if ( _stricmp(v14, "") )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
743 result = (char *)v14;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
744 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
745 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
746 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
747 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
748 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
749 if ( result )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
750 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
751 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
752 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
753 pMapID = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
754 if ( pMapID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
755 result = "No Maze Info for this maze on file!";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
756 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
757 result = pMapStats->pInfos[pMapID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
758 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
759 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
760 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
761 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
762
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
763 //----- (0041D3B7) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
764 void GameUI_CharacterQuickRecord_Draw(GUIWindow *window, Player *player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
765 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
766 Texture *v13; // eax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
767 PlayerFrame *v15; // eax@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
768 unsigned int pTextColor; // eax@15
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
769 const char *v29; // eax@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
770 int v36; // esi@22
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
771 const char *v39; // eax@24
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
772 signed int uFramesetID; // [sp+20h] [bp-8h]@9
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
773 int uFramesetIDa; // [sp+20h] [bp-8h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
774
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
775 uint numActivePlayerBuffs = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
776 for (uint i = 0; i < 24; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
777 if (player->pPlayerBuffs[i].uExpireTime > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
778 ++numActivePlayerBuffs;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
779
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
780 window->uFrameHeight = ((pFontArrus->uFontHeight + 162) + ((numActivePlayerBuffs - 1) * pFontArrus->uFontHeight));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
781 window->uFrameZ = window->uFrameWidth + window->uFrameX - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
782 window->uFrameW = ((pFontArrus->uFontHeight + 162) + ((numActivePlayerBuffs - 1) * pFontArrus->uFontHeight)) + window->uFrameY - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
783 window->DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
784
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
785 if (player->IsEradicated())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
786 v13 = pTexture_PlayerFaceEradicated;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
787 else if (player->IsDead())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
788 v13 = pTexture_PlayerFaceDead;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
789 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
790 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
791 uFramesetID = pPlayerFrameTable->GetFrameIdByExpression(player->expression);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
792 if ( !uFramesetID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
793 uFramesetID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
794 if ( player->expression == CHARACTER_EXPRESSION_21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
795 v15 = pPlayerFrameTable->GetFrameBy_y(&player->_expression21_frameset, &player->_expression21_animtime, pMiscTimer->uTimeElapsed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
796 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
797 v15 = pPlayerFrameTable->GetFrameBy_x(uFramesetID, pMiscTimer->Time());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
798 player->field_1AA2 = v15->uTextureID - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
799 v13 = pTextures_PlayerFaces[(unsigned int)window->ptr_1C][v15->uTextureID - 1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
800 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
801
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
802 pRenderer->DrawTextureTransparent(window->uFrameX + 24, window->uFrameY + 24, v13);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
803
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
804 sprintfex(pTmpBuf.data(), "\f%05d", ui_character_header_text_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
805 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[429], player->pName, pClassNames[player->classType]); // "%s the %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
806 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
807 strcat(pTmpBuf.data(), "\f00000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
808
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
809 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sHealth, player->GetMaxHealth());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
810 sprintfex(pTmpBuf2.data(), "%s : \f%05u%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[108], // "Hit Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
811 pTextColor, player->sHealth, player->GetMaxHealth());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
812 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
813
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
814 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sMana, player->GetMaxMana());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
815 sprintfex(pTmpBuf2.data(), "%s : \f%05u%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[212], // "Spell Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
816 pTextColor, player->sMana, player->GetMaxMana());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
817 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
818
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
819 pTextColor = player->GetMajorConditionIdx();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
820 sprintfex(pTmpBuf2.data(), "%s: \f%05d%s\f00000\n", pGlobalTXT_LocalizationStrings[47], // "Condition
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
821 GetConditionDrawColor(pTextColor), aCharacterConditionNames[pTextColor]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
822 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
823
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
824 if ( player->uQuickSpell )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
825 v29 = pSpellStats->pInfos[player->uQuickSpell].pShortName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
826 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
827 v29 = pGlobalTXT_LocalizationStrings[153];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
828 sprintfex(pTmpBuf2.data(), "%s: %s", pGlobalTXT_LocalizationStrings[172], v29); // "Quick Spell"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
829 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
830
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
831 window->DrawText(pFontArrus, 120, 22, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
832
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
833 uFramesetIDa = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
834 for (uint i = 0; i < 24; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
835 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
836 SpellBuff* buff = &player->pPlayerBuffs[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
837 if (buff->uExpireTime > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
838 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
839 v36 = uFramesetIDa++ * pFontComic->uFontHeight + 134;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
840 window->DrawText(pFontComic, 52, v36, ui_game_character_record_playerbuff_colors[i], aSpellNames[20 + i], 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
841 DrawBuff_remaining_time_string(v36, window, buff->uExpireTime - pParty->uTimePlayed, pFontComic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
842 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
843 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
844
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
845 v39 = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
846 if ( uFramesetIDa == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
847 v39 = pGlobalTXT_LocalizationStrings[153]; // "None"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
848 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[450], v39); // "Active Spells: %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
849 window->DrawText(pFontArrus, 14, 114, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
850 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
851
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
852 //----- (0041A57E) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
853 void GameUI_QuickRef_Draw()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
854 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
855 unsigned int pTextColor; // eax@7
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
856 unsigned int pX; // [sp+14h] [bp-18h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
857 unsigned int pY; // edi@9
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
858 int pSkillsCount; // ecx@27
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
859 const char *pText; // eax@38
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
860 int pFontHeight; // [sp+18h] [bp-14h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
861
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
862 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("quikref", TEXTURE_16BIT_PALETTE));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
863 pFontHeight = LOBYTE(pFontArrus->uFontHeight) + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
864 for ( uint i = 0; i < 4; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
865 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
866 Player* player = &pParty->pPlayers[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
867 pX = 94 * i + 89;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
868 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
869 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, 18, 0, pGlobalTXT_LocalizationStrings[149], 60, 0);//Name
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
870 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 94 * i + 89, 18, ui_character_header_text_color, player->pName, 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
871 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
872 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, 47, 0, pGlobalTXT_LocalizationStrings[131], 60, 0); //.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
873 sprintf(pTmpBuf.data(), "%lu", player->GetActualLevel());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
874 if ( player->GetActualLevel() <= player->GetBaseLevel())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
875 pTextColor = player->GetExperienceDisplayColor();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
876 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
877 pTextColor = ui_character_bonus_text_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
878 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, 47, pTextColor, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
879 pY = pFontHeight + 47;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
880 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
881 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pFontHeight + 47, 0, pGlobalTXT_LocalizationStrings[41], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
882 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, pClassNames[player->classType], 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
883 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
884 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
885 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[107], 60, 0);//.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
886 sprintf(pTmpBuf.data(), "%d", player->sHealth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
887 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sHealth, player->GetMaxHealth());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
888 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, pTextColor, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
889 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
890 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
891 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[209], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
892 sprintf(pTmpBuf.data(), "%d", player->sMana);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
893 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sMana, player->GetMaxMana());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
894 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, pTextColor, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
895 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
896 if ( i == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
897 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[0], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
898 sprintf(pTmpBuf.data(), "%d", player->GetActualAC());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
899 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->GetActualAC(), player->GetBaseAC());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
900 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, pTextColor, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
901 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
902 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
903 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[18], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
904 sprintf(pTmpBuf.data(), "%+d", player->GetActualAttack(false));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
905 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
906 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
907 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
908 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
909 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, player->GetMeleeDamageString(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
910 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
911 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
912 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[203], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
913 sprintf(pTmpBuf.data(), "%+d", player->GetRangedAttack());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
914 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
915 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
916 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
917 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
918 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, player->GetRangedDamageString(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
919 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
920 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
921 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[205], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
922 pSkillsCount = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
923 for ( uint j = 0; j <= 36; ++j )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
924 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
925 if ( player->pActiveSkills[j] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
926 ++pSkillsCount;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
927 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
928 sprintf(pTmpBuf.data(), "%lu", pSkillsCount);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
929 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
930 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
931 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
932 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[168], 60, 0);//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
933 sprintf(pTmpBuf.data(), "%lu", player->uSkillPoints);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
934 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, player->uSkillPoints ? ui_character_bonus_text_color : ui_character_default_text_color, pTmpBuf.data(), 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
935 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
936 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
937 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[45], 60, 0);//.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
938 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, pTextColor, aCharacterConditionNames[player->GetMajorConditionIdx()], 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
939 pY = pFontHeight + pY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
940 if ( !i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
941 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 22, pY, 0, pGlobalTXT_LocalizationStrings[170], 60, 0);//..
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
942 if (player->uQuickSpell)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
943 pText = pSpellStats->pInfos[player->uQuickSpell].pShortName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
944 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
945 pText = pGlobalTXT_LocalizationStrings[153];//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
946 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, pX, pY, 0, pText, 84, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
947 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
948
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
949 if ( pParty->GetPartyReputation() >= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
950 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
951 if ( pParty->GetPartyReputation() <= 5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
952 pTextColor = ui_character_default_text_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
953 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
954 pTextColor = ui_character_bonus_text_color_neg;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
955 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
956 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
957 pTextColor = ui_character_bonus_text_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
958
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
959 sprintf(pTmpBuf.data(), "%s: \f%05d%s\f00000", pGlobalTXT_LocalizationStrings[180], pTextColor, GetReputationString(pParty->GetPartyReputation()));//Reputation
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
960 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 22, 323, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
961 sprintf(pTmpBuf.data(), "\r261%s: %d", pGlobalTXT_LocalizationStrings[84], pParty->GetPartyFame());// Fame
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
962 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 0, 323, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
963 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
964
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
965 //----- (0041AD6E) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
966 void GameUI_DrawRightPanelItems()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
967 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
968 if ( (unsigned long long)GameUI_RightPanel_BookFlashTimer > pParty->uTimePlayed )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
969 GameUI_RightPanel_BookFlashTimer = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
970
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
971 if ( pParty->uTimePlayed - GameUI_RightPanel_BookFlashTimer > 128 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
972 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
973 GameUI_RightPanel_BookFlashTimer = pParty->uTimePlayed;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
974
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
975 static bool byte_50697C = false; // 50697C
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
976 byte_50697C = !byte_50697C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
977 if ( byte_50697C && pCurrentScreen != SCREEN_REST )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
978 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
979 if (bFlashQuestBook) pRenderer->DrawTextureTransparent(493, 355, pIcons_LOD->GetTexture(uTextureID_ib_td1_A));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
980 if (bFlashAutonotesBook) pRenderer->DrawTextureTransparent(527, 353, pIcons_LOD->GetTexture(uTextureID_ib_td2_A));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
981 if (bFlashHistoryBook) pRenderer->DrawTextureTransparent(600, 361, pIcons_LOD->GetTexture(uTextureID_ib_td5_A));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
982 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
983 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
984 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
985 pRenderer->DrawTextureRGB(468, 0, pTexture_RightFrame);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
986 GameUI_DrawHiredNPCs();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
987 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
988 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
989 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
990
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
991 //----- (0041AEBB) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
992 void GameUI_DrawFoodAndGold()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
993 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
994 int text_y; // esi@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
995
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
996 if ( uGameState != GAME_STATE_FINAL_WINDOW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
997 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
998 text_y = _44100D_should_alter_right_panel() != 0 ? 381 : 322;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
999 sprintf(pTmpBuf.data(), "\r087%lu", pParty->uNumFoodRations);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1000 pPrimaryWindow->DrawText(pFontSmallnum, 0, text_y, uGameUIFontMain, pTmpBuf.data(), 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1001 sprintf(pTmpBuf.data(), "\r028%lu", pParty->uNumGold);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1002 pPrimaryWindow->DrawText(pFontSmallnum, 0, text_y, uGameUIFontMain, pTmpBuf.data(), 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1003 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1004 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1005
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1006 //----- (0041B0C9) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1007 void GameUI_DrawLifeManaBars()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1008 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1009 double v3; // st7@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1010 double v7; // st7@25
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1011 Texture *pTextureHealth; // [sp-4h] [bp-30h]@10
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1012 Texture *pTextureMana; // [sp+Ch] [bp-20h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1013
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1014 pTextureMana = pIcons_LOD->GetTexture(uTextureID_BarBlue);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1015 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1016 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1017 if (pParty->pPlayers[i].sHealth > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1018 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1019 int v17 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1020 if (i == 2 || i == 3)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1021 v17 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1022 v3 = (double)pParty->pPlayers[i].sHealth / (double)pParty->pPlayers[i].GetMaxHealth();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1023 if( v3 > 0.5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1024 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1025 if ( v3 > 1.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1026 v3 = 1.0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1027 pTextureHealth = pIcons_LOD->GetTexture(uTextureID_BarGreen);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1028 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1029 else if ( v3 > 0.25 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1030 pTextureHealth = pIcons_LOD->GetTexture(uTextureID_BarYellow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1031 else if ( v3 > 0.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1032 pTextureHealth = pIcons_LOD->GetTexture(uTextureID_BarRed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1033 if( v3 > 0.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1034 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1035 pRenderer->SetTextureClipRect(v17 + pHealthBarPos[i], (signed __int64)((1.0 - v3) * pTextureHealth->uTextureHeight) + 402,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1036 v17 + pHealthBarPos[i] + pTextureHealth->uTextureWidth, pTextureHealth->uTextureHeight + 402);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1037 pRenderer->DrawTextureIndexed(v17 + pHealthBarPos[i], 402, pTextureHealth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1038 pRenderer->ResetTextureClipRect();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1039 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1040 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1041 if (pParty->pPlayers[i].sMana > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1042 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1043 v7 = pParty->pPlayers[i].sMana / (double)pParty->pPlayers[i].GetMaxMana();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1044 if ( v7 > 1.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1045 v7 = 1.0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1046 int v17 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1047 if (i == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1048 v17 = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1049 pRenderer->SetTextureClipRect(v17 + pManaBarPos[i], (signed __int64)((1.0 - v7) * pTextureMana->uTextureHeight) + 402,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1050 v17 + pManaBarPos[i] + pTextureMana->uTextureWidth, pTextureMana->uTextureHeight + 402);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1051 pRenderer->DrawTextureIndexed(v17 + pManaBarPos[i], 402, pTextureMana);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1052 pRenderer->ResetTextureClipRect();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1053 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1054 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1055 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1056
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1057 //----- (0041B3B6) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1058 void GameUI_DrawRightPanel()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1059 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1060 pRenderer->DrawTextureTransparent(pViewport->uViewportBR_X, 0, pIcons_LOD->GetTexture(uTextureID_right_panel));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1061 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1062
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1063 //----- (0041B3E2) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1064 void GameUI_DrawRightPanelFrames()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1065 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1066 pRenderer->DrawTextureRGB(0, 0, pTexture_TopFrame);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1067 pRenderer->DrawTextureRGB(0, 8, pTexture_LeftFrame);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1068 pRenderer->DrawTextureRGB(468, 0, pTexture_RightFrame);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1069 pRenderer->DrawTextureRGB(0, 352, pTexture_BottomFrame);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1070 GameUI_DrawFoodAndGold();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1071 GameUI_DrawRightPanelItems();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1072 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1073
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1074 //----- (0041C047) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1075 void GameUI_Footer_2()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1076 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1077 char *v1; // edx@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1078 int v5; // eax@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1079
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1080 pRenderer->DrawTextureRGB(0, 352, pTexture_StatusBar);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1081 if (GameUI_Footer_TimeLeft)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1082 v1 = GameUI_Footer_TimedString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1083 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1084 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1085 if (!pFooterString[0])
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1086 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1087 v1 = pFooterString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1088 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1089
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1090 v5 = pFontLucida->AlignText_Center(450, v1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1091 pPrimaryWindow->DrawText(pFontLucida, v5 + 11, 357, uGameUIFontMain, v1, 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1092 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1093
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1094 //----- (0041C0B8) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1095 void GameUI_SetFooterString(const char *pStr)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1096 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1097 const char *v1; // esi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1098
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1099 v1 = pStr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1100 if ( pStr && strcmp(pStr, "test") && !IsBadStringPtrA(pStr, 1) && (*v1 || GameUI_Footer_TimeLeft) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1101 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1102 if ( GameUI_Footer_TimeLeft )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1103 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1104 for ( int i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()); i > 450; i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1105 GameUI_Footer_TimedString[strlen(GameUI_Footer_TimedString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1106 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1107 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1108 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1109 strcpy(pFooterString.data(), v1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1110 for ( int j = pFontLucida->GetLineWidth(pFooterString.data()); j > 450; j = pFontLucida->GetLineWidth(pFooterString.data()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1111 pFooterString[strlen(pFooterString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1112 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1113 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1114 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1115
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1116 //----- (0041C179) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1117 void GameUI_Footer()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1118 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1119 char *v1; // edi@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1120 int v2; // eax@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1121 int v6; // eax@9
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1122 char v9; // zf@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1123
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1124 if ( pFooterString[0] || GameUI_Footer_TimeLeft || bForceDrawFooter )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1125 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1126 pRenderer->DrawTextureRGB(0, 352, pTexture_StatusBar);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1127 if ( GameUI_Footer_TimeLeft )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1128 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1129 v1 = GameUI_Footer_TimedString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1130 v2 = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1131 while ( v2 > 450 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1132 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1133 GameUI_Footer_TimedString[strlen(GameUI_Footer_TimedString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1134 v2 = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1135 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1136 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1137 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1138 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1139 v1 = pFooterString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1140 v6 = pFontLucida->GetLineWidth(pFooterString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1141 while ( v6 > 450 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1142 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1143 pFooterString[strlen(pFooterString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1144 v6 = pFontLucida->GetLineWidth(pFooterString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1145 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1146 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1147 v9 = *v1 == 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1148 bForceDrawFooter = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1149 if ( !v9 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1150 pPrimaryWindow->DrawText(pFontLucida, pFontLucida->AlignText_Center(450, v1) + 11, 357, uGameUIFontMain, v1, 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1151 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1152 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1153 // 5C35BC: using guessed type int bForceDrawFooter;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1154 //----- (00420EFF) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1155 void GameUI_WritePointedObjectStatusString()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1156 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1157 GUIWindow *pWindow; // edi@7
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1158 GUIButton *pButton; // ecx@11
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1159 int requiredSkillpoints; // ecx@19
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1160 enum UIMessageType pMessageType1; // esi@24
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1161 int v14; // eax@41
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1162 ItemGen *pItemGen; // ecx@44
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1163 int v16; // ecx@46
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1164 signed int pickedObjectPID; // eax@55
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1165 signed int v18b;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1166 signed int pickedObjectID; // ecx@63
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1167 BLVFace *pFace; // eax@69
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1168 const char *pText; // ecx@79
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1169 enum UIMessageType pMessageType2; // esi@110
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1170 enum UIMessageType pMessageType3; // edx@117
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1171 char Str1[200]; // [sp+Ch] [bp-D4h]@129
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1172 unsigned int pX; // [sp+D4h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1173 unsigned int pY; // [sp+D8h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1174
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1175 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1176 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1177 if ( pX < 0 || pX > window->GetWidth() - 1 || pY < 0 || pY > window->GetHeight() - 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1178 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1179 if ( pCurrentScreen == SCREEN_GAME )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1180 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1181 if ( pX <= (window->GetWidth() - 1) * 0.73125 && pY <= (window->GetHeight() - 1) * 0.73125 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1182 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1183 //if ( pRenderer->pRenderD3D ) // inlined mm8::4C1E01
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1184 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1185 pickedObjectPID = pGame->pVisInstance->get_picked_object_zbuf_val();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1186 if ( pX < (unsigned int)pViewport->uScreen_TL_X || pX > (unsigned int)pViewport->uScreen_BR_X
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1187 || pY < (unsigned int)pViewport->uScreen_TL_Y || pY > (unsigned int)pViewport->uScreen_BR_Y )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1188 pickedObjectPID = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1189 if ( pickedObjectPID == -1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1190 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1191 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1192 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1193 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1194 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1195 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1196 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1197 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1198 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1199 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1200 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1201 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1202 v18 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1203 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1204 pMouse->uPointingObjectID = (unsigned __int16)pickedObjectPID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1205 pickedObjectID = (signed)PID_ID(pickedObjectPID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1206 if ( PID_TYPE(pickedObjectPID) == OBJECT_Item )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1207 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1208 if ( pObjectList->pObjects[pSpriteObjects[pickedObjectID].uObjectDescID].uFlags & 0x10 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1209 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1210 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1211 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1212 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1213 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1214 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1215 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1216 if ( pickedObjectPID >= 0x2000000u || pParty->pPickedItem.uItemID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1217 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1218 GameUI_SetFooterString(pSpriteObjects[pickedObjectID].stru_24.GetDisplayName());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1219 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1220 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1221 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1222 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[470], pSpriteObjects[pickedObjectID].stru_24.GetDisplayName());// "Get %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1223 GameUI_SetFooterString(pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1224 } //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1225 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1226 else if ( PID_TYPE(pickedObjectPID) == OBJECT_Decoration )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1227 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1228 if ( !pLevelDecorations[pickedObjectID].uEventID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1229 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1230 if ( pLevelDecorations[pickedObjectID].IsInteractive() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1231 pText = pNPCTopics[stru_5E4C90_MapPersistVars._decor_events[pLevelDecorations[pickedObjectID]._idx_in_stru123 - 75] + 380].pTopic;//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1232 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1233 pText = pDecorationList->pDecorations[pLevelDecorations[pickedObjectID].uDecorationDescID].field_20;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1234 GameUI_SetFooterString(pText);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1235 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1236 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1237 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1238 char* hintString = GetEventHintString(pLevelDecorations[pickedObjectID].uEventID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1239 if ( hintString != '\0' )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1240 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1241 GameUI_SetFooterString(hintString);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1242 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1243 } //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1244 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1245 else if ( PID_TYPE(pickedObjectPID) == OBJECT_BModel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1246 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1247 if ( pickedObjectPID < 0x2000000u )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1248 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1249 char* newString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1250 if ( uCurrentlyLoadedLevelType != LEVEL_Indoor )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1251 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1252 v18b = (signed int)(unsigned __int16)pickedObjectPID >> 9;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1253 short triggeredId = pOutdoor->pBModels[v18b].pFaces[pickedObjectID & 0x3F].sCogTriggeredID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1254 if (triggeredId != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1255 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1256 newString = GetEventHintString(pOutdoor->pBModels[v18b].pFaces[pickedObjectID & 0x3F].sCogTriggeredID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1257 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1258 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1259 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1260 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1261 pFace = &pIndoor->pFaces[pickedObjectID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1262 if ( pFace->uAttributes & FACE_INDICATE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1263 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1264 unsigned short eventId = pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1265 if (eventId != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1266 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1267 newString = GetEventHintString(pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1268 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1269 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1270 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1271 if (newString)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1272 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1273 GameUI_SetFooterString(newString);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1274 if ( pMouse->uPointingObjectID == 0 && uLastPointedObjectID != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1275 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1276 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1277 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1278 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1279 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1280 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1281 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1282 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1283 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1284 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1285 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1286 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1287 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1288 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1289 else if ( PID_TYPE(pickedObjectPID) == OBJECT_Actor )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1290 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1291 if ( pickedObjectPID >= 0x2000000 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1292 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1293 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1294 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1295 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1296 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1297 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1298 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1299 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1300 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1301 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1302 if ( pActors[pickedObjectID].dword_000334_unique_name )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1303 pText = pMonsterStats->pPlaceStrings[pActors[pickedObjectID].dword_000334_unique_name];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1304 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1305 pText = pMonsterStats->pInfos[pActors[pickedObjectID].pMonsterInfo.uID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1306 GameUI_SetFooterString(pText); //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1307 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1308 if ( pMouse->uPointingObjectID == 0 && uLastPointedObjectID != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1309 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1310 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1311 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1312 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1313 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1314 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1315 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1316 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1317 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1318 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1319 for (int i = uNumVisibleWindows; i > 0; --i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1320 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1321 pWindow = &pWindowList[pVisibleWindowsIdxs[i] - 1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1322 if ( (signed int)pX >= (signed int)pWindow->uFrameX && (signed int)pX <= (signed int)pWindow->uFrameZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1323 && (signed int)pY >= (signed int)pWindow->uFrameY && (signed int)pY <= (signed int)pWindow->uFrameW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1324 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1325 for ( pButton = pWindow->pControlsHead; pButton != nullptr; pButton = pButton->pNext )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1326 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1327 switch ( pButton->uButtonType )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1328 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1329 case 1://for dialogue window
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1330 if ( (signed int)pX >= (signed int)pButton->uX && (signed int)pX <= (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1331 && (signed int)pY >= (signed int)pButton->uY && (signed int)pY <= (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1332 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1333 pMessageType1 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1334 if ( pMessageType1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1335 pMessageQueue_50CBD0->AddGUIMessage(pMessageType1, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1336 GameUI_SetFooterString(pButton->pButtonName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1337 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1338 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1339 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1340 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1341 case 2://hovering over portraits
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1342 if (pButton->uWidth != 0 && pButton->uHeight != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1343 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1344 uint distW = pX - pButton->uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1345 uint distY = pY - pButton->uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1346
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1347 double ratioX = 1.0 * (distW*distW) / (pButton->uWidth*pButton->uWidth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1348 double ratioY = 1.0 * (distY*distY) / (pButton->uHeight*pButton->uHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1349
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1350 if (ratioX + ratioY < 1.0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1351 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1352 pMessageType2 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1353 if ( pMessageType2 != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1354 pMessageQueue_50CBD0->AddGUIMessage(pMessageType2, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1355 GameUI_SetFooterString(pButton->pButtonName); // for character name
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1356 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1357 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1358 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1359 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1360 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1361 case 3:// click on skill
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1362 if ( pX >= pButton->uX && pX <= pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1363 && pY >= pButton->uY && pY <= pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1364 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1365 requiredSkillpoints = (LOBYTE(pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param]) & 0x3F) + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1366 if ( pPlayers[uActiveCharacter]->uSkillPoints < requiredSkillpoints )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1367 sprintf(Str1, pGlobalTXT_LocalizationStrings[469], requiredSkillpoints - pPlayers[uActiveCharacter]->uSkillPoints);// "You need %d more Skill Points to advance here"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1368 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1369 sprintf(Str1, pGlobalTXT_LocalizationStrings[468], requiredSkillpoints);// "Clicking here will spend %d Skill Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1370 GameUI_SetFooterString(Str1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1371 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1372 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1373 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1374 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1375 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1376 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1377 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1378 if ( pWindow->uFrameHeight == 480 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1379 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1380 //DebugBreak(); //Why is this condition here (in the original too)? Might check fullscreen windows. Let Silvo know if you find out
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1381 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1382 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1383 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1384 //The game never gets to this point even in the original. It's also bugged(neither branch displays anything).
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1385 //TODO fix these and move them up before the window check loop.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1386 if ( pCurrentScreen == SCREEN_CHEST )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1387 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1388 Chest::ChestUI_WritePointedObjectStatusString();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1389 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1390 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1391 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1392 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1393 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1394 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1395 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1396 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1397 else if ( pCurrentScreen == SCREEN_HOUSE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1398 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1399 if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1400 || (v16 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]], v16 == 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1401 || v16 == -65536 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1402 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1403 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1404 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1405 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1406 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1407 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1408 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1409 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1410 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1411 pItemGen = (ItemGen *)((char *)&pParty->pPickedItem + 36 * (v16 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1412 GameUI_SetFooterString(pItemGen->GetDisplayName());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1413 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1414 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1415 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1416 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1417 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1418 if ( pY < 350 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1419 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1420 v14 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1421 if ( v14 == 0 || v14 == -65536 || v14 >= 5000 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1422 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1423 if ( pMouse->uPointingObjectID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1424 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1425 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1426 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1427 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1428 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1429 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1430 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1431 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1432 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1433 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1434 pItemGen = (ItemGen *)&pPlayers[uActiveCharacter]->pInventoryItemList[v14-1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1435 GameUI_SetFooterString(pItemGen->GetDisplayName());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1436 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1437 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1438 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1439 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1440 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1441 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1442 if ( (signed int)pX >= (signed int)pWindowList[0].uFrameX && (signed int)pX <= (signed int)pWindowList[0].uFrameZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1443 && (signed int)pY >= (signed int)pWindowList[0].uFrameY && (signed int)pY <= (signed int)pWindowList[0].uFrameW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1444 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1445 for ( pButton = pWindowList[0].pControlsHead; pButton != nullptr; pButton = pButton->pNext )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1446 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1447 switch (pButton->uButtonType)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1448 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1449 case 1:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1450 if ( (signed int)pX >= (signed int)pButton->uX && (signed int)pX <= (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1451 && (signed int)pY >= (signed int)pButton->uY && (signed int)pY <= (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1452 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1453 pMessageType3 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1454 if ( pMessageType3 == 0 ) // For books
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1455 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1456 GameUI_SetFooterString(pButton->pButtonName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1457 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1458 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1459 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1460 pMessageQueue_50CBD0->AddGUIMessage(pMessageType3, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1461 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1462 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1463 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1464 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1465 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1466 case 2://hovering over portraits
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1467 if (pButton->uWidth != 0 && pButton->uHeight != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1468 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1469 uint distW = pX - pButton->uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1470 uint distY = pY - pButton->uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1471
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1472 double ratioX = 1.0 * (distW*distW) / (pButton->uWidth*pButton->uWidth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1473 double ratioY = 1.0 * (distY*distY) / (pButton->uHeight*pButton->uHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1474
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1475 if (ratioX + ratioY < 1.0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1476 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1477 pMessageType2 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1478 if ( pMessageType2 != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1479 pMessageQueue_50CBD0->AddGUIMessage(pMessageType2, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1480 GameUI_SetFooterString(pButton->pButtonName); // for character name
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1481 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1482 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1483 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1484 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1485 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1486 case 3:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1487 if ( pX >= pButton->uX && pX <= pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1488 && pY >= pButton->uY && pY <= pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1489 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1490 requiredSkillpoints = (LOBYTE(pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param]) & 0x3F) + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1491 if ( pPlayers[uActiveCharacter]->uSkillPoints < requiredSkillpoints )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1492 sprintf(Str1, pGlobalTXT_LocalizationStrings[469], requiredSkillpoints - pPlayers[uActiveCharacter]->uSkillPoints);// "You need %d more Skill Points to advance here"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1493 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1494 sprintf(Str1, pGlobalTXT_LocalizationStrings[468], requiredSkillpoints);// "Clicking here will spend %d Skill Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1495 GameUI_SetFooterString(Str1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1496 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1497 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1498 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1499 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1500 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1501 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1502 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1503 //pMouse->uPointingObjectID = sub_46A99B(); //for software
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1504 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1505 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1506 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1507 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1508 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1509 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1510 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1511 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1512
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1513 //----- (0044158F) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1514 void GameUI_DrawCharacterSelectionFrame()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1515 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1516 if ( uActiveCharacter )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1517 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[uActiveCharacter - 1] - 9, 380,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1518 pIcons_LOD->GetTexture(uTextureID_GameUI_CharSelectionFrame));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1519 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1520
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1521 //----- (0044162D) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1522 void GameUI_DrawPartySpells()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1523 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1524 unsigned int v0; // ebp@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1525 Texture *spell_texture; // [sp-4h] [bp-1Ch]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1526 //Texture *v9; // [sp-4h] [bp-1Ch]@21
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1527
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1528 v0 = (signed __int64)((double)GetTickCount() * 0.050000001);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1529 //v1 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1530 for (uint i = 0; i < 14; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1531 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1532 //v2 = byte_4E5DD8[v1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1533 if (pParty->pPartyBuffs[byte_4E5DD8[i]].uExpireTime)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1534 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1535 Texture* tex = pIcons_LOD->GetTexture(pTextureIDs_PartyBuffIcons[i]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1536 //v3 = pTextureIDs_PartyBuffIcons[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1537 pRenderer->_4A65CC(pPartySpellbuffsUI_XYs[i][0],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1538 pPartySpellbuffsUI_XYs[i][1], tex, tex,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1539 v0 + 20 * pPartySpellbuffsUI_smthns[i], 0, 63);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1540 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1541 //++v1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1542 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1543 //while ( v1 < 14 );
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1544 if (pCurrentScreen == SCREEN_GAME || pCurrentScreen == SCREEN_NPC_DIALOGUE)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1545 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1546 if (pParty->FlyActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1547 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1548 if ( pParty->bFlying )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1549 spell_texture = pIcons_LOD->GetTexture(pIconsFrameTable->GetFrame(uIconIdx_FlySpell, v0)->uTextureID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1550 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1551 spell_texture = pIcons_LOD->GetTexture(pIconsFrameTable->GetFrame(uIconIdx_FlySpell, 0)->uTextureID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1552 //if ( pRenderer->pRenderD3D )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1553 pRenderer->DrawTextureIndexed(8, 8, spell_texture);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1554 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1555 pRenderer->DrawTextureTransparent(8, 8, v7);*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1556 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1557 if ( pParty->WaterWalkActive() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1558 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1559 if ( pParty->uFlags & PARTY_FLAGS_1_STANDING_ON_WATER )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1560 spell_texture = pIcons_LOD->GetTexture(pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, v0)->uTextureID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1561 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1562 spell_texture = pIcons_LOD->GetTexture(pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, 0)->uTextureID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1563 //if ( pRenderer->pRenderD3D )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1564 pRenderer->DrawTextureIndexed(396, 8, spell_texture);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1565 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1566 pRenderer->DrawTextureTransparent(396, 8, v9);*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1567 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1568 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1569 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1570 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1571 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_HAMMERHANDS].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1572 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 427, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Hammerhands));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1573 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1574 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 393, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Bless));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1575 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_PRESERVATION].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1576 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 410, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Preservation));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1577 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_PAIN_REFLECTION].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1578 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 444, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_PainReflection));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1579 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1580 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1581
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1582 //----- (004921C1) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1583 void GameUI_DrawPortraits(unsigned int _this)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1584 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1585 unsigned int face_expression_ID; // eax@17
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1586 PlayerFrame *pFrame; // eax@21
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1587 int pTextureID; // eax@57
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1588 Texture *pPortrait; // [sp-4h] [bp-1Ch]@27
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1589
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1590 if ( _A750D8_player_speech_timer )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1591 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1592 _A750D8_player_speech_timer -= (signed int)pMiscTimer->uTimeElapsed;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1593 if ( _A750D8_player_speech_timer <= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1594 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1595 if ( pPlayers[uSpeakingCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1596 pPlayers[uSpeakingCharacter]->PlaySound(PlayerSpeechID, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1597 _A750D8_player_speech_timer = 0i64;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1598 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1599 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1600
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1601 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1602 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1603 Player* pPlayer = &pParty->pPlayers[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1604 if ( pPlayer->IsEradicated() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1605 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1606 pPortrait = pTexture_PlayerFaceEradicated;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1607 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1608 pRenderer->DrawTranslucent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i], 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1609 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1610 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1, 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1611 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1612 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1613 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1614 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1615 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1616 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1617 if (pPlayer->IsDead())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1618 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1619 pPortrait = pTexture_PlayerFaceDead;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1620 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1621 pRenderer->DrawTranslucent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i], 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1622 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1623 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1, 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1624 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1625 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1626 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1627 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1628 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1629 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1630 face_expression_ID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1631 for ( uint j = 0; j < pPlayerFrameTable->uNumFrames; ++j )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1632 if ( pPlayerFrameTable->pFrames[j].expression == pPlayer->expression )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1633 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1634 face_expression_ID = j;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1635 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1636 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1637 if ( face_expression_ID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1638 face_expression_ID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1639 if (pPlayer->expression == CHARACTER_EXPRESSION_21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1640 pFrame = pPlayerFrameTable->GetFrameBy_y(&pPlayer->_expression21_frameset, &pPlayer->_expression21_animtime, pMiscTimer->uTimeElapsed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1641 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1642 pFrame = pPlayerFrameTable->GetFrameBy_x(face_expression_ID, pPlayer->uExpressionTimePassed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1643 if (pPlayer->field_1AA2 != pFrame->uTextureID - 1 || _this )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1644 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1645 pPlayer->field_1AA2 = pFrame->uTextureID - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1646 pPortrait = (Texture *)pTextures_PlayerFaces[i][pPlayer->field_1AA2];//pFace = (Texture *)pTextures_PlayerFaces[i][pFrame->uTextureID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1647 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1648 pRenderer->DrawTranslucent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i], 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1649 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1650 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1, 388, pPortrait);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1651 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1652 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1653 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1654 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1655 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1656 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1657 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1658 if ( pParty->bTurnBasedModeOn == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1659 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1660 if ( pTurnEngine->turn_stage != TE_WAIT )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1661 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1662 if (PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1663 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1664 if ( pTurnEngine->uActorQueueSize > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1665 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1666 for (uint i = 0; i < (uint)pTurnEngine->uActorQueueSize; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1667 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1668 if (PID_TYPE(pTurnEngine->pQueue[i].uPackedID) != OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1669 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1670 pTextureID = dword_5079D0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1671 if ( pParty->uFlags & 0x10 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1672 pTextureID = dword_5079CC;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1673 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1674 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1675 if ( pParty->uFlags & 0x20 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1676 pTextureID = dword_5079C8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1677 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1678 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[PID_ID(pTurnEngine->pQueue[i].uPackedID)] - 4, 385, pIcons_LOD->GetTexture(pTextureID));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1679 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1680 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1681 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1682 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1683 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1684 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1685 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1686 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1687 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1688 if (pParty->pPlayers[i].CanAct() && !pParty->pPlayers[i].uTimeToRecovery)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1689 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1690 pTextureID = dword_5079D0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1691 if ( pParty->uFlags & 0x10 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1692 pTextureID = dword_5079CC;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1693 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1694 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1695 if ( pParty->uFlags & 0x20 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1696 pTextureID = dword_5079C8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1697 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1698 pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] - 4, 385, pIcons_LOD->GetTexture(pTextureID));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1699 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1700 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1701 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1702 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1703
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1704 //----- (00441D38) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1705 void GameUI_DrawMinimap(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned int uZoom, unsigned int bRedrawOdmMinimap)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1706 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1707 int uHeight; // ebx@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1708 signed int pW; // ebx@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1709 int v15; // eax@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1710 double v20; // st7@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1711 signed int v27; // eax@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1712 //unsigned __int16 *v28; // ecx@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1713 signed int v29; // edi@40
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1714 int pPoint_X; // edi@72
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1715 int pPoint_Y; // ebx@72
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1716 unsigned int lPitch; // [sp+20h] [bp-34h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1717 signed int pY; // [sp+20h] [bp-34h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1718 signed int pX; // [sp+24h] [bp-30h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1719 signed int v70; // [sp+24h] [bp-30h]@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1720 signed int uBluea; // [sp+28h] [bp-2Ch]@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1721 int v73; // [sp+2Ch] [bp-28h]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1722 signed int uCenterY; // [sp+48h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1723 signed int uCenterX; // [sp+4Ch] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1724 signed int uWidth; // [sp+5Ch] [bp+8h]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1725 signed int pZ; // [sp+60h] [bp+Ch]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1726 float uWb; // [sp+60h] [bp+Ch]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1727 unsigned int pColor;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1728
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1729 uCenterX = (uX + uZ) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1730 uCenterY = (uY + uW) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1731 lPitch = pRenderer->uTargetSurfacePitch;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1732 bool bWizardEyeActive = pParty->WizardEyeActive();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1733 int uWizardEyeSkillLevel = pParty->WizardEyeSkillLevel();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1734 if ( CheckHiredNPCSpeciality(Cartographer) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1735 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1736 bWizardEyeActive = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1737 uWizardEyeSkillLevel = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1738 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1739
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1740 if ( wizard_eye )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1742 bWizardEyeActive = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1743 uWizardEyeSkillLevel = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1744 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1745 pRenderer->SetRasterClipRect(uX, uY, uZ - 1, uW - 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1746 uHeight = uW - uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1747 uWidth = uZ - uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1748
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1749 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1750 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1751 uchar* pMapLod0 = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pLevelOfDetail0_prolly_alpha_mask;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1752 ushort* pPal = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pPalette16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1753 v73 = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / (signed int)uZoom;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1754 v20 = (double)(pParty->vPosition.x + 32768) / (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1755 uWb = (double)(32768 - pParty->vPosition.y) / (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1756 switch (uZoom)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1757 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1758 case 512:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1759 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1760 v20 = v20 - (double)(uWidth / 2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1761 uWb = uWb - (double)(uHeight / 2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1762 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1763 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1764 case 1024:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1765 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1766 v20 = v20 - (double)(uWidth / 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1767 uWb = uWb - (double)(uHeight / 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1768 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1769 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1770 case 2048:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1771 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1772 v20 = v20 - (double)(uWidth / 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1773 uWb = uWb - (double)(uHeight / 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1774 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1775 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1776 default: assert(false);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1777 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1778
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1779 static unsigned __int16 pOdmMinimap[117][137];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1780 assert(sizeof(pOdmMinimap) == 137 * 117 * sizeof(short));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1781
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1782 v70 = floorf(v20 * 65536.0 + 0.5f);//LODWORD(v24);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1783 uBluea = floorf(uWb * 65536.0 + 0.5f);//LODWORD(v25);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1784 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1785 //v28 = &pRenderer->pTargetSurface[uX + uY * lPitch];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1786
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1787 if (pMapLod0 && bRedrawOdmMinimap)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1788 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1789 assert(uWidth == 137 && uHeight == 117);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1790 //auto pMinimap = (unsigned __int16 *)pOdmMinimap;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1791
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1792 ushort mapWidth = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uTextureWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1793
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1794 v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1795 for (int y = 0; y < uHeight; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1796 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1797 uchar* pMapLod0Line = &pMapLod0[v27 * mapWidth];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1798 for (int x = 0; x < uWidth; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1799 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1800 //*pMinimap++ = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1801 pRenderer->WritePixel16(uX + x, uY + y, pPal[pMapLod0Line[v29]]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1802 v29 = (v70 + x * v73) >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1803 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1804 uBluea += v73;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1805 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1806 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1807
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1808 /*v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1809 for (int y = 0; y < uHeight; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1810 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1811 uchar* pMapLod0Line = &pMapLod0[v27 * mapWidth];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1812 for (int x = 0; x < uWidth; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1813 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1814 //*pMinimap++ = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1815 pOdmMinimap[y][x] = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1816 v29 = (v70 + x * v73) >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1817 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1818 v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1819 v28 += 137 - uWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1820 uBluea += v73;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1821 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1822 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1823 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1824
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1825 /*for (int y = 0; y < 117; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1826 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1827 for (int x = 0; x < 137; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1828 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1829 *v28++ = pOdmMinimap[y][x];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1830 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1831 v28 += lPitch - 137;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1832 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1833 uNumBlueFacesInBLVMinimap = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1834 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1835 else// uCurrentlyLoadedLevelType == LEVEL_Indoor
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1836 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1837 pRenderer->FillRectFast(uX, uY, uZ - uX, uHeight, 0xF);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1838 uNumBlueFacesInBLVMinimap = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1839
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1840 for (uint i = 0; i < (uint)pIndoor->pMapOutlines->uNumOutlines; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1841 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1842 BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1843 //BLVFace* pFace1 = &pIndoor->pFaces[pOutline->uFace1ID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1844 //BLVFace* pFace2 = &pIndoor->pFaces[pOutline->uFace2ID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1845 if (pIndoor->pFaces[pOutline->uFace1ID].Visible() && pIndoor->pFaces[pOutline->uFace2ID].Visible())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1846 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1847 if ( pOutline->uFlags & 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1848 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1849 if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1850 (pIndoor->pFaces[pOutline->uFace1ID].Clickable() || pIndoor->pFaces[pOutline->uFace2ID].Clickable()) &&
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1851 (pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace1ID].uFaceExtraID].uEventID
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1852 || pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace2ID].uFaceExtraID].uEventID))
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1853 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1854 if (uNumBlueFacesInBLVMinimap < 49)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1855 pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1856 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1857 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1858 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1859 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1860 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1861 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1862 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1863 v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1864 if ( v15 > 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1865 v15 = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1866 pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1867 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1868 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1869 }
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1870 if (pIndoor->pFaces[pOutline->uFace1ID].uAttributes & FACE_UNKNOW7
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1871 || pIndoor->pFaces[pOutline->uFace2ID].uAttributes & FACE_UNKNOW7)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1872 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1873 pOutline->uFlags = pOutline->uFlags | 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1874 pIndoor->_visible_outlines[i >> 3] |= 1 << (7 - i % 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1875 if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1876 (pIndoor->pFaces[pOutline->uFace1ID].Clickable() || pIndoor->pFaces[pOutline->uFace2ID].Clickable()) &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1877 (pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace1ID].uFaceExtraID].uEventID || pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace2ID].uFaceExtraID].uEventID))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1878 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1879 if (uNumBlueFacesInBLVMinimap < 49)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1880 pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1881 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1882 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1883 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1884 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1885 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1886 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1887 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1888 v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1889 if ( v15 > 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1890 v15 = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1891 pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1892 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1893 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1894 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1895 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1896 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1897
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1898 for (uint i = 0; i < uNumBlueFacesInBLVMinimap; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1899 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1900 BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[pBlueFacesInBLVMinimapIDs[i]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1901 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1902 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1903 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1904 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1905 pRenderer->RasterLine2D(pX, pY, pZ, pW, ui_game_minimap_outline_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1906 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1907 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1908
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1909 //draw arrow on the minimap(include. Ritor1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1910 uint arrow_idx;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1911 unsigned int rotate = pParty->sRotationY & stru_5C6E00->uDoublePiMask;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1912 if ( (signed int)rotate <= 1920 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1913 arrow_idx = 6;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1914 else if ( (signed int)rotate < 1664 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1915 arrow_idx = 5;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1916 else if ( (signed int)rotate <= 1408 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1917 arrow_idx = 4;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1918 else if ( (signed int)rotate < 1152 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1919 arrow_idx = 3;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1920 else if ( (signed int)rotate <= 896 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1921 arrow_idx = 2;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1922 else if ( (signed int)rotate < 640 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1923 arrow_idx = 1;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1924 else if ( (signed int)rotate <= 384 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1925 arrow_idx = 0;
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
1926 else if ( (signed int)rotate < 128 || (signed int)rotate > 1920 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1927 arrow_idx = 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1928 pRenderer->DrawTextureTransparent(uCenterX - 3, uCenterY - 3, pIcons_LOD->GetTexture(pTextureIDs_pMapDirs[arrow_idx]));//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1929
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1930 //draw objects on the minimap
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1931 if ( bWizardEyeActive )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1932 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1933 if ( uWizardEyeSkillLevel >= 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1934 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1935 for ( uint i = 0; i < uNumSpriteObjects; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1936 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1937 if ( !pSpriteObjects[i].uType || !pSpriteObjects[i].uObjectDescID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1938 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1939 //if (uWizardEyeSkillLevel == 1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1940 pPoint_X = uCenterX + fixpoint_mul((pSpriteObjects[i].vPosition.x - pParty->vPosition.x), uZoom);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1941 pPoint_Y = uCenterY - fixpoint_mul((pSpriteObjects[i].vPosition.y - pParty->vPosition.y), uZoom);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1942 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1943 // pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1944 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1945 if (pObjectList->pObjects[pSpriteObjects[i].uObjectDescID].uFlags & OBJECT_DESC_UNPICKABLE)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1946 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1947 pRenderer->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X, pPoint_Y, ui_game_minimap_projectile_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1948 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1949 else if ( uZoom > 512 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1950 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1951 pRenderer->RasterLine2D(pPoint_X - 2, pPoint_Y, pPoint_X - 2, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1952 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1953 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1954 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 1, pPoint_X + 1, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1955 pRenderer->RasterLine2D(pPoint_X + 2, pPoint_Y, pPoint_X + 2, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1956 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1957 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1958 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1959 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1960 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1961 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1962 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1963 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1964 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1965 for ( uint i = 0; i < uNumActors; ++i )//draw actors( )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1966 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1967 if ( pActors[i].uAIState != Removed && pActors[i].uAIState != Disabled
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1968 && (pActors[i].uAIState == Dead || pActors[i].ActorNearby()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1969 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1970 pPoint_X = uCenterX + (fixpoint_mul((pActors[i].vPosition.x - pParty->vPosition.x), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1971 pPoint_Y = uCenterY - (fixpoint_mul((pActors[i].vPosition.y - pParty->vPosition.y), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1972 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1973 // && pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1974 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1975 pColor = ui_game_minimap_actor_friendly_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1976 if ( pActors[i].uAttributes & ACTOR_HOSTILE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1977 pColor = ui_game_minimap_actor_hostile_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1978 if ( pActors[i].uAIState == Dead)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1979 pColor = ui_game_minimap_actor_corpse_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1980 if ( uZoom > 1024 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1981 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1982 pRenderer->RasterLine2D(pPoint_X - 2, pPoint_Y - 1, pPoint_X - 2, pPoint_Y + 1, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1983 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 2, pPoint_X - 1, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1984 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1985 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 2, pPoint_X + 1, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1986 pRenderer->RasterLine2D(pPoint_X + 2, pPoint_Y - 1, pPoint_X + 2, pPoint_Y + 1, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1987 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1988 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1989 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1990 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1991 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1992 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1993 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1994 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1995 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1996 for ( uint i = 0; i < (signed int)uNumLevelDecorations; ++i )//draw items( )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1997 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1998 if ( pLevelDecorations[i].uFlags & 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1999 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2000 pPoint_X = uCenterX + (fixpoint_mul((pLevelDecorations[i].vPosition.x - pParty->vPosition.x), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2001 pPoint_Y = uCenterY - (fixpoint_mul((pLevelDecorations[i].vPosition.y - pParty->vPosition.y), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2002 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2003 // && pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2004 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2005 if ( (signed int)uZoom > 512 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2006 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2007 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2008 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2009 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 1, pPoint_X + 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2010 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2011 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2012 pRenderer->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X, pPoint_Y, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2013 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2014 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2015 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2016 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2017 pRenderer->DrawTextureTransparent(468, 0, pIcons_LOD->GetTexture(uTextureID_Minimap_Loop));//draw minimap_loop
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2018 pRenderer->SetTextureClipRect(541, 0, 567, 480);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2019 pRenderer->DrawTextureIndexed(floorf(((double)pParty->sRotationY * 0.1171875) + 0.5f) + 285, 136, pIcons_LOD->GetTexture(uTextureID_Compas));//draw compas
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2020 pRenderer->ResetTextureClipRect();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2021 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2022
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2023 //----- (00441498) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2024 void GameUI_DrawTorchlightAndWizardEye()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2025 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2026 if (pCurrentScreen == SCREEN_GAME
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2027 || pCurrentScreen == SCREEN_MENU
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2028 || pCurrentScreen == SCREEN_OPTIONS
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2029 || pCurrentScreen == SCREEN_REST
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2030 || pCurrentScreen == SCREEN_SPELL_BOOK
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2031 || pCurrentScreen == SCREEN_CHEST
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2032 || pCurrentScreen == SCREEN_SAVEGAME
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2033 || pCurrentScreen == SCREEN_LOADGAME
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2034 || pCurrentScreen == SCREEN_CHEST_INVENTORY
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2035 || pCurrentScreen == SCREEN_BOOKS
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2036 || pCurrentScreen == SCREEN_BRANCHLESS_NPC_DIALOG )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2037 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2038 if (pParty->TorchlightActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2039 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2040 IconFrame* icon = pIconsFrameTable->GetFrame((signed __int16)pUIAnum_Torchlight->uIconID, pEventTimer->Time());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2041 pRenderer->DrawTextureTransparent(pUIAnum_Torchlight->x, pUIAnum_Torchlight->y, pIcons_LOD->GetTexture(icon->uTextureID));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2042 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2043 if (pParty->WizardEyeActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2044 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2045 IconFrame* icon = pIconsFrameTable->GetFrame((signed __int16)pUIAnim_WizardEye->uIconID, pEventTimer->Time());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2046 pRenderer->DrawTextureTransparent(pUIAnim_WizardEye->x, pUIAnim_WizardEye->y, pIcons_LOD->GetTexture(icon->uTextureID));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2047 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2048 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2049 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2050 // 4E28F8: using guessed type int pCurrentScreen;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2051
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2052
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2053 //----- (00491F87) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2054 void GameUI_DrawHiredNPCs()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2055 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2056 unsigned int v13; // eax@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2057 char pContainer[20]; // [sp+Ch] [bp-30h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2058 signed int uFrameID; // [sp+24h] [bp-18h]@19
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2059 int v22; // [sp+34h] [bp-8h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2060 unsigned __int8 pNPC_limit_ID; // [sp+3Bh] [bp-1h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2061
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2062 if ( bNoNPCHiring != 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2063 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2064 pNPC_limit_ID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2065 v22 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2066 if (pParty->pHirelings[0].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2067 pTmpBuf[v22++] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2068 if (pParty->pHirelings[1].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2069 pTmpBuf[v22++] = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2070
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2071 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2072 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2073 if (pNPCStats->pNewNPCData[i].uFlags & 128)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2074 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2075 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2076 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2077 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2078 pTmpBuf[v22++] = i + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2079 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2080 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2081 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2082
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2083 for ( int i = pParty->hirelingScrollPosition; i < v22 && pNPC_limit_ID < 2; i++ )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2084 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2085 if ( (unsigned __int8)pTmpBuf[i] >= 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2086 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2087 sprintf(pContainer, "NPC%03d", pNPCStats->pNPCData[(unsigned __int8)pTmpBuf[i] + 499].uPortraitID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2088 pRenderer->DrawTextureIndexed(pHiredNPCsIconsOffsetsX[pNPC_limit_ID], pHiredNPCsIconsOffsetsY[pNPC_limit_ID],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2089 pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE)));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2090 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2091 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2092 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2093 sprintf(pContainer, "NPC%03d", pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].uPortraitID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2094 pRenderer->DrawTextureIndexed(pHiredNPCsIconsOffsetsX[pNPC_limit_ID], pHiredNPCsIconsOffsetsY[pNPC_limit_ID],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2095 pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE)));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2096 if ( pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].evt_A == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2097 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2098 uFrameID = pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].evt_B;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2099 v13 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2100 if (pIconsFrameTable->uNumIcons)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2101 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2102 for ( v13 = 0; v13 < pIconsFrameTable->uNumIcons; ++v13 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2103 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2104 if ( !_stricmp("spell96", pIconsFrameTable->pIcons[v13].pAnimationName) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2105 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2106 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2107 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2108 pRenderer->DrawTextureTransparent(pHiredNPCsIconsOffsetsX[pNPC_limit_ID], pHiredNPCsIconsOffsetsY[pNPC_limit_ID],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2109 &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(v13, uFrameID)->uTextureID]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2110 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2111 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2112 ++pNPC_limit_ID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2113 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2114 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2115 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2116
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2117 //----- (004178FE) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2118 unsigned int UI_GetHealthManaAndOtherQualitiesStringColor(signed int current_pos, signed int base_pos)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2119 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2120 unsigned __int16 R, G, B;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2121
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2122 if ( current_pos <= base_pos )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2123 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2124 if ( current_pos == base_pos )//White
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2125 return 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2126 if ( 100 * current_pos / base_pos >= 25 )//Yellow( current_pos > 1/4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2127 R = 255, G = 255, B = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2128 else//Red( current_pos < 1/4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2129 R = 255, G = 0, B = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2130 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2131 else//Green
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2132 R = 0, G = 255, B = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2133 return Color16(R, G, B);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2134 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2135
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2136 //----- (00417939) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2137 int GetConditionDrawColor(unsigned int uConditionIdx)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2138 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2139 switch (uConditionIdx)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2140 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2141 case Condition_Zombie:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2142 case Condition_Good:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2143 return ui_character_condition_normal_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2144
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2145 case Condition_Cursed:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2146 case Condition_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2147 case Condition_Fear:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2148 case Condition_Drunk:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2149 case Condition_Insane:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2150 case Condition_Poison_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2151 case Condition_Disease_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2152 return ui_character_condition_light_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2153
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2154 case Condition_Sleep:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2155 case Condition_Poison_Medium:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2156 case Condition_Disease_Medium:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2157 case Condition_Paralyzed:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2158 case Condition_Unconcious:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2159 return ui_character_condition_moderate_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2160
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2161 case Condition_Poison_Severe:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2162 case Condition_Disease_Severe:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2163 case Condition_Dead:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2164 case Condition_Pertified:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2165 case Condition_Eradicated:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2166 return ui_character_condition_severe_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2167 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2168 Error("Invalid condition (%u)", uConditionIdx);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2169 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2170
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2171 //----- (00495430) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2172 const char * GetReputationString(signed int a1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2173 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2174 if (a1 >= 25)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2175 return pGlobalTXT_LocalizationStrings[379]; // Hated
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2176 else if (a1 >= 6)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2177 return pGlobalTXT_LocalizationStrings[392]; // Unfriendly
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2178 else if (a1 >= -5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2179 return pGlobalTXT_LocalizationStrings[399]; // Neutral;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2180 else if (a1 >= -24)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2181 return pGlobalTXT_LocalizationStrings[402]; // Friendly
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2182 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2183 return pGlobalTXT_LocalizationStrings[434]; // Respected;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2184 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2185
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2186 //----- (00441A4E) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2187 __int16 __fastcall sub_441A4E(int a1)//for blessing
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2188 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2189 __int16 result; // ax@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2190 int v2; // ebx@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2191 // char *v3; // esi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2192 // int v4; // edi@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2193 bool v5; // ecx@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2194 SpriteFrame *pFrame; // eax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2195 //SpriteFrame *v7; // edi@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2196 int v8; // eax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2197 // unsigned __int16 v9; // ax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2198 RenderBillboardTransform_local0 v10; // [sp+Ch] [bp-5Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2199 int v11; // [sp+5Ch] [bp-Ch]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2200 int v12; // [sp+60h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2201 //int v13; // [sp+64h] [bp-4h]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2202
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2203 v10.sParentBillboardID = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2204 v10.pTarget = pRenderer->pTargetSurface;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2205 v10.pTargetZ = pRenderer->pActiveZBuffer;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2206 v10.uTargetPitch = pRenderer->GetRenderWidth();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2207 result = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2208 v2 = a1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2209 v10.uViewportX = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2210 v10.uViewportY = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2211 v10.uViewportZ = window->GetWidth() - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2212 v10.uViewportW = window->GetHeight() - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2213 v12 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2214 //v3 = (char *)&pOtherOverlayList->pOverlays[0].field_C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2215 //do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2216 for (uint i = 0; i < 50; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2217 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2218 if (pOtherOverlayList->pOverlays[i].field_6 > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2219 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2220 result = pOtherOverlayList->pOverlays[i].field_0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2221 if (pOtherOverlayList->pOverlays[i].field_0 >= 300)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2222 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2223 //v4 = result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2224 v5 = pOtherOverlayList->pOverlays[i].field_0 == v2 + 320
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2225 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 330
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2226 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 340
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2227 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 350;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2228 pOtherOverlayList->pOverlays[i].field_0 = v2 + 310;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2229 if (pOtherOverlayList->pOverlays[i].field_0 == v2 + 310 || v5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2230 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2231 if (!pOtherOverlayList->pOverlays[i].field_0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2232 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2233 pFrame = pSpriteFrameTable->GetFrame(pOverlayList->pOverlays[pOtherOverlayList->pOverlays[i].field_2].uSpriteFramesetID,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2234 pOtherOverlayList->pOverlays[i].field_4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2235 //v7 = v6;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2236 v11 = pOtherOverlayList->pOverlays[i].field_E;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2237 //v13 = pFrame->scale;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2238 //v13 = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2239 v10.uScreenSpaceX = pOtherOverlayList->pOverlays[i].field_8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2240 v10.uScreenSpaceY = pOtherOverlayList->pOverlays[i].field_A;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2241 v10._screenspace_x_scaler_packedfloat = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2242 v10._screenspace_y_scaler_packedfloat = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2243 v10.pPalette = PaletteManager::Get_Dark_or_Red_LUT(pFrame->uPaletteIndex, 0, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2244 v8 = pOtherOverlayList->pOverlays[i].field_2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2245 v10.sZValue = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2246 v10.uFlags = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2247 //v9 = pOverlayList->pOverlays[v8].uOverlayType;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2248 if (!pOverlayList->pOverlays[v8].uOverlayType || pOverlayList->pOverlays[v8].uOverlayType == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2249 v10.uScreenSpaceY += pSprites_LOD->pSpriteHeaders[pFrame->pHwSpriteIDs[0]].uHeight / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2250 result = pSprites_LOD->pSpriteHeaders[pFrame->pHwSpriteIDs[0]]._4AD2D1(&v10, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2251 ++v12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2252 if (v12 == 5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2253 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2254 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2255 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2256 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2257 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2258 //v3 += 20;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2259 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2260 //while ( (signed int)v3 < (signed int)&pOverlayList->pOverlays );
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2261 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2262 }