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