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