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