Mercurial > mm7
annotate mm7_2.cpp @ 2335:6e3ca612f132
int -> uint
author | Ritor1 |
---|---|
date | Wed, 02 Apr 2014 22:05:35 +0600 |
parents | ddb803517a48 |
children | d6887ee81068 |
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:
2235
diff
changeset
|
1 #define _CRT_SECURE_NO_WARNINGS |
0 | 2 #include <io.h> |
3 #include <direct.h> | |
1545 | 4 |
5 #include "OSAPI.h" | |
1016 | 6 |
1262 | 7 #include "Texture.h" |
8 #include "mm7_data.h" | |
2152 | 9 #include "mm7_unsorted_subs.h" |
1016 | 10 #include "VideoPlayer.h" |
11 #include "Sprites.h" | |
12 #include "BSPModel.h" | |
13 | |
14 #include "LightmapBuilder.h" | |
15 #include "DecalBuilder.h" | |
16 #include "ParticleEngine.h" | |
17 #include "Mouse.h" | |
18 #include "Keyboard.h" | |
19 #include "CShow.h" | |
20 #include "GammaControl.h" | |
21 #include "stru6.h" | |
22 | |
1935 | 23 #include "Actor.h" |
1016 | 24 #include "Vis.h" |
0 | 25 #include "MapInfo.h" |
26 #include "Game.h" | |
27 #include "GUIWindow.h" | |
28 #include "GUIFont.h" | |
29 #include "Party.h" | |
30 #include "AudioPlayer.h" | |
31 #include "Outdoor.h" | |
1637 | 32 #include "Outdoor_stuff.h" |
0 | 33 #include "Overlays.h" |
34 #include "Arcomage.h" | |
35 #include "LOD.h" | |
36 #include "Actor.h" | |
37 #include "Events.h" | |
38 #include "Viewport.h" | |
39 #include "FrameTableInc.h" | |
2037
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
40 #include "OurMath.h" |
515
cb0ad52d6a26
LayingItem -> SpriteObject (long-waited rename, old name was inaccurate and confused people)
Nomad
parents:
496
diff
changeset
|
41 #include "SpriteObject.h" |
0 | 42 #include "ObjectList.h" |
43 #include "Chest.h" | |
44 #include "PaletteManager.h" | |
45 #include "DecorationList.h" | |
46 #include "SaveLoad.h" | |
47 #include "stru123.h" | |
522 | 48 #include "stru176.h" |
2044 | 49 #include "Timer.h" |
0 | 50 #include "IconFrameTable.h" |
51 #include "GUIProgressBar.h" | |
52 #include "Bink_Smacker.h" | |
53 #include "PlayerFrameTable.h" | |
54 #include "TurnEngine.h" | |
55 #include "FactionTable.h" | |
56 #include "StorylineTextTable.h" | |
57 #include "Random.h" | |
924 | 58 #include "CastSpellInfo.h" |
0 | 59 #include "stru298.h" |
60 #include "Events2D.h" | |
61 #include "Log.h" | |
1299 | 62 #include "UI\UIHouses.h" |
189 | 63 #include "texts.h" |
522 | 64 #include "MM7.h" |
1262 | 65 #include "Lights.h" |
1815 | 66 #include "NewUI/MainMenu.h" |
1828
35c1e4ff6ba7
party_finds_gold to Party::PartyFindsGold, cleaned up, moved Level/Decoration.h reference out of Indoor.h
Grumpy7
parents:
1826
diff
changeset
|
67 #include "Level/Decoration.h" |
2052 | 68 #include "LuaVM.h" |
2290 | 69 #include "MMT.h" |
2052 | 70 |
71 //#include "lib/lua/lua.h" | |
2033 | 72 |
1913 | 73 int __stdcall aWinProc(HWND hWnd, UINT Msg, WPARAM wParam, unsigned int lParam); |
74 int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4); | |
75 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive); | |
76 bool __fastcall Initialize(HINSTANCE hInst, char *pCmdLine); | |
77 | |
78 | |
0 | 79 //----- (004BB756) -------------------------------------------------------- |
1413 | 80 int UseNPCSkill(NPCProf profession) |
0 | 81 { |
1413 | 82 switch (profession) |
83 { | |
84 case Healer: | |
85 { | |
86 for (int i = 0; i < 4; ++i) | |
87 pParty->pPlayers[i].sHealth = pParty->pPlayers[i].GetMaxHealth(); | |
88 } | |
89 break; | |
90 | |
91 case ExpertHealer: | |
92 { | |
93 for (int i = 0; i < 4; ++i) | |
94 { | |
1980 | 95 Player* player = &pParty->pPlayers[i]; |
1413 | 96 player->sHealth = player->GetMaxHealth(); |
97 | |
98 for (int j = 0; j < 14; ++j) | |
99 player->pConditions[i] = 0; | |
100 player->pConditions[18] = 0; | |
101 } | |
102 } | |
103 break; | |
104 | |
105 case MasterHealer: | |
106 { | |
107 for (int i = 0; i < 4; ++i) | |
108 { | |
1980 | 109 Player* player = &pParty->pPlayers[i]; |
1413 | 110 player->sHealth = player->GetMaxHealth(); |
111 | |
1980 | 112 int v5 = LODWORD(player->pConditions[19]);//*((int *)v4 - 32); |
113 int v6 = HIDWORD(player->pConditions[19]);//*((int *)v4 - 31); | |
1826 | 114 memset(player->pConditions.data(), 0, 0xA0u); |
1413 | 115 |
116 __debugbreak(); | |
2197 | 117 *(int *)&player->pActiveSkills[PLAYER_SKILL_SHIELD] = v5; |
118 *(int *)&player->pActiveSkills[PLAYER_SKILL_CHAIN] = v6; | |
1413 | 119 } |
120 } | |
121 break; | |
122 | |
2197 | 123 case Cook://Ïîâàð |
1413 | 124 { |
125 if (pParty->uNumFoodRations >= 13) | |
126 return 1; | |
127 | |
128 Party::GiveFood(1); | |
129 } | |
130 break; | |
131 | |
132 case Chef: | |
133 { | |
134 if (pParty->uNumFoodRations >= 13) | |
135 return 1; | |
136 | |
137 if (pParty->uNumFoodRations == 13) | |
138 Party::GiveFood(1); | |
139 else | |
140 Party::GiveFood(2); | |
141 } | |
142 break; | |
143 | |
144 case WindMaster: | |
0 | 145 { |
1413 | 146 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
147 { | |
148 ShowStatusBarString(pGlobalTXT_LocalizationStrings[494], 2); | |
149 pAudioPlayer->PlaySound(SOUND_203, 0, 0, -1, 0, 0, 0, 0); | |
150 } | |
151 else | |
152 { | |
1980 | 153 int v19 = pOtherOverlayList->_4418B1(10008, 203, 0, 65536); |
1413 | 154 pParty->pPartyBuffs[PARTY_BUFF_FLY].Apply(pParty->uTimePlayed + 60 * (256 * 2), 3, 1, v19, 0); |
155 pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags |= 1u; | |
156 pAudioPlayer->PlaySound(SOUND_11090, 0, 0, -1, 0, 0, 0, 0); | |
157 } | |
158 } | |
159 break; | |
160 | |
161 case WaterMaster: | |
162 { | |
1980 | 163 int v20 = pOtherOverlayList->_4418B1(10005, 201, 0, 65536); |
1413 | 164 pParty->pPartyBuffs[PARTY_BUFF_WATER_WALK].Apply(pParty->uTimePlayed + 60 * (256 * (2 + 1)), 3, 0, v20, 0); |
165 pParty->pPartyBuffs[PARTY_BUFF_WATER_WALK].uFlags |= 1u; | |
166 pAudioPlayer->PlaySound(SOUND_12040, 0, 0, -1, 0, 0, 0, 0); | |
167 } | |
168 break; | |
169 | |
170 case GateMaster: | |
171 { | |
172 pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 0, 0); | |
173 dword_50C9DC = 195; | |
174 ptr_50C9E0 = GetNPCData(sDialogue_SpeakingActorNPC_ID); | |
175 } | |
176 break; | |
177 | |
178 case Acolyte: _42777D_CastSpell_UseWand_ShootArrow(46, 0, 133, 0, 0); break; | |
179 case Piper: _42777D_CastSpell_UseWand_ShootArrow(51, 0, 133, 0, 0); break; | |
180 case FallenWizard: _42777D_CastSpell_UseWand_ShootArrow(86, 0, 133, 0, 0); break; | |
181 | |
182 case Teacher: | |
183 case Instructor: | |
184 case Armsmaster: | |
185 case Weaponsmaster: | |
186 case Apprentice: | |
187 case Mystic: | |
188 case Spellmaster: | |
189 case Trader: | |
190 case Merchant: | |
191 case Scout: | |
192 case Herbalist: | |
193 case Apothecary: | |
194 case Tinker: | |
195 case Locksmith: | |
196 case Fool: | |
197 case ChimneySweep: | |
198 case Porter: | |
199 case QuarterMaster: | |
200 case Factor: | |
201 case Banker: | |
202 case Horseman: | |
203 case Bard: | |
204 case Enchanter: | |
205 case Cartographer: | |
206 case Explorer: | |
207 case Pirate: | |
208 case Squire: | |
209 case Psychic: | |
210 case Gypsy: | |
211 case Diplomat: | |
212 case Duper: | |
213 case Burglar: | |
214 case Acolyte2: | |
215 case Initiate: | |
216 case Prelate: | |
217 case Monk: | |
218 case Sage: | |
219 case Hunter: | |
220 break; | |
221 | |
222 default: | |
223 assert(false && "Invalid enum value"); | |
224 } | |
225 return 0; | |
0 | 226 } |
227 | |
228 //----- (004BBA85) -------------------------------------------------------- | |
1529 | 229 void CheckBountyRespawnAndAward() |
0 | 230 { |
231 int i; // eax@2 | |
1529 | 232 int rand_monster_id; // edx@3 |
0 | 233 |
234 uDialogueType = 83; | |
235 pDialogueWindow->Release(); | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
236 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 350, WINDOW_MainMenu, 0, 0); |
1529 | 237 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34],// "Cancel" |
945 | 238 pIcons_LOD->GetTexture(uExitCancelTextureId), 0); |
832 | 239 pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0); |
1529 | 240 pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_0, 83, 0, "", 0); |
972 | 241 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2); |
747 | 242 dialog_menu_id = HOUSE_DIALOGUE_OTHER; |
1529 | 243 //get new monster for hunting |
1747
cecb080929c4
Party_stru0 renamed to PartyTimeStruct, fixed its members, renamed Party::field_3C to Party::PartyTimes, started Player::SetVariable refactoring start
Grumpy7
parents:
1736
diff
changeset
|
244 if ( pParty->PartyTimes.bountyHunting_next_generation_time[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] < (signed __int64)pParty->uTimePlayed ) |
1529 | 245 { |
246 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false; | |
1747
cecb080929c4
Party_stru0 renamed to PartyTimeStruct, fixed its members, renamed Party::field_3C to Party::PartyTimes, started Player::SetVariable refactoring start
Grumpy7
parents:
1736
diff
changeset
|
247 pParty->PartyTimes.bountyHunting_next_generation_time[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = (signed __int64)((double)(0x12750000 * (pParty->uCurrentMonth + 12i64 * pParty->uCurrentYear - 14015)) * 0.033333335); |
0 | 248 for ( i = rand(); ; i = rand() ) |
249 { | |
1529 | 250 rand_monster_id = i % 258 + 1; |
251 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = rand_monster_id; | |
252 if ( (unsigned __int16)rand_monster_id < 0x73u || (unsigned __int16)rand_monster_id > 0x84u ) | |
0 | 253 { |
1529 | 254 if ( ((unsigned __int16)rand_monster_id < 0xEBu || (unsigned __int16)rand_monster_id > 0xFCu) |
255 && ((unsigned __int16)rand_monster_id < 0x85u || (unsigned __int16)rand_monster_id > 0x96u) | |
256 && ((unsigned __int16)rand_monster_id < 0x97u || (unsigned __int16)rand_monster_id > 0xBAu) | |
257 && ((unsigned __int16)rand_monster_id < 0xC4u || (unsigned __int16)rand_monster_id > 0xC6u) ) | |
0 | 258 break; |
259 } | |
260 } | |
261 } | |
1529 | 262 bountyHunting_monster_id_for_hunting = pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]; |
263 if ( !pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
264 { | |
265 bountyHunting_text = pNPCTopics[351].pText; | |
266 if ( !pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
267 bountyHunting_text = pNPCTopics[353].pText; | |
268 } | |
269 else//get prize | |
270 { | |
271 if ( pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
0 | 272 { |
1828
35c1e4ff6ba7
party_finds_gold to Party::PartyFindsGold, cleaned up, moved Level/Decoration.h reference out of Indoor.h
Grumpy7
parents:
1826
diff
changeset
|
273 pParty->PartyFindsGold(100 * pMonsterStats->pInfos[(unsigned __int16)pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel, 0); |
1529 | 274 for ( uint i = 0; i < 4; ++i ) |
275 pParty->pPlayers[i].SetVariable(VAR_Award, 86); | |
276 pParty->uNumBountiesCollected += 100 * pMonsterStats->pInfos[pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel; | |
277 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = 0; | |
278 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false; | |
0 | 279 } |
1529 | 280 bountyHunting_text = pNPCTopics[352].pText; |
281 } | |
0 | 282 } |
283 | |
284 //----- (004BBCDD) -------------------------------------------------------- | |
1914 | 285 void Arena_SelectionFightLevel() |
0 | 286 { |
287 signed int v0; // ebp@3 | |
90 | 288 Actor *v1; // eax@4 |
0 | 289 __int16 v2; // cx@5 |
290 int v3; // esi@8 | |
291 Player *v4; // esi@14 | |
292 GUIButton *v5; // eax@18 | |
293 GUIButton *v6; // esi@19 | |
294 size_t v7; // [sp+10h] [bp-4h]@4 | |
295 | |
296 if ( pParty->field_7B5_in_arena_quest ) | |
297 { | |
298 if ( pParty->field_7B5_in_arena_quest == -1 ) | |
299 { | |
300 uDialogueType = 92; | |
301 } | |
302 else | |
303 { | |
304 v0 = 0; | |
90 | 305 if ( (signed int)uNumActors > 0 ) |
306 { | |
1202 | 307 v1 = pActors.data();//[0].uAIState; |
90 | 308 v7 = uNumActors; |
309 do | |
310 { | |
311 v2 = v1->uAIState; | |
848 | 312 if ( v1->uAIState == Dead || v2 == Removed || v2 == Disabled || (v3 = v1->uSummonerID) != 0 && PID_TYPE(v3) == OBJECT_Player) |
90 | 313 ++v0; |
314 ++v1; | |
315 --v7; | |
316 } | |
317 while ( v7 ); | |
318 } | |
319 if ( v0 >= (signed int)uNumActors || (signed int)uNumActors <= 0) | |
320 { | |
0 | 321 uDialogueType = 91; |
1861
a86c60679949
changing most of party arrays to std::arrays, some minor cleanups in actor.cpp
Grumpy7
parents:
1842
diff
changeset
|
322 v4 = pParty->pPlayers.data(); |
1529 | 323 ++*((char *)&pParty->monster_for_hunting_killed[3] + (unsigned __int8)pParty->field_7B5_in_arena_quest + 1); |
0 | 324 do |
325 { | |
326 v4->SetVariable(VAR_Award, (unsigned __int8)pParty->field_7B5_in_arena_quest + 3); | |
327 ++v4; | |
328 } | |
1861
a86c60679949
changing most of party arrays to std::arrays, some minor cleanups in actor.cpp
Grumpy7
parents:
1842
diff
changeset
|
329 while ( (signed int)v4 < (signed int)pParty->pHirelings.data() ); |
1828
35c1e4ff6ba7
party_finds_gold to Party::PartyFindsGold, cleaned up, moved Level/Decoration.h reference out of Indoor.h
Grumpy7
parents:
1826
diff
changeset
|
330 pParty->PartyFindsGold(gold_transaction_amount, 0); |
0 | 331 pAudioPlayer->PlaySound((SoundID)14060, 0, 0, -1, 0, 0, 0, 0); |
332 pParty->field_7B5_in_arena_quest = -1; | |
333 } | |
334 else | |
335 { | |
336 uDialogueType = 90; | |
337 pParty->vPosition.x = 3849; | |
338 pParty->vPosition.y = 5770; | |
339 pParty->vPosition.z = 1; | |
340 pParty->uFallStartY = 1; | |
341 pParty->sRotationY = 512; | |
342 pParty->sRotationX = 0; | |
343 pParty->uFallSpeed = 0; | |
344 pAudioPlayer->PlaySound((SoundID)14060, 0, 0, -1, 0, 0, 0, 0); | |
345 } | |
346 } | |
347 } | |
348 else | |
349 { | |
350 uDialogueType = 89; | |
351 v5 = pDialogueWindow->pControlsHead; | |
352 if ( v5 ) | |
353 { | |
354 do | |
355 { | |
356 v6 = v5->pNext; | |
1583 | 357 free(v5); |
0 | 358 v5 = v6; |
359 } | |
360 while ( v6 ); | |
361 } | |
362 pDialogueWindow->pControlsHead = 0; | |
363 pDialogueWindow->pControlsTail = 0; | |
364 pDialogueWindow->uNumControls = 0; | |
832 | 365 pBtn_ExitCancel = pDialogueWindow->CreateButton(0x1D7u, 0x1BDu, 0xA9u, 0x23u, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], |
945 | 366 pIcons_LOD->GetTexture(uExitCancelTextureId), 0); |
832 | 367 pDialogueWindow->CreateButton(0x1E0u, 0xA0u, 0x8Cu, 0x1Eu, 1, 0, UIMSG_SelectNPCDialogueOption, 0x55u, 0, "", 0); |
368 pDialogueWindow->CreateButton(0x1E0u, 0xBEu, 0x8Cu, 0x1Eu, 1, 0, UIMSG_SelectNPCDialogueOption, 0x56u, 0, "", 0); | |
369 pDialogueWindow->CreateButton(0x1E0u, 0xDCu, 0x8Cu, 0x1Eu, 1, 0, UIMSG_SelectNPCDialogueOption, 0x57u, 0, "", 0); | |
370 pDialogueWindow->CreateButton(0x1E0u, 0xFAu, 0x8Cu, 0x1Eu, 1, 0, UIMSG_SelectNPCDialogueOption, 0x58u, 0, "", 0); | |
972 | 371 pDialogueWindow->_41D08F_set_keyboard_control_group(4, 1, 0, 1); |
0 | 372 } |
373 } | |
374 | |
375 //----- (004BC109) -------------------------------------------------------- | |
2154 | 376 void ArenaFight() |
0 | 377 { |
378 int v0; // edi@1 | |
379 char *v1; // eax@7 | |
2334 | 380 // Player *v2; // edi@9 |
0 | 381 int v3; // eax@10 |
382 signed int v4; // esi@10 | |
2135 | 383 //signed __int64 v5; // qax@18 |
0 | 384 signed int v6; // ebx@34 |
2135 | 385 //char *v7; // edi@34 |
2334 | 386 // int v8; // eax@37 |
2135 | 387 //int v9; // esi@43 |
388 //int v10; // eax@44 | |
2334 | 389 // unsigned __int8 v11; // sf@44 |
390 // unsigned __int8 v12; // of@44 | |
0 | 391 signed int v13; // eax@49 |
392 int v14; // esi@49 | |
393 int v15; // edx@50 | |
394 int v16; // eax@51 | |
395 signed int v17; // ecx@51 | |
396 int v18; // edx@53 | |
397 int i; // edi@55 | |
2334 | 398 // int monster_y; // ST18_4@56 |
399 // int v21; // eax@56 | |
0 | 400 signed int v22; // [sp-4h] [bp-144h]@51 |
401 __int16 v23[100]; // [sp+Ch] [bp-134h]@39 | |
402 GUIWindow window; // [sp+D4h] [bp-6Ch]@1 | |
403 __int16 monster_ids[6]; // [sp+128h] [bp-18h]@56 | |
404 int v26; // [sp+134h] [bp-Ch]@1 | |
2135 | 405 //int v27; // [sp+138h] [bp-8h]@23 |
0 | 406 int num_monsters; // [sp+13Ch] [bp-4h]@17 |
407 | |
408 v26 = 0; | |
409 pParty->field_7B5_in_arena_quest = uDialogueType; | |
410 memcpy(&window, pDialogueWindow, sizeof(window)); | |
819 | 411 window.uFrameWidth = game_viewport_width; |
0 | 412 window.uFrameZ = 452; |
413 v0 = pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[575], &window, 13, 0) + 7; | |
414 pRenderer->BeginSceneD3D(); | |
415 | |
416 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) | |
417 pIndoor->Draw(); | |
418 else if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | |
2135 | 419 pOutdoor->Draw(); |
0 | 420 |
421 pRenderer->DrawBillboards_And_MaybeRenderSpecialEffects_And_EndScene(); | |
422 pRenderer->BeginScene(); | |
2154 | 423 //if ( pRenderer->pRenderD3D ) |
424 pRenderer->FillRectFast(pViewport->uViewportTL_X, pViewport->uViewportTL_Y, | |
425 pViewport->uViewportBR_X - pViewport->uViewportTL_X, | |
426 pViewport->uViewportBR_Y - pViewport->uViewportTL_Y + 1, | |
2155 | 427 0x7FF); |
0 | 428 |
1980 | 429 Texture* pTex = pIcons_LOD->GetTexture(uTextureID_Leather); |
1496 | 430 pRenderer->GetLeather(8, 352 - v0, pTex, pTex->uTextureHeight - v0); |
0 | 431 |
2135 | 432 pRenderer->DrawTextureIndexed(8, 347 - v0, pTexture_591428); |
433 v1 = FitTextInAWindow(pGlobalTXT_LocalizationStrings[575], pFontArrus, &window, 0xDu, 0);//Ïîæàëóéñòà, ïîäîæäèòå ïîêà ÿ âûçûâàþ ñóùåñòâ. Óäà÷è. | |
0 | 434 pDialogueWindow->DrawText(pFontArrus, 13, 354 - v0, 0, v1, 0, 0, 0); |
435 pRenderer->EndScene(); | |
436 pRenderer->Present(); | |
437 pParty->vPosition.x = 3849; | |
438 pParty->vPosition.y = 5770; | |
439 pParty->vPosition.z = 1; | |
440 pParty->uFallStartY = 1; | |
441 pParty->sRotationY = 512; | |
442 pParty->sRotationX = 0; | |
443 pParty->uFallSpeed = 0; | |
437 | 444 /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 ) |
0 | 445 { |
990 | 446 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape; |
0 | 447 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1; |
448 *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0; | |
449 ++pMessageQueue_50CBD0->uNumMessages; | |
437 | 450 }*/ |
451 pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 1, 0); | |
2135 | 452 //v2 = pParty->pPlayers.data(); |
453 for ( uint i = 0; i < 4; i++ ) | |
0 | 454 { |
2135 | 455 v3 = pParty->pPlayers[i].GetActualLevel(); |
0 | 456 v4 = v26; |
457 if ( v3 > v26 ) | |
458 { | |
2135 | 459 v26 = pParty->pPlayers[i].GetActualLevel(); |
460 v4 = pParty->pPlayers[i].GetActualLevel(); | |
0 | 461 } |
2135 | 462 //++v2; |
0 | 463 } |
2135 | 464 //while ( (signed int)v2 < (signed int)pParty->pHirelings.data() ); |
465 if ( uDialogueType == DIALOGUE_ARENA_SELECT_PAGE ) | |
0 | 466 { |
467 num_monsters = v4; | |
1416 | 468 v4 /= 2; |
469 } | |
2135 | 470 else if ( uDialogueType == DIALOGUE_ARENA_SELECT_SQUIRE ) |
0 | 471 { |
2135 | 472 //v5 = (signed __int64)((double)v26 * 1.5); |
473 num_monsters = (int)((double)v26 * 1.5); | |
1416 | 474 v4 /= 2; |
475 } | |
2135 | 476 else if ( uDialogueType == DIALOGUE_ARENA_SELECT_KNIGHT ) |
0 | 477 { |
2135 | 478 //LODWORD(v5) = 2 * v4; |
479 num_monsters = 2 * v4; | |
0 | 480 v4 /= 2; |
1416 | 481 } |
2135 | 482 else if ( uDialogueType == DIALOGUE_ARENA_SELECT_CHAMPION ) |
1416 | 483 { |
2135 | 484 num_monsters = 2 * v4; |
485 v4 /= 2; | |
1416 | 486 } |
0 | 487 if ( v4 < 1 ) |
488 v4 = 1; | |
489 if ( v4 > 100 ) | |
490 v4 = 100; | |
491 if ( num_monsters > 100 ) | |
492 num_monsters = 100; | |
493 if ( v4 < 2 ) | |
494 v4 = 2; | |
495 if ( num_monsters < 2 ) | |
496 num_monsters = 2; | |
497 v6 = 0; | |
2135 | 498 //v27 = 1; |
499 //v7 = (char *)&pMonsterStats->pInfos[1].uLevel; | |
500 for ( uint i = 1; i <= 258; i++ ) | |
0 | 501 { |
2135 | 502 if ( pMonsterStats->pInfos[i].uAIType != 1 )//if ( v7[8] != 1 ) |
0 | 503 { |
2135 | 504 if ( !MonsterStats::BelongsToSupertype(pMonsterStats->pInfos[i].uID, MONSTER_SUPERTYPE_8) ) //!MonsterStats::BelongsToSupertype(*((short *)v7 + 22), MONSTER_SUPERTYPE_8) |
0 | 505 { |
2135 | 506 //v8 = (unsigned __int8)pMonsterStats->pInfos[i].uLevel; |
507 if ( pMonsterStats->pInfos[i].uLevel >= v4 ) | |
0 | 508 { |
2135 | 509 if ( pMonsterStats->pInfos[i].uLevel <= num_monsters ) |
510 v23[v6++] = i; | |
0 | 511 } |
512 } | |
513 } | |
2135 | 514 // ++v27; |
515 //v7 += 88; | |
0 | 516 } |
2135 | 517 //while ( (signed int)v7 <= (signed int)&pMonsterStats->pInfos[258].uLevel ); |
0 | 518 num_monsters = 6; |
519 if ( v6 < 6 ) | |
520 num_monsters = v6; | |
2135 | 521 //v9 = 0; |
0 | 522 if ( num_monsters > 0 ) |
523 { | |
2135 | 524 for ( uint i = 0; i < num_monsters; i++ ) |
0 | 525 { |
2135 | 526 //v10 = rand(); |
527 //++v9; | |
528 //v12 = __OFSUB__(v9, num_monsters); | |
529 //v11 = v9 - num_monsters < 0; | |
530 //*((short *)&window.pControlsTail + v9 + 1) = v23[rand() % v6]; | |
531 monster_ids[i] = v23[rand() % v6]; | |
0 | 532 } |
2135 | 533 //while ( v11 ^ v12 ); |
0 | 534 } |
2135 | 535 if ( uDialogueType == DIALOGUE_ARENA_SELECT_PAGE ) |
0 | 536 { |
537 v16 = rand(); | |
538 v17 = 3; | |
539 v22 = 50; | |
1416 | 540 v18 = v16 % v17; |
541 v13 = v22; | |
542 v14 = v18 + 6; | |
543 } | |
2135 | 544 else if ( uDialogueType == DIALOGUE_ARENA_SELECT_SQUIRE ) |
0 | 545 { |
546 v16 = rand(); | |
547 v17 = 7; | |
548 v22 = 100; | |
549 v18 = v16 % v17; | |
550 v13 = v22; | |
551 v14 = v18 + 6; | |
1416 | 552 } |
2135 | 553 else if ( uDialogueType == DIALOGUE_ARENA_SELECT_KNIGHT ) |
0 | 554 { |
555 v15 = rand() % 11; | |
556 v13 = 200; | |
557 v14 = v15 + 10; | |
558 } | |
559 else | |
560 { | |
2135 | 561 if ( uDialogueType == DIALOGUE_ARENA_SELECT_CHAMPION ) |
0 | 562 { |
563 v13 = 500; | |
564 v14 = 20; | |
565 } | |
2135 | 566 //else |
567 //{ | |
568 //v14 = v27; | |
569 //v13 = gold_transaction_amount; | |
570 //} | |
0 | 571 } |
2135 | 572 gold_transaction_amount = v26 * v13; |
573 for ( i = 0; i < v14; ++i ) | |
2169 | 574 Actor::Arena_summon_actor(monster_ids[rand() % num_monsters], pMonsterArenaPlacements[i].x, pMonsterArenaPlacements[i].y, 1); |
0 | 575 pAudioPlayer->PlaySound((SoundID)14060, 0, 0, -1, 0, 0, 0, 0); |
576 } | |
577 | |
578 //----- (004BD8B5) -------------------------------------------------------- | |
1919 | 579 int HouseDialogPressCloseBtn() |
0 | 580 { |
581 if ( pMessageQueue_50CBD0->uNumMessages ) | |
582 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
1459 | 583 pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_CANCELLED); |
0 | 584 pKeyActionMap->ResetKeys(); |
520
35f28d4c0ff9
GlobalEventInfo changed to LevelDecoration* activeLevelDecoration
Gloval
parents:
519
diff
changeset
|
585 activeLevelDecoration = NULL; |
827 | 586 current_npc_text = 0; |
1917 | 587 if ( pDialogueNPCCount == 0) |
1919 | 588 return 0; |
589 | |
590 if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_SPECIAL && ShopTexture ) | |
0 | 591 { |
1919 | 592 ShopTexture->Release(); |
1917 | 593 ShopTexture = 0; |
594 } | |
595 | |
1919 | 596 switch(dialog_menu_id) |
1917 | 597 { |
1919 | 598 case -1: |
599 _4B4224_UpdateNPCTopics((int)((char *)pDialogueNPCCount - 1)); | |
600 pVideoPlayer->_4BF5B2(); | |
601 break; | |
602 | |
603 case HOUSE_DIALOGUE_SHOP_DISPLAY_EQUIPMENT: | |
604 case HOUSE_DIALOGUE_LEARN_SKILLS: | |
605 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_MAIN: | |
606 pVideoPlayer->_4BF5B2(); | |
607 UI_CreateEndConversationButton(); | |
608 dialog_menu_id = HOUSE_DIALOGUE_MAIN; | |
609 InitializaDialogueOptions(in_current_building_type); | |
610 break; | |
611 | |
612 case HOUSE_DIALOGUE_SHOP_SELL: | |
613 case HOUSE_DIALOGUE_SHOP_IDENTIFY: | |
614 case HOUSE_DIALOGUE_SHOP_REPAIR: | |
615 UI_CreateEndConversationButton(); | |
616 dialog_menu_id = HOUSE_DIALOGUE_SHOP_DISPLAY_EQUIPMENT; | |
617 InitializaDialogueOptions_Shops(in_current_building_type); | |
618 break; | |
619 | |
620 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_RULES: | |
621 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_VICTORY_CONDITIONS: | |
622 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_RESULT: | |
623 pVideoPlayer->_4BF5B2(); | |
624 UI_CreateEndConversationButton(); | |
625 dialog_menu_id = HOUSE_DIALOGUE_TAVERN_ARCOMAGE_MAIN; | |
626 InitializaDialogueOptions_Tavern(in_current_building_type); | |
627 break; | |
628 | |
629 case HOUSE_DIALOGUE_NULL: | |
630 case HOUSE_DIALOGUE_MAIN: | |
631 pDialogueNPCCount = 0; | |
632 pDialogueWindow->Release(); | |
633 dialog_menu_id = HOUSE_DIALOGUE_NULL; | |
634 pDialogueWindow = 0; | |
635 pIcons_LOD->SyncLoadedFilesCount(); | |
636 | |
637 if ( uNumDialogueNPCPortraits == 1 ) | |
638 return 0; | |
639 | |
640 pBtn_ExitCancel = window_SpeakInHouse->pControlsHead; | |
641 if ( uNumDialogueNPCPortraits > 0 ) | |
642 { | |
643 for ( uint i = 0; i < (unsigned int)uNumDialogueNPCPortraits; ++i ) | |
644 { | |
645 HouseNPCPortraitsButtonsList[i] = window_SpeakInHouse->CreateButton(pNPCPortraits_x[uNumDialogueNPCPortraits - 1][i], | |
646 pNPCPortraits_y[uNumDialogueNPCPortraits - 1][i], | |
647 63, 73, 1, 0, UIMSG_ClickHouseNPCPortrait, i, 0, byte_591180[i].data(), 0, 0, 0); | |
648 } | |
649 } | |
650 | |
651 pVideoPlayer->_4BF5B2(); | |
652 break; | |
653 | |
654 default: | |
655 pVideoPlayer->_4BF5B2(); | |
656 dialog_menu_id = HOUSE_DIALOGUE_MAIN; | |
657 InitializaDialogueOptions(in_current_building_type); | |
658 break; | |
0 | 659 } |
1917 | 660 return 1; |
0 | 661 } |
662 | |
663 //----- (004BF91E) -------------------------------------------------------- | |
2061 | 664 unsigned int GameOverMenu(void *ecx0) |
0 | 665 { |
1838 | 666 const char *v1; // eax@2 |
0 | 667 unsigned int result; // eax@3 |
2334 | 668 // Player *v3; // eax@7 |
669 // const char *v4; // ST24_4@9 | |
670 // int v5; // eax@9 | |
1838 | 671 const char *v6; // eax@10 |
672 const char *v7; // edx@10 | |
673 const char *v8; // ecx@12 | |
674 const char *v9; // eax@14 | |
0 | 675 unsigned int v10; // eax@25 |
676 GUIWindow pWindow; // [sp+34h] [bp-9Ch]@1 | |
1532 | 677 //MSG Msg; // [sp+88h] [bp-48h]@22 |
0 | 678 unsigned int v14; // [sp+A4h] [bp-2Ch]@5 |
679 void *v15; // [sp+A8h] [bp-28h]@1 | |
1838 | 680 const char *pInString; // [sp+ACh] [bp-24h]@5 |
0 | 681 unsigned int v17; // [sp+B0h] [bp-20h]@5 |
682 unsigned int v18; // [sp+B4h] [bp-1Ch]@5 | |
683 unsigned int v19; // [sp+B8h] [bp-18h]@5 | |
684 int v20; // [sp+BCh] [bp-14h]@7 | |
2334 | 685 // Player *i; // [sp+C0h] [bp-10h]@7 |
0 | 686 GUIFont *pFont; // [sp+C4h] [bp-Ch]@1 |
687 unsigned __int64 v23; // [sp+C8h] [bp-8h]@5 | |
688 | |
689 v15 = ecx0; | |
690 | |
691 RGBTexture _this; // [sp+Ch] [bp-C4h]@1 | |
692 //RGBTexture::RGBTexture(&this); | |
693 | |
2061 | 694 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_4000; |
0 | 695 bGameoverLoop = 1; |
696 pVideoPlayer->bStopBeforeSchedule = 0; | |
697 pAudioPlayer->StopChannels(-1, -1); | |
698 pRenderer->BeginScene(); | |
699 pRenderer->ClearBlack(); | |
700 pRenderer->EndScene(); | |
701 pRenderer->Present(); | |
165 | 702 pVideoPlayer->pResetflag = 0; |
484 | 703 _449B57_test_bit(pParty->_quest_bits, 99); |
0 | 704 _this.Load("winbg.pcx", 2); |
705 pRenderer->BeginScene(); | |
706 pRenderer->DrawTextureRGB(0, 0, &_this); | |
707 pRenderer->EndScene(); | |
708 free(_this.pPixels); | |
709 _this.pPixels = 0; | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
710 window_SpeakInHouse = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
0 | 711 pWindow.uFrameX = 75; |
712 pWindow.uFrameY = 60; | |
713 pWindow.uFrameWidth = 469; | |
714 pWindow.uFrameHeight = 338; | |
715 pWindow.uFrameZ = 543; | |
716 pWindow.uFrameW = 397; | |
180 | 717 pFont = LoadFont("endgame.fnt", "FONTPAL", NULL); |
1359
60cdc3eac407
_449B57_test_bit(pParty->_quest_bits, 99) and _449B57_test_bit(pParty->_quest_bits, 100) changed to Party::IsPartyGood, Party::IsPartyEvil, respectively
Grumpy7
parents:
1330
diff
changeset
|
718 if ( pParty->IsPartyGood() ) |
2133 | 719 v1 = pGlobalTXT_LocalizationStrings[675];//"Splendid job! With the activation of the Gate, a thousand worlds lie at your feet. Perhaps on one of them you will find the Ancients themselves, and return with the fruits their great civilization has to offer your world and your kingdom." |
0 | 720 else |
721 { | |
1359
60cdc3eac407
_449B57_test_bit(pParty->_quest_bits, 99) and _449B57_test_bit(pParty->_quest_bits, 100) changed to Party::IsPartyGood, Party::IsPartyEvil, respectively
Grumpy7
parents:
1330
diff
changeset
|
722 result = pParty->IsPartyEvil(); |
0 | 723 if ( !(short)result ) |
724 return result; | |
2133 | 725 v1 = pGlobalTXT_LocalizationStrings[676];//"Brilliant! The completion of the Heavenly Forge has provided enough Ancient weapons to crush all resistance to your plans. Soon the world will bow to your every whim! Still, you can't help but wonder what was beyond the Gate the other side was trying so hard to build." |
0 | 726 } |
727 pInString = v1; | |
728 v23 = pParty->uTimePlayed - 138240; | |
729 v19 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 0x18; | |
730 v14 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 0x18 / 0x1C / 0xC; | |
731 v18 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 0x18 / 0x1C % 0xC; | |
732 v17 = v19 % 0x1C; | |
733 if ( !v19 ) | |
734 v19 = 1; | |
735 pRenderer->BeginScene(); | |
2133 | 736 pWindow.DrawTitleText(pFont, 1, 0x23, 1, pGlobalTXT_LocalizationStrings[9], 3);//Congratulations! |
0 | 737 v23 = 0i64; |
738 v20 = 0; | |
2133 | 739 for ( uint i = 0; i < 4; i++ ) |
89 | 740 { |
2133 | 741 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[129], pParty->pPlayers[i].pName, pParty->pPlayers[i].GetBaseLevel(), pClassNames[pParty->pPlayers[i].classType]);//%s the Level %u %s |
742 pWindow.DrawTitleText(pFont, 1, i * (LOBYTE(pFont->uFontHeight) - 2) + LOBYTE(pFont->uFontHeight) + 46, 1, pTmpBuf.data(), 3); | |
743 v23 += pParty->pPlayers[i].uExperience;//__PAIR__(*(int *)(i - 4), *(int *)(i - 8)); | |
0 | 744 } |
745 v23 = (signed __int64)v23 / v19; | |
2133 | 746 v6 = FitTextInAWindow(pInString, pFont, &pWindow, 0xC, 0); |
747 pWindow.DrawTitleText(pFont, 1, 5 * (LOBYTE(pFont->uFontHeight) + 11), 1, v6, 0); | |
748 strcpy(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[37]);//Total Time: | |
0 | 749 v7 = pGlobalTXT_LocalizationStrings[56]; |
750 if ( v17 != 1 ) | |
751 v7 = pGlobalTXT_LocalizationStrings[57]; | |
752 v8 = pGlobalTXT_LocalizationStrings[146]; | |
753 if ( v18 != 1 ) | |
754 v8 = pGlobalTXT_LocalizationStrings[148]; | |
755 v9 = pGlobalTXT_LocalizationStrings[245]; | |
756 if ( v14 != 1 ) | |
757 v9 = pGlobalTXT_LocalizationStrings[132]; | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
758 sprintf(pTmpBuf2.data(), " %lu %s, %lu %s, %lu %s ", v14, v9, v18, v8, v17, v7); |
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
759 strcat(pTmpBuf.data(), pTmpBuf2.data()); |
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
760 pWindow.DrawTitleText(pFont, 1u, pWindow.uFrameHeight - 2 * LOBYTE(pFont->uFontHeight) - 5, 1u, pTmpBuf.data(), 3u); |
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
761 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[94], v23); |
2133 | 762 pWindow.DrawTitleText(pFont, 1, pWindow.uFrameHeight, 1u, pTmpBuf.data(), 3); |
2061 | 763 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; |
0 | 764 pRenderer->EndScene(); |
765 pRenderer->Present(); | |
2153 | 766 //if ( pRenderer->pRenderD3D ) |
0 | 767 pRenderer->pBeforePresentFunction(); |
2069 | 768 pRenderer->SaveWinnersCertificate("MM7_Win.Pcx"); |
1583 | 769 free(pFont); |
336 | 770 window_SpeakInHouse->Release(); |
771 window_SpeakInHouse = 0; | |
0 | 772 if ( v15 == (void *)2 ) |
773 { | |
774 result = pMessageQueue_50CBD0->uNumMessages; | |
775 } | |
776 else | |
777 { | |
778 LODWORD(v23) = GetTickCount() + 5000; | |
779 while ( (unsigned int)v23 > GetTickCount() ) | |
780 ; | |
1532 | 781 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 782 { |
1532 | 783 if (msg.message == WM_QUIT) |
0 | 784 Game_DeinitializeAndTerminate(0); |
1532 | 785 TranslateMessage(&msg); |
786 DispatchMessage(&msg); | |
0 | 787 } |
788 if ( pMessageQueue_50CBD0->uNumMessages ) | |
789 { | |
790 LOBYTE(v10) = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
791 pMessageQueue_50CBD0->uNumMessages = v10; | |
792 } | |
793 pKeyActionMap->ResetKeys(); | |
794 pKeyActionMap->uLastKeyPressed = 0; | |
795 do | |
796 { | |
1532 | 797 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 798 { |
1532 | 799 if (msg.message == WM_QUIT) |
0 | 800 Game_DeinitializeAndTerminate(0); |
1532 | 801 TranslateMessage(&msg); |
802 DispatchMessage(&msg); | |
0 | 803 } |
804 } | |
805 while ( !pKeyActionMap->uLastKeyPressed ); | |
806 result = pMessageQueue_50CBD0->uNumMessages; | |
807 if ( pMessageQueue_50CBD0->uNumMessages ) | |
808 { | |
809 result = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
810 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
811 } | |
812 } | |
813 if ( v15 ) | |
814 { | |
437 | 815 /*if ( (signed int)result < 40 ) |
816 { | |
817 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_Quit; | |
818 }*/ | |
819 pMessageQueue_50CBD0->AddMessage(UIMSG_Quit, 1, 0); | |
0 | 820 } |
821 else | |
822 { | |
437 | 823 pMessageQueue_50CBD0->AddMessage(UIMSG_ShowFinalWindow, 1, 0); |
824 /*if ( (signed int)result < 40 ) | |
825 { | |
826 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_C5; | |
0 | 827 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1; |
828 result = 3 * pMessageQueue_50CBD0->uNumMessages + 3; | |
829 *(&pMessageQueue_50CBD0->uNumMessages + result) = 0; | |
830 ++pMessageQueue_50CBD0->uNumMessages; | |
437 | 831 }*/ |
0 | 832 } |
833 bGameoverLoop = 0; | |
834 return result; | |
835 } | |
836 | |
1391
cc9a3a24d61d
Moved stru11, stru12 and some SW Rendering stuff to the archives.
Nomad
parents:
1359
diff
changeset
|
837 |
cc9a3a24d61d
Moved stru11, stru12 and some SW Rendering stuff to the archives.
Nomad
parents:
1359
diff
changeset
|
838 |
cc9a3a24d61d
Moved stru11, stru12 and some SW Rendering stuff to the archives.
Nomad
parents:
1359
diff
changeset
|
839 |
0 | 840 //----- (00451007) -------------------------------------------------------- |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
841 int stru350::sub_451007_scale_image_bicubic(unsigned short *pSrc, int srcWidth, int srcHeight, int srcPitch, //changing this to some library function might be a good idea |
0 | 842 unsigned short *pDst, int dstWidth, int dstHeight, int dstPitch, |
843 int a10, int a11) | |
844 { | |
845 int result; // eax@1 | |
846 float v17; // ST3C_4@12 | |
847 float v18; // ST38_4@12 | |
848 unsigned int v19; // esi@12 | |
849 int v21; // eax@18 | |
850 unsigned int v22; // ecx@25 | |
851 unsigned int v23; // eax@29 | |
1146
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
852 unsigned int heightRatioPlusOne; // [sp+Ch] [bp-7Ch]@12 |
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
853 unsigned int widthRatio; // [sp+Ch] [bp-7Ch]@218 |
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
854 unsigned int heightRatio; // [sp+14h] [bp-74h]@12 |
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
855 unsigned int widthRatioPlusOne; // [sp+14h] [bp-74h]@218 |
2334 | 856 // int v160; // [sp+3Ch] [bp-4Ch]@13 |
0 | 857 unsigned __int16 *v175; // [sp+4Ch] [bp-3Ch]@13 |
858 unsigned __int16 *v193; // [sp+5Ch] [bp-2Ch]@7 | |
2314 | 859 //signed int v231; // [sp+78h] [bp-10h]@7 |
0 | 860 __int64 v240; // [sp+7Ch] [bp-Ch]@12 |
861 unsigned int v251; // [sp+80h] [bp-8h]@218 | |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
862 unsigned int v252; // [sp+84h] [bp-4h]@218 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
863 float a6s; // [sp+A0h] [bp+18h]@218 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
864 float a6t; // [sp+A0h] [bp+18h]@218 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
865 unsigned int a6b; // [sp+A0h] [bp+18h]@218 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
866 int field_0_bits; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
867 int field_20_bits; |
1131
71ba92960bc5
banker's rounding template made as fast as before and a bit more safe
Grumpy7
parents:
1130
diff
changeset
|
868 |
1146
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
869 int field0value = this->field_0.field_C; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
870 switch(field0value) |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
871 { |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
872 case 8: field_0_bits = 1; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
873 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
874 case 16: field_0_bits = 2; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
875 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
876 case 32: field_0_bits = 4; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
877 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
878 default: |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
879 return field0value; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
880 } |
1144
f544cd6f7168
sub_451007_scale_image_bicubic cleanup - preparations for further condition body extractions
Grumpy7
parents:
1140
diff
changeset
|
881 int field20value = this->field_20.field_C; |
f544cd6f7168
sub_451007_scale_image_bicubic cleanup - preparations for further condition body extractions
Grumpy7
parents:
1140
diff
changeset
|
882 switch(field20value) |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
883 { |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
884 case 8: field_20_bits = 1; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
885 break; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
886 case 16: field_20_bits = 2; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
887 break; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
888 case 32: field_20_bits = 4; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
889 break; |
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
890 default: |
1144
f544cd6f7168
sub_451007_scale_image_bicubic cleanup - preparations for further condition body extractions
Grumpy7
parents:
1140
diff
changeset
|
891 return field20value; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
892 } |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
893 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
894 result = (int)pDst; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
895 v193 = pDst; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
896 if ( dstHeight <= 0 ) |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
897 return result; |
1600
0016b08ab621
stru350::sub_451007_scale_image_bicubic - fixing a memory access bug
Grumpy7
parents:
1546
diff
changeset
|
898 |
2212 | 899 //do |
2314 | 900 for ( int height = 0; height < dstHeight; height++ ) |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
901 { |
2314 | 902 for (int width = 0; width < dstWidth; width++) |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
903 { |
2314 | 904 a6s = (double)width / (double)dstWidth * (double)srcWidth; |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
905 widthRatio = bankersRounding(a6s); |
2314 | 906 a6t = (double)(width + 1) / (double)dstWidth * (double)srcWidth; |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
907 widthRatioPlusOne = bankersRounding(a6t); |
2314 | 908 |
909 v17 = (double)height / (double)dstHeight * (double)srcHeight; | |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
910 heightRatio = bankersRounding(v17); |
2314 | 911 v18 = (double)(height + 1) / (double)dstHeight * (double)srcHeight; |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
912 heightRatioPlusOne = bankersRounding(v18); |
2314 | 913 |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
914 v251 = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
915 v19 = (heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
916 v252 = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
917 a6b = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
918 v240 = 0i64; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
919 |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
920 v175 = (unsigned short*)((char *)pSrc + field_0_bits * (widthRatio + srcPitch * heightRatio)); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
921 for (int heightDiff = 0; heightDiff < heightRatioPlusOne - heightRatio; heightDiff++) |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
922 { |
2314 | 923 //int ratioDiff = widthRatioPlusOne - widthRatio; |
924 for(int ratioDiff = 0; ratioDiff < widthRatioPlusOne - widthRatio; ratioDiff++) | |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
925 { |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
926 if(field0value == 32) |
2314 | 927 v21 = _450FB1(((int*)v175)[ratioDiff]); |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
928 else if(field0value == 16) |
2314 | 929 v21 = _450FB1(((_WORD*)v175)[ratioDiff]); |
1901 | 930 else if (field0value == 8) |
2314 | 931 v21 = _450FB1(((unsigned __int8*)v175)[ratioDiff]); |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
932 v240 += ((unsigned int)v21 >> 24); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
933 a6b += BYTE2(v21); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
934 v252 += BYTE1(v21); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
935 v251 += (unsigned __int8)v21; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
936 } |
1901 | 937 if (field0value == 32) |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
938 v175 += 2 * srcPitch; |
1901 | 939 else if (field0value == 16) |
2314 | 940 v175 += srcPitch; |
1901 | 941 else if (field0value == 8) |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
942 v175 = (unsigned short*)((char *)v175 + 2 * srcPitch); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
943 } |
2314 | 944 |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
945 v22 = (unsigned int)v240 / ((heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio)); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
946 if ( v19 ) |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
947 { |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
948 a6b /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
949 v252 /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
950 v251 /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
951 } |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
952 if ( v22 != 255 ) |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
953 v22 &= 0x7FFFFFFFu; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
954 v23 = _450F55(v251 | ((v252 | ((a6b | (v22 << 8)) << 8)) << 8)); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
955 *(_DWORD *)v193 = v23; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
956 v193 = (unsigned __int16 *)((char *)v193 + field_20_bits); |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
957 } |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
958 v193 = (unsigned __int16 *)((char *)v193 + field_20_bits * (dstPitch - dstWidth)); |
2212 | 959 //++v231; |
2314 | 960 result = height; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
961 } |
2212 | 962 //while(v231 < dstHeight); |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
963 return result; |
0 | 964 } |
965 | |
966 //----- (0044F57C) -------------------------------------------------------- | |
967 void SpawnEncounter(MapInfo *pMapInfo, SpawnPointMM7 *spawn, int a3, int a4, int a5) | |
968 { | |
969 //MapInfo *v5; // esi@1 | |
970 //SpawnPointMM7 *v6; // ebx@1 | |
971 int v7; // eax@2 | |
972 char v8; // zf@5 | |
2334 | 973 // int v9; // edi@9 |
974 // int v10; // eax@9 | |
975 // int v11; // ecx@9 | |
0 | 976 int v12; // edx@9 |
2334 | 977 // int v13; // eax@9 |
978 // int v14; // eax@14 | |
979 // int v15; // ecx@14 | |
980 // int v16; // eax@19 | |
981 // int v17; // ecx@19 | |
0 | 982 int v18; // esi@31 |
983 //int pPosX; // ecx@32 | |
984 //int v20; // edx@32 | |
985 //int v21; // eax@32 | |
986 Actor *pMonster; // esi@35 | |
987 int v23; // edx@36 | |
988 signed int v24; // edi@36 | |
989 int v25; // ecx@36 | |
2334 | 990 // unsigned __int16 v26; // ax@47 |
0 | 991 MonsterDesc *v27; // edi@48 |
992 signed int v28; // eax@48 | |
2334 | 993 // __int16 v29; // cx@50 |
994 // __int16 v30; // ax@50 | |
995 // __int16 v31; // ax@50 | |
0 | 996 int v32; // eax@50 |
2334 | 997 // int v33; // edi@50 |
998 // int v34; // eax@50 | |
999 // int v35; // eax@50 | |
1000 // int v36; // eax@50 | |
0 | 1001 int v37; // eax@51 |
1002 int v38; // eax@52 | |
1003 int v39; // edi@52 | |
1004 std::string v40; // [sp-18h] [bp-100h]@60 | |
2334 | 1005 // void *v41; // [sp-14h] [bp-FCh]@50 |
0 | 1006 //void *v42; // [sp-10h] [bp-F8h]@50 |
1007 //size_t v43; // [sp-Ch] [bp-F4h]@50 | |
1008 const char *v44; // [sp-8h] [bp-F0h]@13 | |
1009 char *pTexture; // [sp-4h] [bp-ECh]@9 | |
1010 char Str[32]; // [sp+Ch] [bp-DCh]@60 | |
1011 char Str2[120]; // [sp+2Ch] [bp-BCh]@29 | |
1012 unsigned int uFaceID; // [sp+A4h] [bp-44h]@52 | |
1013 MonsterInfo *Src; // [sp+A8h] [bp-40h]@50 | |
1014 int v50; // [sp+ACh] [bp-3Ch]@47 | |
1015 char Source[32]; // [sp+B0h] [bp-38h]@20 | |
1016 int v52; // [sp+D0h] [bp-18h]@34 | |
1017 int v53; // [sp+D4h] [bp-14h]@34 | |
1018 int pSector; // [sp+D8h] [bp-10h]@32 | |
1019 int pPosX; // [sp+DCh] [bp-Ch]@32 | |
1020 int v56; // [sp+E0h] [bp-8h]@8 | |
1021 int v57; // [sp+E4h] [bp-4h]@1 | |
1022 | |
1023 //auto a2 = spawn; | |
1024 v57 = 0; | |
1025 //v5 = pMapInfo; | |
1026 //v6 = spawn; | |
1027 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) | |
1028 v7 = pOutdoor->ddm.field_C_alert; | |
1029 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) | |
1030 v7 = pIndoor->dlv.field_C_alert; | |
1031 else | |
1032 v7 = 0; | |
1033 if (v7) | |
1034 v8 = (spawn->uAttributes & 1) == 0; | |
1035 else | |
1036 v8 = (spawn->uAttributes & 1) == 1; | |
1037 if (v8) | |
1038 return; | |
1039 //result = (void *)(spawn->uIndex - 1); | |
1040 v56 = 1; | |
1041 switch (spawn->uIndex - 1) | |
1042 { | |
2173 | 1043 case 0: |
1044 //v9 = pMapInfo->uEncounterMonster1AtLeast; | |
1045 //v10 = rand(); | |
1046 //v11 = pMapInfo->uEncounterMonster1AtMost; | |
1047 //pTexture = pMapInfo->pEncounterMonster1Texture; | |
1048 v12 = rand() % (pMapInfo->uEncounterMonster1AtMost - pMapInfo->uEncounterMonster1AtLeast + 1); | |
1049 //v13 = pMapInfo->Dif_M1; | |
1050 v57 = pMapInfo->Dif_M1; | |
1051 v56 = pMapInfo->uEncounterMonster1AtLeast + v12; | |
1052 strcpy(Source, pMapInfo->pEncounterMonster1Texture); | |
1416 | 1053 break; |
2173 | 1054 case 3: |
1055 //pTexture = pMapInfo->pEncounterMonster1Texture; | |
1056 //v44 = "%s A"; | |
1057 sprintf(Source, "%s A", pMapInfo->pEncounterMonster1Texture); | |
1416 | 1058 break; |
2173 | 1059 case 4: |
1060 //pTexture = pMapInfo->pEncounterMonster2Texture; | |
1061 //v44 = "%s A"; | |
1062 sprintf(Source, "%s A", pMapInfo->pEncounterMonster2Texture); | |
1416 | 1063 break; |
2173 | 1064 case 5: |
1065 //pTexture = pMapInfo->pEncounterMonster3Texture; | |
1066 //v44 = "%s A"; | |
1067 sprintf(Source, "%s A", pMapInfo->pEncounterMonster3Texture); | |
1416 | 1068 break; |
2173 | 1069 case 1: |
1070 //v9 = pMapInfo->uEncounterMonster2AtLeast; | |
1071 //v14 = rand(); | |
1072 //v15 = pMapInfo->uEncounterMonster2AtMost; | |
1073 //pTexture = pMapInfo->pEncounterMonster2Texture; | |
1074 v12 = rand() % (pMapInfo->uEncounterMonster2AtMost - pMapInfo->uEncounterMonster2AtLeast + 1); | |
1075 //v13 = pMapInfo->Dif_M2; | |
1076 v57 = pMapInfo->Dif_M2; | |
1077 v56 = pMapInfo->uEncounterMonster2AtLeast + v12; | |
1078 strcpy(Source, pMapInfo->pEncounterMonster2Texture); | |
1416 | 1079 break; |
2173 | 1080 case 6: |
1081 //pTexture = pMapInfo->pEncounterMonster1Texture; | |
1082 //v44 = "%s B"; | |
1083 sprintf(Source, "%s B", pMapInfo->pEncounterMonster1Texture); | |
1416 | 1084 break; |
2173 | 1085 case 7: |
1086 //pTexture = pMapInfo->pEncounterMonster2Texture; | |
1087 //v44 = "%s B"; | |
1088 sprintf(Source, "%s B", pMapInfo->pEncounterMonster2Texture); | |
1416 | 1089 break; |
2173 | 1090 case 8: |
1091 //pTexture = pMapInfo->pEncounterMonster3Texture; | |
1092 //v44 = "%s B"; | |
1093 sprintf(Source, "%s B", pMapInfo->pEncounterMonster3Texture); | |
1416 | 1094 break; |
2173 | 1095 case 2: |
1096 //v9 = pMapInfo->uEncounterMonster3AtLeast; | |
1097 //v16 = rand(); | |
1098 //v17 = pMapInfo->uEncounterMonster3AtMost; | |
1099 //pTexture = pMapInfo->pEncounterMonster3Texture; | |
1100 v12 = rand() % (pMapInfo->uEncounterMonster3AtMost - pMapInfo->uEncounterMonster3AtLeast + 1); | |
1101 //v13 = pMapInfo->Dif_M3; | |
1102 v57 = pMapInfo->Dif_M3; | |
1103 v56 = pMapInfo->uEncounterMonster3AtLeast + v12; | |
1104 strcpy(Source, pMapInfo->pEncounterMonster3Texture); | |
1416 | 1105 break; |
2173 | 1106 case 9: |
1107 //pTexture = pMapInfo->pEncounterMonster1Texture; | |
1108 //v44 = "%s C"; | |
1109 sprintf(Source, "%s C", pMapInfo->pEncounterMonster1Texture); | |
1416 | 1110 break; |
2173 | 1111 case 10: |
1112 //pTexture = pMapInfo->pEncounterMonster2Texture; | |
1113 //v44 = "%s C"; | |
1114 sprintf(Source, "%s C", pMapInfo->pEncounterMonster2Texture); | |
1416 | 1115 break; |
2173 | 1116 case 11: |
1117 //pTexture = pMapInfo->pEncounterMonster3Texture; | |
1118 //v44 = "%s C"; | |
1119 sprintf(Source, "%s C", pMapInfo->pEncounterMonster3Texture); | |
0 | 1120 break; |
2173 | 1121 default: |
0 | 1122 return; |
1123 } | |
2173 | 1124 if (Source[0] == '0') |
1125 return; | |
1126 v57 += a3; | |
1127 if ( v57 > 4 ) | |
1128 v57 = 4; | |
1129 strcpy(Str2, Source); | |
1130 if ( a4 ) | |
1131 v56 = a4; | |
1132 v18 = v56; | |
1133 if ( (signed int)(v56 + uNumActors) >= 500 ) | |
1134 return; | |
1135 pSector = 0; | |
1136 pPosX = spawn->vPosition.x; | |
1137 a4 = spawn->vPosition.y; | |
1138 a3 = spawn->vPosition.z; | |
1139 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) | |
1140 pSector = pIndoor->GetSector(spawn->vPosition.x, spawn->vPosition.y, spawn->vPosition.z); | |
1141 v53 = 0; | |
1142 v52 = (((uCurrentlyLoadedLevelType != LEVEL_Outdoor) - 1) & 0x40) + 64; | |
1143 if ( v18 <= 0 ) | |
1144 return; | |
0 | 1145 for (uint i = v53; i < v56; ++i) |
1146 { | |
1147 pMonster = &pActors[uNumActors]; | |
1148 pActors[uNumActors].Reset(); | |
1149 if ( v57 ) | |
1150 { | |
1151 v23 = rand() % 100; | |
1152 v24 = 3; | |
1153 v25 = (unsigned __int16)word_4E8152[3 * v57]; | |
1154 if ( v23 >= v25 ) | |
1155 { | |
1156 if ( v23 < v25 + (unsigned __int16)word_4E8152[3 * v57 + 1] ) | |
1157 v24 = 2; | |
1158 } | |
1159 else | |
1160 { | |
1161 v24 = 1; | |
1162 } | |
1163 if ( v24 == 1 ) | |
1164 { | |
1165 pTexture = Source; | |
1166 v44 = "%s A"; | |
1167 } | |
1168 else | |
1169 { | |
1170 if ( v24 == 2 ) | |
1171 { | |
1172 pTexture = Source; | |
1173 v44 = "%s B"; | |
1174 } | |
1175 else | |
1176 { | |
1177 if ( v24 != 3 ) | |
1416 | 1178 continue; |
0 | 1179 pTexture = Source; |
1180 v44 = "%s C"; | |
1181 } | |
1182 } | |
1183 sprintf(Str2, v44, pTexture); | |
1184 } | |
751 | 1185 v50 = pMonsterList->GetMonsterIDByName(Str2); |
0 | 1186 pTexture = Str2; |
751 | 1187 if ( (signed __int16)v50 == -1 ) |
0 | 1188 { |
1189 sprintf(Str, "Can't create random monster: '%s'! See MapStats.txt and Monsters.txt!", pTexture); | |
1190 MessageBoxA(nullptr, Str, nullptr, 0); | |
1191 ExitProcess(0); | |
1192 } | |
751 | 1193 v27 = &pMonsterList->pMonsters[(signed __int16)v50]; |
1194 v28 = pMonsterStats->FindMonsterByTextureName(pTexture); | |
0 | 1195 if ( !v28 ) |
1196 v28 = 1; | |
1197 Src = &pMonsterStats->pInfos[v28]; | |
1198 strcpy(pMonster->pActorName, Src->pName); | |
1199 pMonster->sCurrentHP = Src->uHP; | |
1200 assert(sizeof(MonsterInfo) == 88); | |
1201 memcpy(&pMonster->pMonsterInfo, Src, sizeof(MonsterInfo)); | |
1202 pMonster->word_000086_some_monster_id = v50 + 1; | |
1203 pMonster->uActorRadius = v27->uMonsterRadius; | |
1204 pMonster->uActorHeight = v27->uMonsterHeight; | |
1205 pMonster->uMovementSpeed = v27->uMovementSpeed; | |
1206 pMonster->vInitialPosition.x = spawn->vPosition.x; | |
1207 pMonster->vPosition.x = spawn->vPosition.x; | |
1208 pMonster->uTetherDistance = 256; | |
1209 pMonster->vInitialPosition.y = a4; | |
1210 pMonster->vPosition.y = a4; | |
1211 pMonster->vInitialPosition.z = a3; | |
1212 pMonster->vPosition.z = a3; | |
1213 pMonster->uSectorID = pSector; | |
1214 pMonster->uGroup = spawn->uGroup; | |
2195 | 1215 pMonster->PrepareSprites(0); |
0 | 1216 pMonster->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly; |
1217 v32 = rand(); | |
2173 | 1218 a3 = fixpoint_mul(stru_5C6E00->Cos(v32 % 2048), v52); |
0 | 1219 pPosX = a3 + spawn->vPosition.x; |
2173 | 1220 a3 = fixpoint_mul(stru_5C6E00->Sin(v32 % 2048), v52); |
0 | 1221 a4 = a3 + spawn->vPosition.y; |
1222 a3 = spawn->vPosition.z; | |
1223 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | |
1416 | 1224 { |
1225 if ( a5 ) | |
1226 pMonster->uAttributes |= 0x080000; | |
1227 ++uNumActors; | |
1228 continue; | |
1229 } | |
2173 | 1230 v37 = pIndoor->GetSector(pPosX, a4, spawn->vPosition.z); |
0 | 1231 if ( v37 == pSector ) |
1232 { | |
723 | 1233 v38 = BLV_GetFloorLevel(pPosX, a4, a3, v37, &uFaceID); |
0 | 1234 v39 = v38; |
1235 if ( v38 != -30000 ) | |
1236 { | |
1237 if ( abs(v38 - a3) <= 1024 ) | |
1238 { | |
1239 a3 = v39; | |
1240 if ( a5 ) | |
1241 pMonster->uAttributes |= 0x080000; | |
1242 ++uNumActors; | |
1416 | 1243 continue; |
0 | 1244 } |
1245 } | |
1246 } | |
1247 ; | |
1248 //v53 = (char *)v53 + 1; | |
1249 //result = v53; | |
1250 } | |
1251 //while ( (signed int)v53 < v56 ); | |
1252 } | |
1253 | |
1254 //----- (0044FA4C) -------------------------------------------------------- | |
1255 signed int __fastcall sub_44FA4C_spawn_light_elemental(int a1, int a2, int a3) | |
1256 { | |
1257 signed int v3; // ecx@6 | |
90 | 1258 Actor *v4; // edx@7 |
0 | 1259 signed int result; // eax@13 |
1260 Actor *v6; // esi@16 | |
1261 char *v7; // ebx@16 | |
1262 MonsterDesc *v8; // edi@16 | |
1263 unsigned __int16 v9; // ax@16 | |
1264 int v10; // ebx@16 | |
1052 | 1265 //int v11; // edi@16 |
1266 //int v12; // eax@16 | |
1267 //int v13; // ecx@16 | |
1268 //int v14; // ebx@16 | |
0 | 1269 const char *v15; // [sp-4h] [bp-24h]@2 |
1052 | 1270 //unsigned __int16 v16; // [sp+0h] [bp-20h]@1 |
1271 //int v17; // [sp+4h] [bp-1Ch]@1 | |
0 | 1272 unsigned int uFaceID; // [sp+8h] [bp-18h]@16 |
1273 int v19; // [sp+Ch] [bp-14h]@16 | |
1274 size_t v20; // [sp+10h] [bp-10h]@6 | |
1275 int v21; // [sp+14h] [bp-Ch]@14 | |
1052 | 1276 //int v22; // [sp+18h] [bp-8h]@14 |
0 | 1277 unsigned int v23; // [sp+1Ch] [bp-4h]@6 |
1278 | |
1052 | 1279 //v16 = a2; |
1280 //v17 = a1; | |
0 | 1281 if ( a2 == 4 ) |
1282 { | |
1283 v15 = "Elemental Light C"; | |
1284 } | |
1052 | 1285 else if ( a2 == 3 ) |
0 | 1286 v15 = "Elemental Light B"; |
1287 else | |
1288 v15 = "Elemental Light A"; | |
1052 | 1289 |
751 | 1290 v23 = pMonsterList->GetMonsterIDByName(v15); |
0 | 1291 v3 = 0; |
1292 v20 = uNumActors; | |
1293 if ( (signed int)uNumActors > 0 ) | |
1294 { | |
1202 | 1295 v4 = pActors.data();//[0].uAIState; |
90 | 1296 while ( v4->uAIState != Removed ) |
0 | 1297 { |
1052 | 1298 ++v3; |
90 | 1299 ++v4; |
0 | 1300 if ( v3 >= (signed int)uNumActors ) |
90 | 1301 break; |
1302 } | |
1303 if( v3 < (signed int)uNumActors ) | |
1304 v20 = v3; | |
1305 } | |
0 | 1306 if ( v20 != uNumActors || (result = uNumActors + 1, (signed int)(uNumActors + 1) < 500) ) |
1307 { | |
1308 v21 = 0; | |
1052 | 1309 //v22 = pParty->vPosition.z; |
0 | 1310 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) |
1311 v21 = pIndoor->GetSector(pParty->vPosition.x, pParty->vPosition.y, pParty->vPosition.z); | |
1312 v6 = &pActors[v20]; | |
1313 v7 = (char *)&pMonsterStats->pInfos[v23 + 1]; | |
1314 v19 = (((uCurrentlyLoadedLevelType != LEVEL_Outdoor) - 1) & 0x40) + 64; | |
1315 v6->Reset(); | |
1316 v8 = &pMonsterList->pMonsters[v23]; | |
1317 strcpy(v6->pActorName, *(const char **)v7); | |
1318 v6->sCurrentHP = *((short *)v7 + 32); | |
1319 memcpy(&v6->pMonsterInfo, v7, 0x58u); | |
1320 v6->word_000086_some_monster_id = v23 + 1; | |
1321 v6->uActorRadius = v8->uMonsterRadius; | |
1322 v6->uActorHeight = v8->uMonsterHeight; | |
1323 v9 = v8->uMovementSpeed; | |
1324 v6->pMonsterInfo.uTreasureDiceRolls = 0; | |
1325 v6->pMonsterInfo.uTreasureType = 0; | |
1326 v6->pMonsterInfo.uExp = 0; | |
1327 v6->uMovementSpeed = v9; | |
1328 v10 = rand() % 2048; | |
1643 | 1329 //v11 = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v10), v19); |
323 | 1330 uFaceID = stru_5C6E00->Sin(v10); |
1052 | 1331 //v12 = pParty->vPosition.y; |
1643 | 1332 //v13 = fixpoint_mul(uFaceID, v19); |
1333 //v14 = pParty->vPosition.y + fixpoint_mul(uFaceID, v19); | |
1052 | 1334 //LOWORD(v12) = v22; |
1643 | 1335 v6->vInitialPosition.x = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v10), v19); |
1052 | 1336 v6->vPosition.x = v6->vInitialPosition.x; |
1643 | 1337 v6->vInitialPosition.y = pParty->vPosition.y + fixpoint_mul(uFaceID, v19); |
1052 | 1338 v6->vPosition.y = v6->vInitialPosition.y; |
1339 v6->vInitialPosition.z = pParty->vPosition.z; | |
1340 v6->vPosition.z = v6->vInitialPosition.z; | |
1341 //LOWORD(v12) = v21; | |
0 | 1342 v6->uTetherDistance = 256; |
1052 | 1343 v6->uSectorID = v21; |
0 | 1344 v6->PrepareSprites(0); |
1345 v6->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly; | |
1346 v6->uAlly = 9999; | |
1347 v6->uGroup = 0; | |
1348 v6->uCurrentActionTime = 0; | |
1349 v6->uAIState = Summoned; | |
1350 v6->uCurrentActionLength = 256; | |
1351 v6->UpdateAnimation(); | |
1352 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor | |
1052 | 1353 || (result = pIndoor->GetSector(v6->vPosition.x, v6->vPosition.y, v6->vPosition.z), |
0 | 1354 result == v21) |
1052 | 1355 && (result = BLV_GetFloorLevel(v6->vPosition.x, v6->vPosition.y, v6->vPosition.z, result, &uFaceID), result != -30000) |
1356 && (result = abs(result - pParty->vPosition.z), result <= 1024) ) | |
0 | 1357 { |
1358 if ( v20 == uNumActors ) | |
1359 ++uNumActors; | |
1052 | 1360 v6->uSummonerID = PID(OBJECT_Player, a1); |
1948
7fd4bfa175fd
pActorBuffs[2] to pActorBuffs[ACTOR_BUFF_SUMMONED]
Grumpy7
parents:
1935
diff
changeset
|
1361 result = v6->pActorBuffs[ACTOR_BUFF_SUMMONED].Apply(pParty->uTimePlayed + (a3 * 128) / 30.0f, |
1052 | 1362 a2, |
1363 a1, | |
0 | 1364 0, |
1365 0); | |
1366 } | |
1367 } | |
1368 return result; | |
1369 } | |
1370 | |
1371 //----- (00450521) -------------------------------------------------------- | |
1459 | 1372 int __fastcall sub_450521_ProllyDropItemAt(int ecx0, signed int a2, int a3, int a4, int a5, unsigned __int16 a6) |
0 | 1373 { |
1374 int v6; // edi@1 | |
1375 int v7; // esi@1 | |
1376 signed int v8; // edi@1 | |
1377 unsigned __int16 v9; // cx@1 | |
2334 | 1378 // char *v10; // edx@2 |
0 | 1379 unsigned __int16 v11; // ax@5 |
515
cb0ad52d6a26
LayingItem -> SpriteObject (long-waited rename, old name was inaccurate and confused people)
Nomad
parents:
496
diff
changeset
|
1380 SpriteObject a1; // [sp+8h] [bp-70h]@1 |
0 | 1381 |
1382 v6 = ecx0; | |
1383 v7 = a2; | |
1384 pItemsTable->GenerateItem(v6, v7, &a1.stru_24); | |
1385 v8 = 0; | |
1386 v9 = pItemsTable->pItems[a1.stru_24.uItemID].uSpriteID; | |
515
cb0ad52d6a26
LayingItem -> SpriteObject (long-waited rename, old name was inaccurate and confused people)
Nomad
parents:
496
diff
changeset
|
1387 a1.uType = pItemsTable->pItems[a1.stru_24.uItemID].uSpriteID; |
1417 | 1388 v11 = 0; |
1389 for( int i = 0; i < pObjectList->uNumObjects; i++ ) | |
1390 { | |
1391 if( v9 == pObjectList->pObjects[i].uObjectID ) | |
1392 { | |
1393 v11 = i; | |
1394 break; | |
1395 } | |
1396 } | |
0 | 1397 a1.uObjectDescID = v11; |
1398 a1.vPosition.y = a4; | |
1399 a1.vPosition.x = a3; | |
1400 a1.vPosition.z = a5; | |
1401 a1.uFacing = a6; | |
1402 a1.uAttributes = 0; | |
1403 a1.uSectorID = pIndoor->GetSector(a3, a4, a5); | |
1404 a1.uSpriteFrameID = 0; | |
1405 return a1.Create(0, 0, 0, 0); | |
1406 } | |
1407 | |
1408 //----- (0045063B) -------------------------------------------------------- | |
1415 | 1409 int __fastcall _45063B_spawn_some_monster(MapInfo *a1, int a2) |
0 | 1410 { |
1411 int result; // eax@8 | |
1412 int v6; // edi@11 | |
1413 int v7; // ebx@11 | |
1414 int v8; // edi@11 | |
1415 int v9; // ebx@12 | |
1416 int v10; // eax@12 | |
1417 char v11; // zf@16 | |
1418 int v12; // edi@20 | |
1419 int v13; // eax@20 | |
1420 int v14; // ebx@20 | |
1421 int v15; // eax@20 | |
1422 int v16; // eax@20 | |
1423 int v17; // eax@20 | |
1424 int v18; // eax@21 | |
1425 SpawnPointMM7 v19; // [sp+Ch] [bp-38h]@1 | |
1426 int v22; // [sp+2Ch] [bp-18h]@3 | |
1427 unsigned int uFaceID; // [sp+38h] [bp-Ch]@10 | |
1428 int v26; // [sp+3Ch] [bp-8h]@11 | |
1429 int v27; // [sp+40h] [bp-4h]@11 | |
1415 | 1430 |
1431 if (!uNumActors) | |
1432 return 0; | |
1433 | |
2207 | 1434 for ( uint mon_id = 0; mon_id < uNumActors; ++mon_id ) |
0 | 1435 { |
2207 | 1436 if ((pActors[mon_id].pMonsterInfo.uID < 121 || pActors[mon_id].pMonsterInfo.uID > 123) && // Dwarf FemaleC A-C |
1437 (pActors[mon_id].pMonsterInfo.uID < 124 || pActors[mon_id].pMonsterInfo.uID > 126) && // Dwarf MaleA A-C | |
1438 (pActors[mon_id].pMonsterInfo.uID < 133 || pActors[mon_id].pMonsterInfo.uID > 135) && // Peasant Elf FemaleA A-C | |
1439 pActors[mon_id].CanAct()) | |
0 | 1440 { |
2207 | 1441 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) |
1442 { | |
1443 v22 = 0; | |
1444 uint face_id = 0; | |
1445 for ( face_id; face_id < 100; ++face_id ) | |
1446 { | |
1447 v6 = rand() % 1024 + 512; | |
1448 v7 = rand() % (signed int)stru_5C6E00->uIntegerDoublePi; | |
1449 v19.vPosition.x = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v7), v6); | |
1450 v8 = 0; | |
1451 v19.uIndex = a2; | |
1452 v19.vPosition.y = fixpoint_mul(stru_5C6E00->Sin(v7), v6) + pParty->vPosition.y; | |
1453 v19.vPosition.z = pParty->vPosition.z; | |
1454 v26 = 0; | |
1455 v27 = 0; | |
1456 v19.vPosition.z = ODM_GetFloorLevel(v19.vPosition.x, v19.vPosition.y, pParty->vPosition.z, 0, &v26, &v27, 0); | |
1457 for( int i = 0; i < pOutdoor->uNumBModels; i++ ) | |
1458 { | |
1459 v9 = abs(v19.vPosition.y - pOutdoor->pBModels[i].vBoundingCenter.y); | |
1460 v10 = abs(v19.vPosition.x - pOutdoor->pBModels[i].vBoundingCenter.x); | |
1461 if ( int_get_vector_length(v10, v9, 0) < pOutdoor->pBModels[i].sBoundingRadius + 256 ) | |
1462 { | |
1463 v22 = 1; | |
1464 break; | |
1465 } | |
1466 } | |
1467 if ( v22 ) | |
1468 { | |
1469 v11 = face_id == 100; | |
1470 break; | |
1471 } | |
1472 } | |
1473 v11 = face_id == 100; | |
1474 } | |
1475 else if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) | |
1476 { | |
1477 v22 = pIndoor->GetSector(pParty->vPosition.x, pParty->vPosition.y, pParty->vPosition.z); | |
1478 for ( uint i = 0; i < 100; ++i ) | |
1479 { | |
1480 v12 = rand() % 512 + 256; | |
1481 v13 = rand(); | |
1482 v14 = v13 % (signed int)stru_5C6E00->uIntegerDoublePi; | |
1483 v15 = stru_5C6E00->Cos(v13 % (signed int)stru_5C6E00->uIntegerDoublePi); | |
1484 v19.vPosition.x = pParty->vPosition.x + fixpoint_mul(v15, v12); | |
1485 v16 = stru_5C6E00->Sin(v13 % (signed int)stru_5C6E00->uIntegerDoublePi); | |
1486 v19.vPosition.y = fixpoint_mul(v16, v12) + pParty->vPosition.y; | |
1487 v19.vPosition.z = pParty->vPosition.z; | |
1488 v19.uIndex = a2; | |
1489 v17 = pIndoor->GetSector(v19.vPosition.x, v19.vPosition.y, pParty->vPosition.z); | |
1490 if ( v17 == v22 ) | |
1491 { | |
1492 v18 = BLV_GetFloorLevel(v19.vPosition.x, v19.vPosition.y, v19.vPosition.z, v17, &uFaceID); | |
1493 v19.vPosition.z = v18; | |
1494 if ( v18 != -30000 ) | |
1495 { | |
1496 if ( abs(v18 - pParty->vPosition.z) <= 1024 ) | |
1497 break; | |
1498 } | |
1499 } | |
1500 } | |
1501 v11 = v26 == 100; | |
1502 } | |
1503 if ( v11 ) | |
1504 result = 0; | |
1505 else | |
1506 { | |
1507 SpawnEncounter(a1, &v19, 0, 0, 1); | |
1508 result = a2; | |
1509 } | |
0 | 1510 } |
1415 | 1511 |
2207 | 1512 //break; |
1415 | 1513 //v22 = v3->pMonsterInfo.uID - 1; |
1514 //v4 = (signed __int64)((double)v22 * 0.3333333333333333); | |
1515 //if ( (int)v4 != 40 ) | |
1516 //{ | |
1517 // if ( (int)v4 != 41 && (int)v4 != 44 && v3->CanAct() ) | |
1518 // break; | |
1519 //} | |
1520 //++v2; | |
1521 //++v3; | |
1522 //if ( v2 >= (signed int)uNumActors ) | |
1523 // goto LABEL_8; | |
0 | 1524 } |
1525 return result; | |
1526 } | |
1527 | |
1528 //----- (00450AAA) -------------------------------------------------------- | |
1529 void RespawnGlobalDecorations() | |
1530 { | |
1822 | 1531 memset(stru_5E4C90_MapPersistVars._decor_events.data(), 0, 125); |
0 | 1532 |
1533 uint decorEventIdx = 0; | |
1534 for (uint i = 0; i < uNumLevelDecorations; ++i) | |
1535 { | |
1980 | 1536 LevelDecoration* decor = &pLevelDecorations[i]; |
0 | 1537 |
1514
965af46e8793
Rename LevelDecoration::field_16_event_id to LevelDecoration::uEventID.
yoctozepto
parents:
1513
diff
changeset
|
1538 if (!decor->uEventID) |
0 | 1539 { |
1540 if (decor->IsInteractive()) | |
1541 { | |
1542 if (decorEventIdx < 124) | |
1543 { | |
1544 decor->_idx_in_stru123 = decorEventIdx + 75; | |
1736
c6fe09a06712
Player::CompareVariable finished, renamed stru_5E4C90 to stru_5E4C90_MapPersistVars, party::field_4A0 to party::CounterEventValues
Grumpy7
parents:
1706
diff
changeset
|
1545 stru_5E4C90_MapPersistVars._decor_events[decorEventIdx++] = decor->GetGlobalEvent(); |
0 | 1546 } |
1547 } | |
1548 } | |
1549 } | |
1550 } | |
1551 | |
1552 //----- (00450B0A) -------------------------------------------------------- | |
1553 bool __fastcall SpawnActor(unsigned int uMonsterID) | |
1554 { | |
1555 unsigned int v1; // ebx@1 | |
1556 bool result; // eax@2 | |
1557 MonsterDesc *v3; // esi@5 | |
1558 MonsterInfo *v4; // edi@5 | |
1559 Vec3_int_ v5; // ST08_12@5 | |
1560 unsigned int v6; // ecx@5 | |
1561 Actor *v7; // eax@7 | |
1562 Actor actor; // [sp+4h] [bp-350h]@5 | |
1563 Vec3_int_ pOut; // [sp+348h] [bp-Ch]@5 | |
1564 | |
1565 v1 = uMonsterID; | |
1566 if ( uNumActors == 499 ) | |
1567 { | |
1568 result = 0; | |
1569 } | |
1570 else | |
1571 { | |
1572 if ( (signed int)uMonsterID >= (signed int)pMonsterList->uNumMonsters ) | |
1573 v1 = 0; | |
1574 v3 = &pMonsterList->pMonsters[v1]; | |
1575 v4 = &pMonsterStats->pInfos[v1 + 1]; | |
1576 memset(&actor, 0, 0x344u); | |
1577 strcpy(actor.pActorName, v4->pName); | |
1578 actor.sCurrentHP = LOWORD(v4->uHP); | |
1579 memcpy(&actor.pMonsterInfo, &pMonsterStats->pInfos[v1 + 1], 0x58u); | |
1580 actor.word_000086_some_monster_id = v1 + 1; | |
1581 actor.uActorRadius = v3->uMonsterRadius; | |
1582 actor.uActorHeight = v3->uMonsterHeight; | |
1583 actor.uMovementSpeed = v3->uMovementSpeed; | |
1584 v5 = pParty->vPosition; | |
1585 Vec3_int_::Rotate(200, pParty->sRotationY, 0, v5, &pOut.x, &pOut.z, &pOut.y); | |
1586 actor.vInitialPosition.x = pOut.x; | |
1587 actor.vPosition.x = pOut.x; | |
1588 actor.uTetherDistance = 256; | |
1589 actor.vInitialPosition.y = LOWORD(pOut.z); | |
1590 actor.vPosition.y = LOWORD(pOut.z); | |
1591 actor.vInitialPosition.z = LOWORD(pOut.y); | |
1592 actor.vPosition.z = LOWORD(pOut.y); | |
1593 pSprites_LOD->DeleteSomeSprites(); | |
1594 pPaletteManager->ResetNonTestLocked(); | |
1595 v6 = uNumActors - 1; | |
1596 if ( dword_5C6DF8 == 1 ) | |
1597 { | |
1598 dword_5C6DF8 = 0; | |
1599 v6 = uNumActors++; | |
1600 } | |
1601 v7 = &pActors[v6]; | |
1602 memcpy(v7, &actor, 0x344u); | |
1603 v7->PrepareSprites(1); | |
1604 result = 1; | |
1605 } | |
1606 return result; | |
1607 } | |
1608 // 5C6DF8: using guessed type int dword_5C6DF8; | |
1609 | |
1610 //----- (00450DA3) -------------------------------------------------------- | |
1458 | 1611 int GetAlertStatus() |
0 | 1612 { |
1613 int result; // eax@2 | |
1614 | |
1615 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) | |
1616 result = pOutdoor->ddm.field_C_alert; | |
1617 else | |
1618 result = uCurrentlyLoadedLevelType == LEVEL_Outdoor ? pIndoor->dlv.field_C_alert : 0; | |
1619 return result; | |
1620 } | |
1621 | |
1622 //----- (00450DDE) -------------------------------------------------------- | |
1623 stru350 *stru350::_450DDE() | |
1624 { | |
1625 _450DF1(&stru_4E82A4, &stru_4E82A4); | |
1626 return this; | |
1627 } | |
1628 | |
1629 //----- (00450DF1) -------------------------------------------------------- | |
1630 bool stru350::_450DF1(const stru355 *p1, const stru355 *p2) | |
1631 { | |
1632 //stru350 *v3; // esi@1 | |
1633 //void *result; // eax@1 | |
1634 unsigned int v5; // ecx@2 | |
1635 int v6; // edi@2 | |
1636 int v7; // edx@2 | |
1637 unsigned int v8; // ecx@8 | |
1638 int v9; // edi@8 | |
1639 int v10; // edx@8 | |
1640 int v11; // ecx@12 | |
1641 int v12; // edi@12 | |
1642 unsigned int v13; // ecx@12 | |
1643 int v14; // edx@12 | |
1644 int v15; // ecx@16 | |
1645 unsigned int v16; // edx@16 | |
1646 int v17; // ecx@16 | |
1647 int v18; // edi@16 | |
1648 char v19; // zf@20 | |
1649 unsigned int v20; // ecx@21 | |
1650 int v21; // edi@21 | |
1651 int v22; // edx@21 | |
1652 unsigned int v23; // ecx@27 | |
1653 int v24; // edi@27 | |
1654 int v25; // edx@27 | |
1655 int v26; // ecx@31 | |
1656 int v27; // edi@31 | |
1657 unsigned int v28; // ecx@31 | |
1658 int v29; // edx@31 | |
1659 int v30; // ebx@35 | |
1660 int v31; // ecx@35 | |
1661 int v32; // edi@35 | |
1662 int v33; // edx@35 | |
1663 unsigned int i; // ecx@35 | |
1664 int v35; // ecx@39 | |
1665 unsigned int v36; // edx@39 | |
1666 int v37; // ecx@39 | |
1667 int v38; // ebx@39 | |
1668 | |
1669 //v3 = this; | |
1670 memcpy(&field_0, p1, sizeof(stru355)); | |
1671 memcpy(&field_20, p2, sizeof(stru355)); | |
1672 //result = memcpy(&v3->field_20, p2, 0x20u); | |
1673 //LOBYTE(result) = 1; | |
1674 if (field_0.field_4 & 1) | |
1675 { | |
1676 v5 = field_0.field_1C; | |
1677 v6 = 0; | |
1678 v7 = 0; | |
1679 while ( !(v5 & 1) ) | |
1680 { | |
1681 ++v6; | |
1682 v5 >>= 1; | |
1683 } | |
1684 do | |
1685 { | |
1686 v5 >>= 1; | |
1687 ++v7; | |
1688 } | |
1689 while ( v5 & 1 ); | |
1690 field_40 = 32 - v7 - v6; | |
1691 } | |
1692 else | |
1693 { | |
1694 field_40 = 0; | |
1695 } | |
1696 v8 = field_0.field_10; | |
1697 v9 = 0; | |
1698 v10 = 0; | |
1699 while ( !(v8 & 1) ) | |
1700 { | |
1701 ++v9; | |
1702 v8 >>= 1; | |
1703 } | |
1704 do | |
1705 { | |
1706 v8 >>= 1; | |
1707 ++v10; | |
1708 } | |
1709 while ( v8 & 1 ); | |
1710 v11 = 24 - v10 - v9; | |
1711 v12 = 0; | |
1712 field_48 = v11; | |
1713 v13 = field_0.field_14; | |
1714 v14 = 0; | |
1715 while ( !(v13 & 1) ) | |
1716 { | |
1717 ++v12; | |
1718 v13 >>= 1; | |
1719 } | |
1720 do | |
1721 { | |
1722 v13 >>= 1; | |
1723 ++v14; | |
1724 } | |
1725 while ( v13 & 1 ); | |
1726 v15 = 16 - v14; | |
1727 v16 = field_0.field_18; | |
1728 field_50 = v15 - v12; | |
1729 v17 = 0; | |
1730 v18 = 0; | |
1731 while ( !(v16 & 1) ) | |
1732 { | |
1733 ++v17; | |
1734 v16 >>= 1; | |
1735 } | |
1736 do | |
1737 { | |
1738 v16 >>= 1; | |
1739 ++v18; | |
1740 } | |
1741 while ( v16 & 1 ); | |
1742 v19 = (field_20.field_4 & 1) == 0; | |
1743 field_58 = v17 - v18 + 8; | |
1744 if ( v19 ) | |
1745 { | |
1746 field_44 = 0; | |
1747 } | |
1748 else | |
1749 { | |
1750 v20 = field_20.field_1C; | |
1751 v21 = 0; | |
1752 v22 = 0; | |
1753 while ( !(v20 & 1) ) | |
1754 { | |
1755 ++v21; | |
1756 v20 >>= 1; | |
1757 } | |
1758 do | |
1759 { | |
1760 v20 >>= 1; | |
1761 ++v22; | |
1762 } | |
1763 while ( v20 & 1 ); | |
1764 field_44 = 32 - v22 - v21; | |
1765 } | |
1766 v23 = field_20.field_10; | |
1767 v24 = 0; | |
1768 v25 = 0; | |
1769 while ( !(v23 & 1) ) | |
1770 { | |
1771 ++v24; | |
1772 v23 >>= 1; | |
1773 } | |
1774 do | |
1775 { | |
1776 v23 >>= 1; | |
1777 ++v25; | |
1778 } | |
1779 while ( v23 & 1 ); | |
1780 v26 = 24 - v25 - v24; | |
1781 v27 = 0; | |
1782 field_4C = v26; | |
1783 v28 = field_20.field_14; | |
1784 v29 = 0; | |
1785 while ( !(v28 & 1) ) | |
1786 { | |
1787 ++v27; | |
1788 v28 >>= 1; | |
1789 } | |
1790 do | |
1791 { | |
1792 v28 >>= 1; | |
1793 ++v29; | |
1794 } | |
1795 while ( v28 & 1 ); | |
1796 v30 = 0; | |
1797 v31 = 16 - v29 - v27; | |
1798 v32 = field_20.field_18; | |
1799 field_54 = v31; | |
1800 v33 = 0; | |
1801 for ( i = v32; !(i & 1); i >>= 1 ) | |
1802 ++v30; | |
1803 do | |
1804 { | |
1805 i >>= 1; | |
1806 ++v33; | |
1807 } | |
1808 while ( i & 1 ); | |
1809 v35 = 32 - v33; | |
1810 v36 = v32; | |
1811 field_5C = v35 - v30; | |
1812 v37 = 0; | |
1813 v38 = 0; | |
1814 while ( !(v36 & 1) ) | |
1815 { | |
1816 ++v37; | |
1817 v36 >>= 1; | |
1818 } | |
1819 do | |
1820 { | |
1821 v36 >>= 1; | |
1822 ++v38; | |
1823 } | |
1824 while ( v36 & 1 ); | |
1825 field_5C = v37 - v38 + 8; | |
1826 return true; | |
1827 } | |
1828 | |
1829 //----- (00450F55) -------------------------------------------------------- | |
1830 unsigned int stru350::_450F55(int a2) | |
1831 { | |
1832 int v2 = a2 & stru_4E82A4.field_1C; | |
1833 if (field_20.field_4 & 1) | |
1834 v2 = (unsigned int)v2 >> this->field_44; | |
1835 return v2 & field_20.field_1C | | |
1836 field_20.field_10 & ((a2 & (unsigned int)stru_4E82A4.field_10) >> field_4C) | | |
1837 field_20.field_14 & ((a2 & (unsigned int)stru_4E82A4.field_14) >> field_54) | | |
1838 field_20.field_18 & ((a2 & (unsigned int)stru_4E82A4.field_18) >> field_5C); | |
1839 } | |
1840 | |
1841 //----- (00450FB1) -------------------------------------------------------- | |
1842 int stru350::_450FB1(int a2) | |
1843 { | |
1844 int v2 = 0; | |
1845 int v4 = field_0.field_4 & 1; | |
1846 if ( v4 ) | |
1847 v2 = a2 & field_0.field_1C; | |
1848 if ( v4 ) | |
1849 v2 <<= field_40; | |
1850 return v2 | ((a2 & field_0.field_10) << field_48) | ((a2 & field_0.field_14) << field_50) | ((a2 & field_0.field_18) << field_58); | |
1851 } | |
1852 | |
1853 //----- (00452442) -------------------------------------------------------- | |
1583 | 1854 unsigned int __fastcall _452442_color_cvt(unsigned __int16 a1, unsigned __int16 a2, int a3, int a4) |
0 | 1855 { |
1856 int v4; // ebx@0 | |
1857 __int16 v5; // ST14_2@1 | |
1858 __int16 v6; // dx@1 | |
1859 int v7; // ecx@1 | |
1860 __int16 v8; // ST10_2@1 | |
1861 int v9; // edi@1 | |
1862 unsigned __int16 v10; // dh@1@1 | |
1863 int v11; // ebx@1 | |
1864 int v12; // ebx@1 | |
1865 __int16 a3a; // [sp+1Ch] [bp+8h]@1 | |
1866 | |
1867 v5 = a2 >> 2; | |
1868 v6 = (unsigned __int16)a4 >> 2; | |
1869 v8 = a1 >> 2; | |
1870 a3a = (unsigned __int16)a3 >> 2; | |
1871 LOWORD(v7) = a3a; | |
1872 v9 = v7; | |
1873 LOWORD(v4) = ((unsigned __int16)a4 >> 2) & 0xE0; | |
1874 LOWORD(v7) = a3a & 0xE0; | |
1875 LOWORD(v9) = v9 & 0x1C00; | |
1876 v11 = v7 + v4; | |
1877 LOWORD(v7) = v5 & 0xE0; | |
1878 v12 = v7 + v11; | |
1879 LOWORD(v7) = v8 & 0xE0; | |
1409
c9e3b93ec570
Highlighted locations with "using uninitialized variable" warning.
Nomad
parents:
1408
diff
changeset
|
1880 __debugbreak(); // warning C4700: uninitialized local variable 'v10' used |
848 | 1881 return (PID_TYPE(v8) + PID_TYPE(v5) + PID_TYPE(a3a) + PID_TYPE(v6)) | (v7 + v12) | ((v8 & 0x1C00) |
0 | 1882 + (v5 & 0x1C00) |
1883 + v9 | |
1884 + (__PAIR__(v10, (unsigned __int16)a4 >> 2) & 0x1C00)); | |
1885 } | |
1886 | |
1887 //----- (00452A9E) -------------------------------------------------------- | |
295 | 1888 int integer_sqrt(int val) |
0 | 1889 { |
1890 signed int result; // eax@2 | |
295 | 1891 unsigned int v2; // edx@3 |
271 | 1892 unsigned int v3; // edi@3 |
1893 //signed int v4; // ebx@3 | |
0 | 1894 int v5; // esi@4 |
1895 | |
295 | 1896 if (val < 1) |
1897 return val; | |
271 | 1898 |
0 | 1899 v2 = 0; |
295 | 1900 v3 = val; |
0 | 1901 result = 0; |
271 | 1902 //v4 = 16; |
1903 for (uint i = 0; i < 16; ++i) | |
1904 { | |
0 | 1905 result *= 2; |
271 | 1906 v2 = (v3 >> 30) | 4 * v2; |
0 | 1907 v5 = 2 * result + 1; |
1908 v3 *= 4; | |
295 | 1909 if ( v2 >= v5 ) |
0 | 1910 { |
1911 ++result; | |
1912 v2 -= v5; | |
1913 } | |
271 | 1914 //--v4; |
1915 } | |
1916 //while ( v4 ); | |
295 | 1917 if ( val - result * result >= (unsigned int)(result - 1) ) |
0 | 1918 ++result; |
295 | 1919 return result; |
0 | 1920 } |
1921 | |
1922 //----- (00452B2E) -------------------------------------------------------- | |
1923 int __fastcall GetDiceResult(unsigned int uNumDice, unsigned int uDiceSides) | |
1924 { | |
1925 int v3; // esi@1 | |
2101 | 1926 |
0 | 1927 v3 = 0; |
1928 if ( uDiceSides ) | |
1929 { | |
2101 | 1930 for ( uint i = 0; i < uNumDice; ++i) |
1931 v3 += rand() % uDiceSides + 1; | |
1932 return v3; | |
0 | 1933 } |
2101 | 1934 return 0; |
0 | 1935 } |
1936 | |
2259 | 1937 |
0 | 1938 |
1939 //----- (004547E4) -------------------------------------------------------- | |
1940 void FactionTable::Initialize() | |
1941 { | |
237 | 1942 int i; |
1943 char* test_string; | |
1944 unsigned char c; | |
1945 bool break_loop; | |
1946 unsigned int temp_str_len; | |
1947 char* tmp_pos; | |
1948 int decode_step; | |
2334 | 1949 // int item_counter; |
237 | 1950 |
0 | 1951 if ( pHostileTXT_Raw ) |
1583 | 1952 free(pHostileTXT_Raw); |
237 | 1953 pHostileTXT_Raw = NULL; |
0 | 1954 pHostileTXT_Raw = (char *)pEvents_LOD->LoadRaw("hostile.txt", 0); |
1955 strtok(pHostileTXT_Raw, "\r"); | |
2101 | 1956 for ( i=0; i < 89; ++i ) |
1957 { | |
1958 test_string = strtok(NULL, "\r") + 1; | |
1959 break_loop = false; | |
1960 decode_step=0; | |
1961 do | |
1962 { | |
1963 c = *(unsigned char*)test_string; | |
1964 temp_str_len = 0; | |
1965 while((c!='\t') && (c > 0)) | |
1966 { | |
1967 ++temp_str_len; | |
1968 c = test_string[temp_str_len]; | |
1969 } | |
1970 tmp_pos=test_string+temp_str_len; | |
1971 if (*tmp_pos == 0) | |
1972 break_loop = true; | |
1973 *tmp_pos = 0; | |
1974 if (temp_str_len) | |
1975 { | |
1976 if ( decode_step >= 1 && decode_step < 90 ) | |
1977 relations[decode_step-1][i] = atoi(test_string); | |
1978 } | |
1979 else | |
1980 break_loop = true; | |
1981 ++decode_step; | |
1982 test_string=tmp_pos+1; | |
1983 } | |
1984 while ((decode_step < 92) && !break_loop ); | |
1985 } | |
237 | 1986 if ( pHostileTXT_Raw) |
0 | 1987 { |
1583 | 1988 free(pHostileTXT_Raw); |
237 | 1989 pHostileTXT_Raw = NULL; |
0 | 1990 } |
1991 } | |
1992 | |
1993 //----- (00458244) -------------------------------------------------------- | |
1783 | 1994 unsigned int SkillToMastery( unsigned int skill_value ) |
1067 | 1995 { |
1064 | 1996 switch (skill_value & 0x1C0) |
983 | 1997 { |
1998 case 0x100: return 4; // Grandmaster | |
1999 case 0x80: return 3; // Master | |
2000 case 0x40: return 2; // Expert | |
2001 case 0x00: return 1; // Normal | |
1409
c9e3b93ec570
Highlighted locations with "using uninitialized variable" warning.
Nomad
parents:
1408
diff
changeset
|
2002 } |
c9e3b93ec570
Highlighted locations with "using uninitialized variable" warning.
Nomad
parents:
1408
diff
changeset
|
2003 assert(false); |
c9e3b93ec570
Highlighted locations with "using uninitialized variable" warning.
Nomad
parents:
1408
diff
changeset
|
2004 return 0; |
0 | 2005 } |
2006 | |
2007 //----- (0045828B) -------------------------------------------------------- | |
2008 unsigned int __fastcall GetSpellColor(signed int a1) | |
2009 { | |
1799 | 2010 if ( a1 == 0 ) |
2069 | 2011 return Color16(0, 0, 0); |
1799 | 2012 if ( a1 < 12 ) |
2069 | 2013 return Color16(255, 85, 0); |
1799 | 2014 if ( a1 < 23 ) |
2069 | 2015 return Color16(150, 212, 255); |
1799 | 2016 if ( a1 < 34 ) |
2069 | 2017 return Color16(0, 128, 255); |
1799 | 2018 if ( a1 < 45 ) |
2069 | 2019 return Color16(128, 128, 128); |
1799 | 2020 if ( a1 < 56 ) |
2069 | 2021 return Color16(225, 225, 225); |
1799 | 2022 if ( a1 < 67 ) |
2069 | 2023 return Color16(235, 15, 255); |
1799 | 2024 if ( a1 < 78 ) |
2069 | 2025 return Color16(255, 128, 0); |
1799 | 2026 if ( a1 < 89 ) |
2069 | 2027 return Color16(255, 255, 155); |
1799 | 2028 if ( a1 < 100 ) |
2069 | 2029 return Color16(192, 192, 240); |
0 | 2030 } |
2031 | |
2032 //----- (004610AA) -------------------------------------------------------- | |
1637 | 2033 void __fastcall PrepareToLoadODM(unsigned int bLoading, ODMRenderParams *a2) |
0 | 2034 { |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2035 pGameLoadingUI_ProgressBar->Reset(27); |
0 | 2036 pSoundList->_4A9D79(0); |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2037 uCurrentlyLoadedLevelType = LEVEL_Outdoor; |
2099 | 2038 ODM_LoadAndInitialize(pCurrentMapName, a2); |
2039 if ( !bLoading ) | |
0 | 2040 TeleportToStartingPoint(uLevel_StartingPointType); |
2041 viewparams->_443365(); | |
2042 PlayLevelMusic(); | |
2043 } | |
2044 // 6BE35C: using guessed type int uLevel_StartingPointType; | |
2045 | |
2046 //----- (00461103) -------------------------------------------------------- | |
1640
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2047 void _461103_load_level_sub() |
0 | 2048 { |
2049 //GUIProgressBar *v0; // ebx@1 | |
2050 //signed int v1; // ebp@1 | |
2051 //char *v2; // esi@2 | |
2101 | 2052 //__int16 v3; // cx@3 |
0 | 2053 int v4; // edx@8 |
2054 //size_t v5; // edi@14 | |
2055 signed int v6; // esi@14 | |
2056 //char *v7; // edx@15 | |
2057 signed int v8; // ecx@16 | |
2334 | 2058 // int v9; // ecx@23 |
2059 // MonsterInfo *v10; // ebx@23 | |
0 | 2060 //int *v11; // esi@23 |
2061 int v12; // esi@25 | |
2062 int v13; // eax@26 | |
2063 __int16 v14; // ax@41 | |
2064 //signed int v15; // [sp+10h] [bp-4Ch]@1 | |
2065 //signed int v16; // [sp+10h] [bp-4Ch]@14 | |
2066 signed int v17; // [sp+14h] [bp-48h]@3 | |
2067 signed int v18; // [sp+14h] [bp-48h]@23 | |
2068 int v19; // [sp+18h] [bp-44h]@1 | |
2069 signed int v20; // [sp+18h] [bp-44h]@14 | |
2070 int v21[16]; // [sp+1Ch] [bp-40h]@17 | |
2071 | |
598 | 2072 GenerateItemsInChest(); |
0 | 2073 pGameLoadingUI_ProgressBar->Progress(); |
2101 | 2074 pParty->uFlags |= 2; |
0 | 2075 pParty->field_7B5_in_arena_quest = 0; |
2076 dword_5C6DF8 = 1; | |
291 | 2077 pNPCStats->uNewlNPCBufPos = 0; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2078 v19 = pMapStats->GetMapInfo(pCurrentMapName); |
0 | 2079 |
2080 //v15 = 0; | |
2081 for (uint i = 0; i < uNumActors; ++i) | |
2082 //if ( (signed int)uNumActors > 0 ) | |
2083 { | |
2099 | 2084 //Actor* pActor = &pActors[i]; |
0 | 2085 //v2 = (char *)&pActors[0].uNPC_ID; |
2086 //do | |
2087 //{ | |
2101 | 2088 //v3 = pActors[i].pMonsterInfo.uID; |
0 | 2089 v17 = 0; |
2099 | 2090 if ( pActors[i].pMonsterInfo.uID >= 115 && pActors[i].pMonsterInfo.uID <= 186 |
2091 || pActors[i].pMonsterInfo.uID >= 232 && pActors[i].pMonsterInfo.uID <= 249 ) | |
0 | 2092 v17 = 1; |
2093 //v1 = 0; | |
2101 | 2094 v4 = (pActors[i].pMonsterInfo.uID - 1) % 3; |
0 | 2095 if ( 2 == v4 ) |
2096 { | |
2099 | 2097 if ( pActors[i].sNPC_ID && pActors[i].sNPC_ID < 5000 ) |
0 | 2098 continue; |
2099 } | |
2100 else | |
2101 { | |
2102 if ( v4 != 1 ) | |
2103 { | |
2099 | 2104 if ( v4 == 0 && pActors[i].sNPC_ID == 0 ) |
2101 | 2105 pActors[i].sNPC_ID = 0; |
2106 continue; | |
0 | 2107 } |
2108 } | |
2099 | 2109 if ( pActors[i].sNPC_ID > 0 && pActors[i].sNPC_ID < 5000 ) |
0 | 2110 continue; |
2111 if ( v17 ) | |
2112 { | |
2101 | 2113 pNPCStats->InitializeAdditionalNPCs(&pNPCStats->pAdditionalNPC[pNPCStats->uNewlNPCBufPos], pActors[i].pMonsterInfo.uID, 0, v19); |
291 | 2114 v14 = LOWORD(pNPCStats->uNewlNPCBufPos) + 5000; |
2115 ++pNPCStats->uNewlNPCBufPos; | |
2099 | 2116 pActors[i].sNPC_ID = v14; |
0 | 2117 continue; |
2118 } | |
2099 | 2119 pActors[i].sNPC_ID = 0; |
0 | 2120 //++v15; |
2121 //v2 += 836; | |
2122 //} | |
2123 //while ( v15 < (signed int)uNumActors ); | |
2124 } | |
2125 | |
2126 pGameLoadingUI_ProgressBar->Progress(); | |
2127 | |
2128 //v5 = uNumActors; | |
2129 v6 = 0; | |
2130 v20 = 0; | |
2131 //v16 = v1; | |
2132 | |
2133 for (uint i = 0; i < uNumActors; ++i) | |
2134 { | |
2135 //v7 = (char *)&pActors[0].pMonsterInfo; | |
2136 //do | |
2137 //{ | |
2101 | 2138 for ( v8 = 0; v8 < v6; ++v8 ) |
2139 { | |
2140 if ( v21[v8] == pActors[i].pMonsterInfo.uID - 1 ) | |
2141 break; | |
2142 } | |
2143 | |
2144 if ( v8 == v6 ) | |
2145 { | |
2146 v21[v6++] = pActors[i].pMonsterInfo.uID - 1; | |
2147 v20 = v6; | |
2148 if ( v6 == 16 ) | |
2149 break; | |
2150 } | |
2151 //++v16; | |
2152 //v7 += 836; | |
0 | 2153 //} |
2154 //while ( v16 < (signed int)v5 ); | |
2155 } | |
2156 | |
2157 pGameLoadingUI_ProgressBar->Progress(); | |
2158 | |
2101 | 2159 for ( int _v0 = 0; _v0 < v6; ++_v0 ) |
0 | 2160 { |
2101 | 2161 for ( v18 = 4; v18; --v18 ) |
2162 pSoundList->LoadSound(pMonsterList->pMonsters[v21[_v0]].pSoundSampleIDs[4 - v18], 0); | |
0 | 2163 v12 = 0; |
2164 do | |
2101 | 2165 v13 = pSoundList->LoadSound(v12++ + word_4EE088_sound_ids[pMonsterStats->pInfos[v21[_v0] + 1].uSpell1ID], 1); |
0 | 2166 while ( v13 ); |
2167 } | |
2168 //v0 = pGameLoadingUI_ProgressBar; | |
2169 //v1 = 0; | |
2170 | |
2171 pGameLoadingUI_ProgressBar->Progress(); | |
2172 | |
2061 | 2173 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_ACTORS) |
0 | 2174 uNumActors = 0; |
2061 | 2175 if ( dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_DECORATIONS) |
0 | 2176 uNumLevelDecorations = 0; |
1459 | 2177 init_event_triggers(); |
0 | 2178 |
2179 pGameLoadingUI_ProgressBar->Progress(); | |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
2180 |
1640
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2181 pGame->pIndoorCameraD3D->vPartyPos.x = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2182 pGame->pIndoorCameraD3D->vPartyPos.y = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2183 pGame->pIndoorCameraD3D->vPartyPos.z = 100; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2184 pGame->pIndoorCameraD3D->sRotationX = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
2185 pGame->pIndoorCameraD3D->sRotationY = 0; |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
2186 viewparams->bRedrawGameUI = true; |
783 | 2187 uLevel_StartingPointType = MapStartPoint_Party; |
0 | 2188 pSprites_LOD->_461397(); |
2189 pPaletteManager->LockTestAll(); | |
2190 if ( pParty->pPickedItem.uItemID != 0 ) | |
2191 pMouse->SetCursorBitmapFromItemID(pParty->pPickedItem.uItemID); | |
2192 } | |
2193 | |
2194 //----- (004613C4) -------------------------------------------------------- | |
1459 | 2195 void init_event_triggers() |
0 | 2196 { |
1459 | 2197 uint id = pDecorationList->GetDecorIdByName("Event Trigger"); |
2198 | |
2199 num_event_triggers = 0; | |
2200 for (uint i = 0; i < uNumLevelDecorations; ++i) | |
2201 if (pLevelDecorations[i].uDecorationDescID == id) | |
2202 event_triggers[num_event_triggers++] = i; | |
0 | 2203 } |
2204 | |
2205 //----- (004627B7) -------------------------------------------------------- | |
762 | 2206 void MainMenu_Loop() |
0 | 2207 { |
2208 GUIButton *pButton; // eax@27 | |
2209 unsigned int pControlParam; // ecx@35 | |
2334 | 2210 // int v10; // ecx@36 |
2211 // int v11; // ecx@37 | |
0 | 2212 unsigned int pY; // [sp-18h] [bp-54h]@39 |
2213 Texture *pTexture; // [sp-14h] [bp-50h]@39 | |
2334 | 2214 // GUIButton *pButton2; // [sp+0h] [bp-3Ch]@27 |
0 | 2215 GUIWindow *pWindow; // [sp+4h] [bp-38h]@11 |
2216 | |
151 | 2217 pCurrentScreen = SCREEN_GAME; |
1038 | 2218 |
0 | 2219 pGUIWindow2 = 0; |
2216 | 2220 pAudioPlayer->StopChannels(-1, -1);//îñòàíîâèòü/ïîäãîòîâèòü êàíàë |
2219 | 2221 pMouse->RemoveHoldingItem();//èçáàâèòü êóðñîð îò âåùè |
762 | 2222 |
2223 pIcons_LOD->_inlined_sub2(); | |
2224 | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
2225 pWindow_MainMenu = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
1980 | 2226 Texture* pNew = pIcons_LOD->LoadTexturePtr("title_new", TEXTURE_16BIT_PALETTE); |
2227 Texture* pLoad = pIcons_LOD->LoadTexturePtr("title_load", TEXTURE_16BIT_PALETTE); | |
2228 Texture* pCredits = pIcons_LOD->LoadTexturePtr("title_cred", TEXTURE_16BIT_PALETTE); | |
2229 Texture* pExit = pIcons_LOD->LoadTexturePtr("title_exit", TEXTURE_16BIT_PALETTE); | |
948 | 2230 |
2231 pMainMenu_BtnNew = pWindow_MainMenu->CreateButton(495, 172, pNew->uTextureWidth, pNew->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowPartyCreationWnd, 0, 'N', "", pNew, 0); | |
2232 pMainMenu_BtnLoad = pWindow_MainMenu->CreateButton(495, 227, pLoad->uTextureWidth, pLoad->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowLoadWindow, 1, 'L', "", pLoad, 0); | |
2233 pMainMenu_BtnCredits = pWindow_MainMenu->CreateButton(495, 282, pCredits->uTextureWidth, pCredits->uTextureHeight, 1, 0, UIMSG_ShowCredits, 2, 'C', "", pCredits, 0); | |
2234 pMainMenu_BtnExit = pWindow_MainMenu->CreateButton(495, 337, pExit->uTextureWidth, pExit->uTextureHeight, 1, 0, UIMSG_ExitToWindows, 3, 0, "", pExit, 0); | |
2235 | |
0 | 2236 pTexture_PCX.Release(); |
2237 pTexture_PCX.Load("title.pcx", 0); | |
2238 SetCurrentMenuID(MENU_MAIN); | |
1984 | 2239 SetForegroundWindow(window->GetApiHandle()); |
2240 SendMessageW(window->GetApiHandle(), WM_ACTIVATEAPP, 1, 0); | |
0 | 2241 while (GetCurrentMenuID() == MENU_MAIN || GetCurrentMenuID() == MENU_SAVELOAD) |
2242 { | |
2243 POINT pt; | |
2244 pMouse->GetCursorPos(&pt); | |
2245 pWindow = pWindow_MainMenu; | |
165 | 2246 if ( GetCurrentMenuID() == MENU_SAVELOAD) |
0 | 2247 { |
151 | 2248 if ( pCurrentScreen != SCREEN_LOADGAME ) |
0 | 2249 { |
2250 pTexture_PCX.Release(); | |
2251 pTexture_PCX.Load("lsave640.pcx", 0); | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
2252 pGUIWindow2 = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
151 | 2253 pCurrentScreen = SCREEN_LOADGAME; |
1033 | 2254 LoadUI_Load(0); |
0 | 2255 } |
2256 pWindow = pGUIWindow_CurrentMenu; | |
2257 } | |
2258 | |
2061 | 2259 for (MSG msg; PeekMessageW(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 2260 { |
2261 if (msg.message == WM_QUIT) | |
2262 Game_DeinitializeAndTerminate(0); | |
2263 TranslateMessage(&msg); | |
2061 | 2264 DispatchMessageW(&msg); |
0 | 2265 } |
2061 | 2266 |
2267 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE) | |
0 | 2268 { |
2269 WaitMessage(); | |
2061 | 2270 continue; |
0 | 2271 } |
2061 | 2272 |
0 | 2273 pRenderer->BeginScene(); |
2274 pRenderer->DrawTextureRGB(0, 0, &pTexture_PCX); | |
1038 | 2275 |
165 | 2276 GUI_MainMenuMessageProc(); |
0 | 2277 GUI_UpdateWindows(); |
1038 | 2278 |
165 | 2279 if (GetCurrentMenuID() != MENU_MAIN) |
2280 { | |
961 | 2281 if (GetCurrentMenuID() == MENU_LoadingProcInMainMenu) |
0 | 2282 { |
1405
c0b273d33338
RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents:
1404
diff
changeset
|
2283 pIcons_LOD->RemoveTexturesPackFromTextureList(); |
0 | 2284 pGUIWindow_CurrentMenu->Release(); |
2285 pGUIWindow_CurrentMenu = 0; | |
151 | 2286 pCurrentScreen = SCREEN_GAME; |
0 | 2287 viewparams->bRedrawGameUI = 1; |
2288 } | |
2289 } | |
2290 else | |
2291 { | |
1458 | 2292 if ( !pModalWindow )// ??? |
0 | 2293 { |
2294 pButton = pWindow->pControlsHead; | |
2295 for ( pButton = pWindow->pControlsHead; pButton; pButton = pButton->pNext ) | |
2296 { | |
2297 if ( pt.x >= (signed int)pButton->uX && pt.x <= (signed int)pButton->uZ | |
2298 && pt.y >= (signed int)pButton->uY && pt.y <= (signed int)pButton->uW | |
2299 && pWindow == pWindow_MainMenu ) | |
2300 { | |
832 | 2301 pControlParam = pButton->msg_param; |
0 | 2302 switch (pControlParam) // ïîäñâåòêà êíîïîê |
2303 { | |
2304 case 0: | |
2305 pTexture = pNew; | |
2306 pY = 172; | |
2307 break; | |
2308 case 1: | |
2309 pTexture = pLoad; | |
2310 pY = 227; | |
2311 break; | |
2312 case 2: | |
2313 pTexture = pCredits; | |
2314 pY = 282; | |
2315 break; | |
2316 case 3: | |
2317 pTexture = pExit; | |
2318 pY = 337; | |
2319 break; | |
2320 } | |
2321 pRenderer->DrawTextureIndexed(495, pY, pTexture); //ïîäñâåòêà êíîïîê | |
2322 } | |
2323 } | |
2324 } | |
2325 } | |
2326 pRenderer->EndScene(); | |
2327 pRenderer->Present(); | |
2328 } | |
970 | 2329 GUI_MainMenuMessageProc(); |
0 | 2330 pRenderer->BeginScene(); |
2331 GUI_UpdateWindows(); | |
2332 pRenderer->EndScene(); | |
2333 pRenderer->Present(); | |
961 | 2334 pTexture_PCX.Release(); |
0 | 2335 if ( pGUIWindow2 ) |
2336 { | |
2337 pGUIWindow2->Release(); | |
2338 pGUIWindow2 = 0; | |
2339 } | |
2340 pWindow_MainMenu->Release(); | |
1405
c0b273d33338
RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents:
1404
diff
changeset
|
2341 pIcons_LOD->RemoveTexturesPackFromTextureList(); |
0 | 2342 } |
2343 | |
2344 | |
2345 //----- (00464479) -------------------------------------------------------- | |
1583 | 2346 void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows() |
0 | 2347 { |
2348 int v0; // esi@9 | |
2349 | |
2350 if (pMouse) | |
2351 pMouse->SetCursorBitmap("MICON1"); | |
2352 | |
2353 pPaletteManager->ResetNonLocked(); | |
2354 pBitmaps_LOD->ReleaseAll2(); | |
2355 pSprites_LOD->DeleteSomeOtherSprites(); | |
2356 pIcons_LOD->ReleaseAll2(); | |
2152 | 2357 |
0 | 2358 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
2359 pIndoor->Release(); | |
2360 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) | |
1583 | 2361 pOutdoor->Release(); |
0 | 2362 |
2363 pAudioPlayer->StopChannels(-1, -1); | |
2364 pSoundList->_4A9D79(0); | |
2365 uCurrentlyLoadedLevelType = LEVEL_null; | |
2366 pSpriteFrameTable->ResetSomeSpriteFlags(); | |
2367 v0 = uNumVisibleWindows; | |
349 | 2368 pParty->armageddon_timer = 0; |
0 | 2369 while ( v0 > 0 ) |
2370 pWindowList[pVisibleWindowsIdxs[v0--] - 1].Release(); | |
2371 } | |
2372 | |
2373 //----- (004646F0) -------------------------------------------------------- | |
1458 | 2374 void PrepareWorld(unsigned int _0_box_loading_1_fullscreen) |
0 | 2375 { |
2154 | 2376 //if ( pRenderer->pRenderD3D ) |
0 | 2377 pGame->pVisInstance->_4C1A02(); |
2378 pEventTimer->Pause(); | |
2379 pMiscTimer->Pause(); | |
2380 pParty->uFlags = 2; | |
1517 | 2381 CastSpellInfoHelpers::_427D48(); |
0 | 2382 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); |
1458 | 2383 DoPrepareWorld(0, (_0_box_loading_1_fullscreen == 0) + 1); |
0 | 2384 pMiscTimer->Resume(); |
2385 pEventTimer->Resume(); | |
2386 } | |
2387 | |
2388 //----- (00464761) -------------------------------------------------------- | |
1583 | 2389 void Game_DeinitializeAndTerminate(int exitCode) |
0 | 2390 { |
1586 | 2391 SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS); |
0 | 2392 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); |
2393 pGame->Deinitialize(); | |
2155 | 2394 pRenderer->Release(); |
1802 | 2395 delete window; |
2396 //if ( !DestroyWindow(hWnd) ) | |
2397 // GetLastError(); | |
1583 | 2398 exit(exitCode); |
0 | 2399 } |
2400 | |
2401 //----- (004647AB) -------------------------------------------------------- | |
762 | 2402 void FinalInitialization() |
0 | 2403 { |
2404 pViewport->SetScreen(viewparams->uSomeX, viewparams->uSomeY, viewparams->uSomeZ, viewparams->uSomeW); | |
2151 | 2405 pViewport->SetFOV(flt_6BE3A0 * 65536.0f); |
0 | 2406 |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
2407 //pIndoorCamera = new IndoorCamera; |
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
2408 //pIndoorCamera->Initialize(65, viewparams->uScreen_BttmR_X - viewparams->uScreen_topL_X + 1, |
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
2409 // viewparams->uScreen_BttmR_Y - viewparams->uScreen_topL_Y + 1); |
0 | 2410 |
2411 InitializeTurnBasedAnimations(&stru_50C198); | |
762 | 2412 pBitmaps_LOD->_inlined_sub1(); |
2413 pSprites_LOD->_inlined_sub1(); | |
2414 pIcons_LOD->_inlined_sub1(); | |
0 | 2415 } |
2416 // 6BE3A0: using guessed type float flt_6BE3A0; | |
2417 | |
2331
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2418 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2419 //----- (0042F3D6) -------------------------------------------------------- |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2420 void InitializeTurnBasedAnimations(void *_this) |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2421 { |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2422 for (unsigned int i = 0; i < pIconIDs_Turn.size(); ++i) |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2423 { |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2424 char icon_name[32]; |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2425 sprintf(icon_name, "turn%u", i); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2426 pIconIDs_Turn[i] = pIconsFrameTable->FindIcon(icon_name); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2427 pIconsFrameTable->InitializeAnimation(pIconIDs_Turn[i]); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2428 } |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2429 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2430 uIconID_TurnStop = pIconsFrameTable->FindIcon("turnstop"); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2431 uIconID_TurnHour = pIconsFrameTable->FindIcon("turnhour"); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2432 uIconID_TurnStart = pIconsFrameTable->FindIcon("turnstart"); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2433 uIconID_CharacterFrame = pIconsFrameTable->FindIcon("aframe1"); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2434 uSpriteID_Spell11 = pSpriteFrameTable->FastFindSprite("spell11"); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2435 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2436 pIconsFrameTable->InitializeAnimation(uIconID_TurnHour); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2437 pIconsFrameTable->InitializeAnimation(uIconID_TurnStop); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2438 pIconsFrameTable->InitializeAnimation(uIconID_TurnStart); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2439 pIconsFrameTable->InitializeAnimation(uIconID_CharacterFrame); |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2440 } |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
2441 |
0 | 2442 //----- (00464839) -------------------------------------------------------- |
1583 | 2443 char Is_out15odm_underwater() |
0 | 2444 { |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2445 return _stricmp(pCurrentMapName, "out15.odm") == 0; |
0 | 2446 } |
2447 | |
2448 //----- (00464851) -------------------------------------------------------- | |
1583 | 2449 void SetUnderwaterFog() |
0 | 2450 { |
2451 day_fogrange_1 = 50; | |
2452 day_fogrange_2 = 5000; | |
2453 } | |
2454 | |
2455 //----- (00464866) -------------------------------------------------------- | |
1458 | 2456 void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box) |
0 | 2457 { |
1458 | 2458 //int v2; // esi@1 |
0 | 2459 char *v3; // eax@1 |
2460 //char *v4; // eax@1 | |
2461 unsigned int v5; // eax@3 | |
2462 //size_t v6; // ecx@10 | |
2463 //char *v7; // eax@11 | |
2464 char Str1[20]; // [sp+Ch] [bp-18h]@1 | |
2465 unsigned int v9; // [sp+20h] [bp-4h]@1 | |
2466 | |
2467 v9 = bLoading; | |
2468 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); | |
2469 pDecalBuilder->Reset(0); | |
1458 | 2470 pGameLoadingUI_ProgressBar->Initialize(_1_fullscreen_loading_2_box == 1 ? GUIProgressBar::TYPE_Fullscreen : |
2471 GUIProgressBar::TYPE_Box); | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2472 strcpy(Str1, pCurrentMapName); |
0 | 2473 v3 = strtok(Str1, "."); |
2474 strcpy(Str1, v3); | |
2475 Level_LoadEvtAndStr(Str1); | |
2476 LoadLevel_InitializeLevelEvt(); | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2477 strcpy(Str1, pCurrentMapName); |
0 | 2478 _strrev(Str1); |
2479 strtok(Str1, "."); | |
2480 _strrev(Str1); | |
2481 | |
2482 for (uint i = 0; i < 1000; ++i) | |
515
cb0ad52d6a26
LayingItem -> SpriteObject (long-waited rename, old name was inaccurate and confused people)
Nomad
parents:
496
diff
changeset
|
2483 pSpriteObjects[i].uObjectDescID = 0; |
0 | 2484 |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2485 v5 = pMapStats->GetMapInfo(pCurrentMapName); |
1541 | 2486 bUnderwater = false; |
0 | 2487 uLevelMapStatsID = v5; |
2488 pGame->uFlags2 &= 0xFFFFFFF7u; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2489 if ( !_stricmp(pCurrentMapName, "out15.odm") ) |
0 | 2490 { |
1541 | 2491 bUnderwater = true; |
1583 | 2492 pGame->uFlags2 |= GAME_FLAGS_2_ALTER_GRAVITY; |
0 | 2493 } |
831 | 2494 pParty->floor_face_pid = 0; |
1104 | 2495 if ( _stricmp(Str1, "blv") ) |
0 | 2496 PrepareToLoadODM(v9, 0); |
2497 else | |
2498 PrepareToLoadBLV(v9); | |
2499 pAudioPlayer->SetMapEAX(); | |
1459 | 2500 _461103_load_level_sub(); |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2501 if ( !_stricmp(pCurrentMapName, "d11.blv") || !_stricmp(pCurrentMapName, "d10.blv") ) |
0 | 2502 { |
1583 | 2503 //spawning grounds & walls of mist - no loot & exp from monsters |
0 | 2504 |
2505 for (uint i = 0; i < uNumActors; ++i) | |
2506 { | |
2507 pActors[i].pMonsterInfo.uTreasureType = 0; | |
2508 pActors[i].pMonsterInfo.uTreasureDiceRolls = 0; | |
2509 pActors[i].pMonsterInfo.uExp = 0; | |
2510 } | |
2511 } | |
2512 bDialogueUI_InitializeActor_NPC_ID = 0; | |
2513 OnMapLoad(); | |
2514 pGameLoadingUI_ProgressBar->Progress(); | |
1459 | 2515 memset(&pRenderer->pBillboardRenderListD3D, 0, sizeof(pRenderer->pBillboardRenderListD3D)); |
0 | 2516 pGameLoadingUI_ProgressBar->Release(); |
2517 _flushall(); | |
2518 } | |
2519 | |
2520 //----- (004649EF) -------------------------------------------------------- | |
2521 int __fastcall ReadWindowsRegistryInt(const char *pKey, int uDefValue) | |
2522 { | |
2523 int v3; // [sp+4h] [bp-24h]@1 | |
2524 DWORD cbData; // [sp+8h] [bp-20h]@1 | |
2525 LPCSTR lpValueName; // [sp+Ch] [bp-1Ch]@1 | |
2526 DWORD dwDisposition; // [sp+10h] [bp-18h]@2 | |
2527 BYTE Data[4]; // [sp+14h] [bp-14h]@5 | |
2528 HKEY hKey; // [sp+18h] [bp-10h]@1 | |
2529 HKEY phkResult; // [sp+1Ch] [bp-Ch]@1 | |
2530 HKEY v10; // [sp+20h] [bp-8h]@1 | |
2531 HKEY v11; // [sp+24h] [bp-4h]@1 | |
2532 | |
2533 v3 = uDefValue; | |
2534 lpValueName = pKey; | |
2535 v11 = 0; | |
2536 v10 = 0; | |
2537 hKey = 0; | |
2538 phkResult = 0; | |
2539 cbData = 4; | |
27 | 2540 if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, KEY_READ|KEY_WOW64_32KEY, &hKey) )// for 64 bit |
0 | 2541 { |
2542 if ( !RegCreateKeyExA(hKey, "New World Computing", 0, "", 0, 0xF003Fu, 0, &phkResult, &dwDisposition) ) | |
2543 { | |
2544 if ( !RegCreateKeyExA(phkResult, "Might and Magic VII", 0, "", 0, 0xF003Fu, 0, &v10, &dwDisposition) ) | |
2545 { | |
2546 if ( !RegCreateKeyExA(v10, "1.0", 0, "", 0, 0xF003Fu, 0, &v11, &dwDisposition) ) | |
2547 { | |
2548 if ( RegQueryValueExA(v11, lpValueName, 0, 0, Data, &cbData) ) | |
2549 { | |
2550 *(int *)Data = v3; | |
2551 RegSetValueExA(v11, lpValueName, 0, 4u, Data, 4u); | |
2552 } | |
2553 RegCloseKey(v11); | |
2554 } | |
2555 RegCloseKey(v10); | |
2556 } | |
2557 RegCloseKey(phkResult); | |
2558 } | |
2559 RegCloseKey(hKey); | |
2560 } | |
2561 return *(int *)Data; | |
2562 } | |
2563 | |
2564 //----- (00464B02) -------------------------------------------------------- | |
2565 void __fastcall WriteWindowsRegistryString(const char *pKey, const char *pString) | |
2566 { | |
2567 size_t v2; // eax@5 | |
2568 const char *lpValueName; // [sp+4h] [bp-1Ch]@1 | |
2569 const char *Str; // [sp+8h] [bp-18h]@1 | |
2570 DWORD dwDisposition; // [sp+Ch] [bp-14h]@2 | |
2571 HKEY hKey; // [sp+10h] [bp-10h]@1 | |
2572 HKEY phkResult; // [sp+14h] [bp-Ch]@1 | |
2573 HKEY v8; // [sp+18h] [bp-8h]@1 | |
2574 HKEY v9; // [sp+1Ch] [bp-4h]@1 | |
2575 | |
2576 Str = pString; | |
2577 lpValueName = pKey; | |
2578 v9 = 0; | |
2579 v8 = 0; | |
2580 hKey = 0; | |
2581 phkResult = 0; | |
2582 if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hKey) ) | |
2583 { | |
2584 if ( !RegCreateKeyExA(hKey, "New World Computing", 0, "", 0, 0xF003Fu, 0, &phkResult, &dwDisposition) ) | |
2585 { | |
2586 if ( !RegCreateKeyExA(phkResult, "Might and Magic VII", 0, "", 0, 0xF003Fu, 0, &v8, &dwDisposition) ) | |
2587 { | |
2588 if ( !RegCreateKeyExA(v8, "1.0", 0, "", 0, 0xF003Fu, 0, &v9, &dwDisposition) ) | |
2589 { | |
2590 v2 = strlen(Str); | |
2591 RegSetValueExA(v9, lpValueName, 0, 1u, (const BYTE *)Str, v2 + 1); | |
2592 RegCloseKey(v9); | |
2593 } | |
2594 RegCloseKey(v8); | |
2595 } | |
2596 RegCloseKey(phkResult); | |
2597 } | |
2598 RegCloseKey(hKey); | |
2599 } | |
2600 } | |
2601 | |
2602 //----- (00464BEF) -------------------------------------------------------- | |
2603 void __fastcall ReadWindowsRegistryString(const char *pKeyName, char *pOutString, int uBufLen, const char *pDefaultValue) | |
2604 { | |
2605 LSTATUS (__stdcall *v4)(HKEY); // esi@1 | |
2606 LSTATUS result; // eax@7 | |
2607 DWORD Type; // [sp+Ch] [bp-24h]@5 | |
2608 LPCSTR lpValueName; // [sp+10h] [bp-20h]@1 | |
2609 DWORD cbData; // [sp+14h] [bp-1Ch]@1 | |
2610 LPBYTE Dest; // [sp+18h] [bp-18h]@1 | |
2611 DWORD dwDisposition; // [sp+1Ch] [bp-14h]@2 | |
2612 HKEY phkResult; // [sp+20h] [bp-10h]@1 | |
2613 HKEY hKey; // [sp+24h] [bp-Ch]@1 | |
2614 HKEY v13; // [sp+28h] [bp-8h]@1 | |
2615 HKEY v14; // [sp+2Ch] [bp-4h]@1 | |
2616 | |
2617 cbData = uBufLen; | |
2618 Dest = (LPBYTE)pOutString; | |
2619 lpValueName = pKeyName; | |
2620 v14 = 0; | |
2621 v13 = 0; | |
2622 hKey = 0; | |
2623 phkResult = 0; | |
2624 v4 = RegCloseKey; | |
2625 if ( RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hKey) | |
2626 || RegCreateKeyExA(hKey, "New World Computing", 0, "", 0, 0xF003Fu, 0, &phkResult, &dwDisposition) | |
2627 || RegCreateKeyExA(phkResult, "Might and Magic VII", 0, "", 0, 0xF003Fu, 0, &v13, &dwDisposition) | |
2628 || RegCreateKeyExA(v13, "1.0", 0, "", 0, 0xF003Fu, 0, &v14, &dwDisposition) ) | |
1416 | 2629 { |
2630 result = (LSTATUS)strncpy((char *)Dest, pDefaultValue, uBufLen); | |
2631 } | |
2632 else if ( RegQueryValueExA(v14, lpValueName, 0, &Type, Dest, &cbData) ) | |
0 | 2633 { |
2634 RegCloseKey(v14); | |
2635 v14 = 0; | |
2636 result = (LSTATUS)strncpy((char *)Dest, pDefaultValue, uBufLen); | |
1416 | 2637 } |
2638 else | |
2639 { | |
2640 v4 = RegCloseKey; | |
2641 RegCloseKey(v14); | |
2642 v14 = 0; | |
2643 RegCloseKey(v13); | |
2644 v13 = 0; | |
2645 RegCloseKey(phkResult); | |
2646 phkResult = 0; | |
2647 result = RegCloseKey(hKey); | |
2648 hKey = 0; | |
2649 } | |
0 | 2650 if ( v14 ) |
2651 result = v4(v14); | |
2652 if ( v13 ) | |
2653 result = v4(v13); | |
2654 if ( hKey ) | |
2655 result = v4(hKey); | |
2656 if ( phkResult ) | |
2657 result = v4(phkResult); | |
2658 } | |
2659 | |
2660 //----- (00464D32) -------------------------------------------------------- | |
2661 void __fastcall WriteWindowsRegistryInt(const char *pKey, int val) | |
2662 { | |
2663 const char *lpValueName; // [sp+4h] [bp-1Ch]@1 | |
2664 BYTE Data[4]; // [sp+8h] [bp-18h]@1 | |
2665 DWORD dwDisposition; // [sp+Ch] [bp-14h]@2 | |
2666 HKEY hKey; // [sp+10h] [bp-10h]@1 | |
2667 HKEY phkResult; // [sp+14h] [bp-Ch]@1 | |
2668 HKEY v7; // [sp+18h] [bp-8h]@1 | |
2669 HKEY v8; // [sp+1Ch] [bp-4h]@1 | |
2670 | |
2671 *(int *)Data = val; | |
2672 lpValueName = pKey; | |
2673 v8 = 0; | |
2674 v7 = 0; | |
2675 hKey = 0; | |
2676 phkResult = 0; | |
2677 if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hKey) ) | |
2678 { | |
2679 if ( !RegCreateKeyExA(hKey, "New World Computing", 0, "", 0, 0xF003Fu, 0, &phkResult, &dwDisposition) ) | |
2680 { | |
2681 if ( !RegCreateKeyExA(phkResult, "Might and Magic VII", 0, "", 0, 0xF003Fu, 0, &v7, &dwDisposition) ) | |
2682 { | |
2683 if ( !RegCreateKeyExA(v7, "1.0", 0, "", 0, 0xF003Fu, 0, &v8, &dwDisposition) ) | |
2684 { | |
2101 | 2685 RegSetValueExA(v8, lpValueName, 0, 4, Data, 4); |
0 | 2686 RegCloseKey(v8); |
2687 } | |
2688 RegCloseKey(v7); | |
2689 } | |
2690 RegCloseKey(phkResult); | |
2691 } | |
2692 RegCloseKey(hKey); | |
2693 } | |
2694 } | |
2695 | |
2696 //----- (00464E17) -------------------------------------------------------- | |
2697 bool __fastcall CheckMM7CD(char c) | |
2698 { | |
2699 char DstBuf[256]; // [sp+Ch] [bp-218h]@1 | |
2700 char strCommand[256]; // [sp+10Ch] [bp-118h]@1 | |
2701 char Filename[20]; // [sp+20Ch] [bp-18h]@1 | |
2702 | |
2703 | |
2704 wchar_t pMagicPath[1024]; | |
1165
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
1150
diff
changeset
|
2705 swprintf(pMagicPath, wcslen(L"%C:\\anims\\magic7.vid"), L"%C:\\anims\\magic7.vid", c); |
0 | 2706 if (GetFileAttributesW(pMagicPath) == -1) |
2707 return false; | |
2708 | |
2709 wsprintfA(strCommand, "open %c: type cdaudio alias CD", c); | |
2710 if (!mciSendStringA(strCommand, DstBuf, 0xFFu, 0)) | |
2711 { | |
2712 wsprintfA(strCommand, "info CD UPC wait"); | |
2713 mciSendStringA(strCommand, DstBuf, 0xFFu, 0); | |
2714 wsprintfA(strCommand, "close CD"); | |
2715 mciSendStringA(strCommand, DstBuf, 0xFFu, 0); | |
2716 } | |
2717 | |
2718 memcpy(Filename, "X:\\anims\\magic7.vid", sizeof(Filename)); | |
2719 *Filename = c; | |
2720 | |
1980 | 2721 FILE* f = fopen(Filename, "rb"); |
0 | 2722 if (!f) |
2723 return false; | |
2724 | |
2725 if (!fseek(f, 0, SEEK_END)) | |
2726 { | |
2727 if (!fseek(f, -100, SEEK_CUR)) | |
2728 fread(DstBuf, 1u, 0x64u, f); | |
2729 | |
2730 fclose(f); | |
2731 return true; | |
2732 } | |
2733 fclose(f); | |
2734 return false; | |
2735 } | |
2736 | |
2737 //----- (00464F1B) -------------------------------------------------------- | |
2738 signed int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4) | |
2739 { | |
2740 char v4; // zf@3 | |
2741 int v6; // eax@10 | |
2742 int v7; // eax@11 | |
2743 int v8; // eax@12 | |
2744 int v9; // eax@13 | |
2745 BOOL (__stdcall *v10)(HWND, int, LPCSTR); // edi@15 | |
2746 const CHAR *v11; // [sp-Ch] [bp-Ch]@15 | |
2747 INT_PTR v12; // [sp-4h] [bp-4h]@5 | |
2748 | |
2749 if ( a2 == 272 ) | |
2750 { | |
2751 hInsertCDWindow = hDlg; | |
2752 v6 = (GetUserDefaultLangID() & 0x3FF) - 7; | |
2753 if ( v6 ) | |
2754 { | |
2755 v7 = v6 - 3; | |
2756 if ( v7 ) | |
2757 { | |
2758 v8 = v7 - 2; | |
2759 if ( v8 ) | |
2760 { | |
2761 v9 = v8 - 4; | |
2762 if ( v9 ) | |
2763 { | |
2764 if ( v9 != 5 ) | |
2765 return 0; | |
2766 SetWindowTextA(hDlg, "Wloz CD-ROM numer 2"); | |
2767 v10 = SetDlgItemTextA; | |
2768 SetDlgItemTextA(hDlg, 1010, "Wloz CD-ROM numer 2 Might and Magic® VII."); | |
2769 v11 = "Odwolaj"; | |
2770 } | |
2771 else | |
2772 { | |
2773 SetWindowTextA(hDlg, "Inserire il secondo CD"); | |
2774 v10 = SetDlgItemTextA; | |
2775 SetDlgItemTextA(hDlg, 1010, "Inserire il secondo CD di Might and Magic® VII."); | |
2776 v11 = "Annulla"; | |
2777 } | |
2778 } | |
2779 else | |
2780 { | |
2781 SetWindowTextA(hDlg, "Insérez le CD 2"); | |
2782 v10 = SetDlgItemTextA; | |
2783 SetDlgItemTextA(hDlg, 1010, "Insérez Might & Magic® VII CD 2."); | |
2784 v11 = "Supprimer"; | |
2785 } | |
2786 } | |
2787 else | |
2788 { | |
2789 SetWindowTextA(hDlg, "Por favor, inserte disco 2"); | |
2790 v10 = SetDlgItemTextA; | |
2791 SetDlgItemTextA(hDlg, 1010, "Por favor, inserte disco 2 de Might & Magic® VII."); | |
2792 v11 = "Cancelar"; | |
2793 } | |
2794 } | |
2795 else | |
2796 { | |
2797 SetWindowTextA(hDlg, "Bitte CD 2 einlegen"); | |
2798 v10 = SetDlgItemTextA; | |
2799 SetDlgItemTextA(hDlg, 1010, "Bitte CD 2 von Might and Magic® VII einlegen."); | |
2800 v11 = "Abbrechen"; | |
2801 } | |
2802 v10(hDlg, 2, v11); | |
2803 return 0; | |
2804 } | |
2805 if ( a2 == 273 ) | |
2806 { | |
2807 if ( a3 == 2 ) | |
2808 { | |
2809 v12 = 0; | |
2810 EndDialog(hDlg, v12); | |
2811 return 1; | |
2812 } | |
2813 v4 = a3 == 1; | |
2814 } | |
2815 else | |
2816 { | |
2817 v4 = a2 == 1025; | |
2818 } | |
2819 if ( v4 ) | |
2820 { | |
2821 v12 = 1; | |
1416 | 2822 EndDialog(hDlg, v12); |
2823 return 1; | |
0 | 2824 } |
2825 return 0; | |
2826 } | |
2827 | |
2828 //----- (00465061) -------------------------------------------------------- | |
2829 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive) | |
2830 { | |
2831 char drive[4] = {'X', ':', '\\', 0}; | |
2832 | |
2833 bool bGotCDFromRegistry = false; | |
2834 | |
2835 HKEY hSoftware = nullptr, | |
2836 hNWC = nullptr, | |
2837 hMM7 = nullptr, | |
2838 hVersion = nullptr; | |
2839 if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hSoftware)) | |
2840 { | |
2841 if (!RegOpenKeyExA(hSoftware, "New World Computing", 0, 0x2001Fu, &hNWC)) | |
2842 { | |
2843 if (!RegOpenKeyExA(hNWC, "Might and Magic VII", 0, 0x2001Fu, &hMM7)) | |
2844 { | |
2845 if (!RegOpenKeyExA(hMM7, "1.0", 0, 0x2001Fu, &hVersion)) | |
2846 { | |
2847 DWORD cbData = 3; | |
2848 if (!RegQueryValueExA(hVersion, "CDDrive", 0, 0, (BYTE *)drive, &cbData)) | |
2849 bGotCDFromRegistry = true; | |
2850 } | |
2851 RegCloseKey(hVersion); | |
2852 } | |
2853 RegCloseKey(hMM7); | |
2854 } | |
2855 RegCloseKey(hNWC); | |
2856 } | |
2857 RegCloseKey(hSoftware); | |
2858 | |
2859 if (bGotCDFromRegistry) | |
2860 if (CheckMM7CD(*drive)) | |
2861 { | |
2862 cMM7GameCDDriveLetter = *drive; | |
2863 return true; | |
2864 } | |
2865 | |
2866 while (true) | |
2867 { | |
2868 for (uint i = 0; i < 26; ++i) | |
2869 { | |
2870 drive[0] = 'A' + i; | |
2871 | |
2872 if (GetDriveTypeA(drive) == DRIVE_CDROM) | |
2873 if (CheckMM7CD(*drive)) | |
2874 { | |
2875 cMM7GameCDDriveLetter = *drive; | |
2876 WriteWindowsRegistryString("CDDrive", drive); | |
2877 return true; | |
2878 } | |
2879 } | |
2880 | |
1802 | 2881 if (DialogBoxParamA(GetModuleHandleW(nullptr), "InsertCD", hWnd, (DLGPROC)InsertMM7CDDialogFunc, 0)) |
0 | 2882 continue; |
2883 return false; | |
2884 } | |
2885 } | |
2886 | |
1655 | 2887 |
2888 | |
0 | 2889 //----- (004651F4) -------------------------------------------------------- |
1655 | 2890 bool MM7_Initialize(int game_width, int game_height) |
0 | 2891 { |
2892 wchar_t pCurrentDir[1024]; | |
2893 _wgetcwd(pCurrentDir, 1024); | |
2894 | |
2895 wchar_t pMM6IniFile[1024]; | |
293 | 2896 wsprintfW(pMM6IniFile, L"%s\\mm6.ini", pCurrentDir); |
0 | 2897 |
2898 bCanLoadFromCD = GetPrivateProfileIntW(L"settings", L"use_cd", 1, pMM6IniFile); | |
2899 if (bNoCD) | |
2900 bCanLoadFromCD = false; | |
2901 if (bCanLoadFromCD) | |
2902 { | |
2151 | 2903 Log::Warning(L"Checking for CD..."); |
1802 | 2904 if (!FindMM7CD(nullptr, &cMM7GameCDDriveLetter)) |
0 | 2905 return false; |
2151 | 2906 Log::Warning(L"...done."); |
0 | 2907 } |
2908 | |
2909 | |
2910 srand(GetTickCount()); | |
1802 | 2911 |
2912 window = OSWindow::Create(L"Might and Magic® Trilogy", game_width, game_height); | |
0 | 2913 |
2914 pRenderer = Render::Create(); | |
2915 if (!pRenderer) | |
2916 { | |
2917 Log::Warning(L"Render creation failed"); | |
2918 return false; | |
2919 } | |
2920 else | |
2921 { | |
2069 | 2922 //bool bWindowMode = ReadWindowsRegistryInt("startinwindow", false); |
1802 | 2923 //uint uDefaultDevice = ReadWindowsRegistryInt("D3D Device", 1); |
0 | 2924 bool bColoredLights = ReadWindowsRegistryInt("Colored Lights", false); |
2925 uint uLevelOfDetail = ReadWindowsRegistryInt("Detail Level", 1); | |
2926 uint bTinting = ReadWindowsRegistryInt("Tinting", 1) != 0; | |
2927 | |
2069 | 2928 if (!pRenderer->Initialize(window, bColoredLights, uLevelOfDetail, bTinting)) |
0 | 2929 { |
2930 Log::Warning(L"Render failed to initialize"); | |
2931 return false; | |
2932 } | |
2933 } | |
492 | 2934 |
351 | 2935 game_starting_year = 1168; |
0 | 2936 |
2937 pParty = new Party; | |
147 | 2938 memset(&pParty->pHirelings, 0, sizeof(pParty->pHirelings)); |
0 | 2939 pParty->uWalkSpeed = GetPrivateProfileIntW(L"debug", L"walkspeed", 384, pMM6IniFile); |
2940 pParty->uDefaultEyelevel = GetPrivateProfileIntW(L"party", L"eyelevel", 160, pMM6IniFile); | |
2941 pParty->sEyelevel = pParty->uDefaultEyelevel; | |
2942 pParty->uDefaultPartyHeight = GetPrivateProfileIntW(L"party", L"height", 192, pMM6IniFile); | |
2943 pParty->uPartyHeight = pParty->uDefaultPartyHeight; | |
2151 | 2944 |
0 | 2945 MM6_Initialize(pMM6IniFile); |
2946 | |
2947 pKeyActionMap = new KeyboardActionMapping; | |
2948 | |
2949 pEventTimer = Timer::Create(); | |
2950 pEventTimer->Initialize(); | |
2951 | |
2952 OnTimer(1); | |
2953 GameUI_StatusBar_UpdateTimedString(1); | |
2954 pGame = Game::Create(); | |
2955 pMouse = pGame->pMouseInstance; | |
1655 | 2956 |
0 | 2957 |
2958 pIcons_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2959 if (!pIcons_LOD->Load("data\\icons.lod", "icons")) |
0 | 2960 { |
2151 | 2961 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.", |
2962 L"Files Missing", MB_ICONEXCLAMATION); | |
0 | 2963 return false; |
2964 } | |
2965 pIcons_LOD->dword_011BA4 = 0; | |
2966 | |
2967 pEvents_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2968 if (!pEvents_LOD->Load("data\\events.lod", "icons")) |
0 | 2969 { |
2151 | 2970 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.", |
2971 L"Files Missing", MB_ICONEXCLAMATION); | |
0 | 2972 return false; |
2973 } | |
2974 | |
2975 InitializeGameText(); | |
2976 | |
2977 pBitmaps_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2978 if (!pBitmaps_LOD->Load("data\\bitmaps.lod", "bitmaps")) |
0 | 2979 { |
2151 | 2980 MessageBoxA(nullptr, pGlobalTXT_LocalizationStrings[63], |
2981 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION); | |
0 | 2982 return false; |
2983 } | |
2984 | |
2985 pSprites_LOD = new LODFile_Sprites; | |
2151 | 2986 if (!pSprites_LOD->LoadSprites("data\\sprites.lod")) |
0 | 2987 { |
2988 MessageBoxA(nullptr, | |
2989 pGlobalTXT_LocalizationStrings[63], | |
2990 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION); | |
2991 return false; | |
2992 } | |
2993 | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2994 |
1543 | 2995 #if 0 |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2996 if (_access("../MM_VI/data/icons.lod", 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2997 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2998 pIcons_LOD_mm6 = new LODFile_IconsBitmaps; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2999 if (!pIcons_LOD_mm6->Load("../MM_VI/data/icons.lod", "icons")) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3000 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3001 delete pIcons_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3002 pIcons_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3003 Log::Warning(L"Unable to load mm6:icons.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3004 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3005 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3006 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3007 Log::Warning(L"Unable to find mm6:icons.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3008 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3009 if (_access("../MM_VI/data/bitmaps.lod", 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3010 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3011 pBitmaps_LOD_mm6 = new LODFile_IconsBitmaps; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3012 if (!pBitmaps_LOD_mm6->Load("../MM_VI/data/bitmaps.lod", "bitmaps")) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3013 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3014 delete pBitmaps_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3015 pBitmaps_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3016 Log::Warning(L"Unable to load mm6:bitmaps.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3017 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3018 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3019 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3020 Log::Warning(L"Unable to find mm6:bitmaps.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3021 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3022 auto mm6_sprite_container_name = bUseLoResSprites ? "../MM_VI/data/spriteLO.lod" |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3023 : "../MM_VI/data/sprites.lod"; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3024 if (_access(mm6_sprite_container_name, 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3025 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3026 pSprites_LOD_mm6 = new LODFile_Sprites; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3027 if (!pSprites_LOD_mm6->LoadSprites(mm6_sprite_container_name)) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3028 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3029 delete pSprites_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3030 pSprites_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3031 Log::Warning(L"Unable to load mm6:sprites.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3032 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3033 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3034 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3035 Log::Warning(L"Unable to find mm6:sprites.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3036 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3037 |
1541 | 3038 if (_access("../mm8/data/icons.lod", 0) == 0) |
3039 { | |
3040 pIcons_LOD_mm8 = new LODFile_IconsBitmaps; | |
3041 if (!pIcons_LOD_mm8->Load("../mm8/data/icons.lod", "icons")) | |
3042 { | |
3043 delete pIcons_LOD_mm8; | |
3044 pIcons_LOD_mm8 = nullptr; | |
3045 Log::Warning(L"Unable to load mm8:icons.lod"); | |
3046 } | |
0 | 3047 } |
3048 else | |
1541 | 3049 Log::Warning(L"Unable to find mm8:icons.lod"); |
3050 | |
3051 | |
3052 if (_access("../mm8/data/bitmaps.lod", 0) == 0) | |
3053 { | |
3054 pBitmaps_LOD_mm8 = new LODFile_IconsBitmaps; | |
3055 if (!pBitmaps_LOD_mm8->Load("../mm8/data/bitmaps.lod", "bitmaps")) | |
3056 { | |
3057 delete pBitmaps_LOD_mm8; | |
3058 pBitmaps_LOD_mm8 = nullptr; | |
3059 Log::Warning(L"Unable to load mm8:bitmaps.lod"); | |
3060 } | |
3061 } | |
3062 else | |
3063 Log::Warning(L"Unable to find mm8:bitmaps.lod"); | |
3064 | |
3065 | |
3066 if (_access("../mm8/data/sprites.lod", 0) == 0) | |
3067 { | |
3068 pSprites_LOD_mm8 = new LODFile_Sprites; | |
3069 if (!pSprites_LOD_mm8->LoadSprites("../mm8/data/sprites.lod")) | |
3070 { | |
3071 delete pSprites_LOD_mm8; | |
3072 pSprites_LOD_mm8 = nullptr; | |
3073 Log::Warning(L"Unable to load mm8:sprites.lod"); | |
3074 } | |
3075 } | |
3076 else | |
3077 Log::Warning(L"Unable to find mm8:sprites.lod"); | |
1543 | 3078 #endif |
1541 | 3079 |
0 | 3080 { |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3081 void *sft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dsft.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3082 *sft_mm8 = nullptr; |
2151 | 3083 void *sft_mm7 = pEvents_LOD->LoadRaw("dsft.bin", 1); |
0 | 3084 pSpriteFrameTable = new SpriteFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3085 pSpriteFrameTable->FromFile(sft_mm6, sft_mm7, sft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3086 free(sft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3087 free(sft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3088 free(sft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3089 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3090 void *tft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dtft.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3091 *tft_mm8 = nullptr; |
2151 | 3092 void *tft_mm7 = pEvents_LOD->LoadRaw("dtft.bin", 1); |
0 | 3093 pTextureFrameTable = new TextureFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3094 pTextureFrameTable->FromFile(tft_mm6, tft_mm7, tft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3095 free(tft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3096 free(tft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3097 free(tft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3098 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3099 void *tiles_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dtile.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3100 *tiles_mm8 = nullptr; |
2151 | 3101 void *tiles_mm7 = pEvents_LOD->LoadRaw("dtile.bin", 1); |
0 | 3102 pTileTable = new TileTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3103 pTileTable->FromFile(tiles_mm6, tiles_mm7, tiles_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3104 free(tiles_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3105 free(tiles_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3106 free(tiles_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3107 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3108 void *pft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dpft.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3109 *pft_mm8 = nullptr; |
2151 | 3110 void *pft_mm7 = pEvents_LOD->LoadRaw("dpft.bin", 1); |
0 | 3111 pPlayerFrameTable = new PlayerFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3112 pPlayerFrameTable->FromFile(pft_mm6, pft_mm7, pft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3113 free(pft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3114 free(pft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3115 free(pft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3116 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3117 void *ift_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dift.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3118 *ift_mm8 = nullptr; |
2151 | 3119 void *ift_mm7 = pEvents_LOD->LoadRaw("dift.bin", 1); |
0 | 3120 pIconsFrameTable = new IconFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3121 pIconsFrameTable->FromFile(ift_mm6, ift_mm7, ift_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3122 free(ift_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3123 free(ift_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3124 free(ift_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3125 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3126 void *decs_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("ddeclist.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3127 *decs_mm8 = nullptr; |
2151 | 3128 void *decs_mm7 = pEvents_LOD->LoadRaw("ddeclist.bin", 1); |
0 | 3129 pDecorationList = new DecorationList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3130 pDecorationList->FromFile(decs_mm6, decs_mm7, decs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3131 free(decs_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3132 free(decs_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3133 free(decs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3134 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3135 void *objs_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dobjlist.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3136 *objs_mm8 = nullptr; |
2151 | 3137 void *objs_mm7 = pEvents_LOD->LoadRaw("dobjlist.bin", 1); |
0 | 3138 pObjectList = new ObjectList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3139 pObjectList->FromFile(objs_mm6, objs_mm7, objs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3140 free(objs_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3141 free(objs_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3142 free(objs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3143 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3144 void *mons_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dmonlist.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3145 *mons_mm8 = nullptr; |
2151 | 3146 void *mons_mm7 = pEvents_LOD->LoadRaw("dmonlist.bin", 1); |
0 | 3147 pMonsterList = new MonsterList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3148 pMonsterList->FromFile(mons_mm6, mons_mm7, mons_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3149 free(mons_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3150 free(mons_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3151 free(mons_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3152 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3153 void *chests_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dchest.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3154 *chests_mm8 = nullptr; |
2151 | 3155 void *chests_mm7 = pEvents_LOD->LoadRaw("dchest.bin", 1); |
0 | 3156 pChestList = new ChestList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3157 pChestList->FromFile(chests_mm6, chests_mm7, chests_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3158 free(chests_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3159 free(chests_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3160 free(chests_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3161 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3162 void *overlays_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("doverlay.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3163 *overlays_mm8 = nullptr; |
2151 | 3164 void *overlays_mm7 = pEvents_LOD->LoadRaw("doverlay.bin", 1); |
0 | 3165 pOverlayList = new OverlayList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3166 pOverlayList->FromFile(overlays_mm6, overlays_mm7, overlays_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3167 free(overlays_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3168 free(overlays_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3169 free(overlays_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3170 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3171 void *sounds_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadRaw("dsounds.bin", 1) : nullptr, |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3172 *sounds_mm8 = nullptr; |
2151 | 3173 void *sounds_mm7 = pEvents_LOD->LoadRaw("dsounds.bin", 1); |
0 | 3174 pSoundList = new SoundList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3175 pSoundList->FromFile(sounds_mm6, sounds_mm7, sounds_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3176 free(sounds_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3177 free(sounds_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3178 free(sounds_mm8); |
0 | 3179 } |
3180 | |
3181 | |
3182 | |
492 | 3183 |
2069 | 3184 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_RUN_IN_WIDOW) |
0 | 3185 { |
2069 | 3186 //window->SetWindowedMode(game_width, game_height); |
3187 pRenderer->SwitchToWindow(); | |
0 | 3188 } |
3189 else | |
3190 { | |
2069 | 3191 __debugbreak(); // Nomad |
3192 window->SetFullscreenMode(); | |
3193 pRenderer->InitializeFullscreen(); | |
0 | 3194 } |
2151 | 3195 |
3196 uSoundVolumeMultiplier = min(9, ReadWindowsRegistryInt("soundflag", 9)); | |
3197 uMusicVolimeMultiplier = min(9, ReadWindowsRegistryInt("musicflag", 9)); | |
3198 uVoicesVolumeMultiplier = min(9, ReadWindowsRegistryInt("CharVoices", 9)); | |
0 | 3199 bShowDamage = ReadWindowsRegistryInt("ShowDamage", 1) != 0; |
2151 | 3200 |
3201 uGammaPos = min(4, ReadWindowsRegistryInt("GammaPos", 4)); | |
0 | 3202 pGame->pGammaController->Initialize(uGammaPos * 0.1 + 0.6); |
3203 | |
3204 if ( ReadWindowsRegistryInt("Bloodsplats", 1) ) | |
591 | 3205 pGame->uFlags2 |= GAME_FLAGS_2_DRAW_BLOODSPLATS; |
0 | 3206 else |
733 | 3207 pGame->uFlags2 &= ~GAME_FLAGS_2_DRAW_BLOODSPLATS; |
0 | 3208 |
3209 uTurnSpeed = ReadWindowsRegistryInt("TurnDelta", 0); | |
3210 | |
3211 if (!bNoSound) | |
1802 | 3212 pAudioPlayer->Initialize(); |
0 | 3213 |
1262 | 3214 pVideoPlayer = new VideoPlayer(); |
1802 | 3215 pVideoPlayer->Initialize(window); |
0 | 3216 |
2061 | 3217 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; |
0 | 3218 |
3219 switch ( uTurnSpeed ) | |
3220 { | |
731 | 3221 case 0: // undefined turn option |
1067 | 3222 __debugbreak(); // really shouldn't use this mode |
731 | 3223 uTurnSpeed = (unsigned int)uCPUSpeed < 199 ? 128 : 64; // adjust turn speed to estimated fps |
3224 break; | |
3225 | |
3226 case 1u: // 16x | |
3227 Log::Warning(L"x16 Turn Speed"); // really shouldn't use this mode | |
0 | 3228 uTurnSpeed = 128; |
731 | 3229 break; |
3230 | |
3231 case 2u: // 32x | |
3232 Log::Warning(L"x32 Turn Speed"); // really shouldn't use this mode | |
0 | 3233 uTurnSpeed = 64; |
731 | 3234 break; |
3235 | |
3236 case 3u: // smooth | |
0 | 3237 uTurnSpeed = 0; |
731 | 3238 break; |
3239 } | |
3240 | |
0 | 3241 return true; |
3242 } | |
3243 | |
3244 //----- (00465D0B) -------------------------------------------------------- | |
1802 | 3245 void SecondaryInitialization() |
0 | 3246 { |
2151 | 3247 //__int16 v4; // ax@4 |
3248 //signed int v5; // esi@5 | |
3249 //int v6; // ecx@6 | |
3250 //int v7; // edx@7 | |
3251 //ObjectDesc *v8; // eax@7 | |
3252 //char pContainer[32]; // [sp+10h] [bp-Ch]@9 | |
0 | 3253 |
1802 | 3254 pMouse->Initialize(window); |
0 | 3255 |
3256 pItemsTable = new ItemsTable; | |
3257 pItemsTable->Initialize(); | |
3258 | |
2154 | 3259 //pBitmaps_LOD->can_load_hardware_sprites = 1; |
2069 | 3260 //pBitmaps_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); |
3261 pBitmaps_LOD->SetupPalettes(5, 6, 5); | |
3262 //pIcons_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
3263 pIcons_LOD->SetupPalettes(5, 6, 5); | |
3264 //pPaletteManager->SetColorChannelInfo(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
3265 pPaletteManager->SetColorChannelInfo(5, 6, 5); | |
762 | 3266 |
3267 pPaletteManager->SetMistColor(128, 128, 128); | |
0 | 3268 pPaletteManager->RecalculateAll(); |
2154 | 3269 //pSprites_LOD->can_load_hardware_sprites = 1; |
0 | 3270 pObjectList->InitializeSprites(); |
3271 pOverlayList->InitializeSprites(); | |
3272 if (!bNoSound) | |
3273 pSoundList->Initialize(); | |
3274 | |
3275 | |
3276 for (uint i = 0; i < 4; ++i) | |
3277 { | |
2151 | 3278 static const char *pUIAnimNames[4] = |
3279 { | |
3280 "glow03", "glow05", | |
3281 "torchA", "wizeyeA" | |
3282 }; | |
3283 static unsigned short _4E98D0[4][4] = | |
3284 { | |
3285 {479, 0, 329, 0}, | |
3286 {585, 0, 332, 0}, | |
3287 {468, 0, 0, 0}, | |
3288 {606, 0, 0, 0} | |
3289 }; | |
3290 | |
0 | 3291 pUIAnims[i]->uIconID = pIconsFrameTable->FindIcon(pUIAnimNames[i]); |
3292 pIconsFrameTable->InitializeAnimation(pUIAnims[i]->uIconID); | |
3293 | |
3294 pUIAnims[i]->uAnimLength = 0; | |
3295 pUIAnims[i]->uAnimTime = 0; | |
3296 pUIAnims[i]->x = _4E98D0[i][0]; | |
3297 pUIAnims[i]->y = _4E98D0[i][2]; | |
3298 } | |
3299 | |
2151 | 3300 for (unsigned int i = 0; i < pObjectList->uNumObjects; ++i) |
0 | 3301 { |
2151 | 3302 pObjectList->pObjects[i].uParticleTrailColor = pObjectList->pObjects[i].uParticleTrailColorB | |
3303 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorG << 8) | | |
3304 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorR << 16); | |
0 | 3305 } |
2151 | 3306 |
0 | 3307 MainMenuUI_Create(); |
3308 pGame->pStru6Instance->LoadAnimations(); | |
3309 | |
3310 for (uint i = 0; i < 7; ++i) | |
3311 { | |
2151 | 3312 char container_name[64]; |
3313 sprintf(container_name, "HDWTR%03u", i); | |
3314 pRenderer->pHDWaterBitmapIDs[i] = pBitmaps_LOD->LoadTexture(container_name); | |
0 | 3315 } |
3316 | |
3317 pNPCStats = new NPCStats; | |
110 | 3318 memset(pNPCStats->pNPCData, 0, 0x94BCu); |
0 | 3319 pNPCStats->Initialize(); |
3320 | |
3321 Initialize_GlobalEVT(); | |
762 | 3322 pBitmaps_LOD->_inlined_sub0(); |
3323 pSprites_LOD->_inlined_sub0(); | |
0 | 3324 pPaletteManager->LockAll(); |
3325 | |
3326 _mkdir("Saves"); | |
3327 for (uint i = 0; i < 5; ++i) | |
3328 for (uint j = 0; j < 6; ++j) | |
3329 { | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
3330 sprintf(pTmpBuf.data(), "data\\lloyd%d%d.pcx", i, j); |
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
3331 remove(pTmpBuf.data()); |
0 | 3332 } |
3333 | |
3334 Initialize_GamesLOD_NewLOD(); | |
1051 | 3335 _576E2C_current_minimap_zoom = 512; |
0 | 3336 dword_576E28 = 9; |
3337 } | |
3338 | |
522 | 3339 void IntegrityTest() |
3340 { | |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3341 static_assert(sizeof(MovieHeader) == 44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3342 static_assert(sizeof(SoundDesc_mm6) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3343 static_assert(sizeof(SoundDesc) == 120, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3344 static_assert(sizeof(OverlayDesc) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3345 static_assert(sizeof(ChestDesc) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3346 static_assert(sizeof(ObjectDesc_mm6) == 52, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3347 static_assert(sizeof(ObjectDesc) == 56, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3348 static_assert(sizeof(DecorationDesc) == 84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3349 static_assert(sizeof(IconFrame) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3350 static_assert(sizeof(PlayerFrame) == 10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3351 static_assert(sizeof(TextureFrame) == 20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3352 static_assert(sizeof(SpriteFrame) == 60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3353 static_assert(sizeof(RenderVertexSoft) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3354 static_assert(sizeof(RenderBillboard) == 0x34, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3355 static_assert(sizeof(Texture) == 0x48, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3356 static_assert(sizeof(RGBTexture) == 0x28, "Wrong type size"); |
2154 | 3357 //static_assert(sizeof(LODFile_IconsBitmaps) == 0x11BB8 + 4, "Wrong type size"); // + virtual dtor ptr |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3358 static_assert(sizeof(AudioPlayer) == 0xC84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3359 static_assert(sizeof(SoundDesc) == 0x78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3360 static_assert(sizeof(stru339_spell_sound) == 0xAFD8, "Wrong type size"); |
2137
d24ee391fd1f
libavcodec playing movies and houses, loops not working yet
zipi
parents:
2135
diff
changeset
|
3361 //static_assert(sizeof(VideoPlayer) == 0x108 + 4, "Wrong type size"); |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3362 static_assert(sizeof(MovieHeader) == 0x2C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3363 static_assert(sizeof(DecorationDesc) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3364 static_assert(sizeof(ObjectDesc) == 0x38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3365 static_assert(sizeof(OverlayDesc) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3366 static_assert(sizeof(ChestDesc) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3367 static_assert(sizeof(TileDesc) == 0x1A, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3368 static_assert(sizeof(MonsterDesc_mm6) == 148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3369 static_assert(sizeof(MonsterDesc) == 152, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3370 static_assert(sizeof(Timer) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3371 static_assert(sizeof(OtherOverlay) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3372 static_assert(sizeof(ItemGen) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3373 static_assert(sizeof(SpriteObject) == 0x70, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3374 static_assert(sizeof(ItemDesc) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3375 static_assert(sizeof(ItemsTable) == 0x117A0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3376 static_assert(sizeof(Chest) == 0x14CC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3377 static_assert(sizeof(MapInfo) == 0x44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3378 static_assert(sizeof(SpellInfo) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3379 static_assert(sizeof(SpellData) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3380 static_assert(sizeof(SpellBuff) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3381 static_assert(sizeof(AIDirection) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3382 static_assert(sizeof(ActorJob) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3383 static_assert(sizeof(Actor) == 0x344, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3384 static_assert(sizeof(LevelDecoration) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3385 static_assert(sizeof(KeyboardActionMapping) == 0x20C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3386 static_assert(sizeof(UIAnimation) == 0xD, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3387 static_assert(sizeof(SpawnPointMM7) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3388 static_assert(sizeof(ODMFace) == 0x134, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3389 static_assert(sizeof(BSPNode) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3390 static_assert(sizeof(BSPModel) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3391 static_assert(sizeof(OutdoorLocation) == 0x1C28C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3392 static_assert(sizeof(BLVFace) == 0x60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3393 static_assert(sizeof(BLVFaceExtra) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3394 static_assert(sizeof(BLVSector) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3395 static_assert(sizeof(BLVLightMM7) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3396 static_assert(sizeof(BLVDoor) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3397 static_assert(sizeof(IndoorLocation) == 0x690, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3398 //static_assert(sizeof(ODMRenderParams) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3399 static_assert(sizeof(Mouse) == 0x114, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3400 static_assert(sizeof(Particle_sw) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3401 static_assert(sizeof(Particle) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3402 static_assert(sizeof(ParticleEngine) == 0xE430, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3403 static_assert(sizeof(Lightmap) == 0xC1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3404 static_assert(sizeof(LightmapBuilder) == 0x3CBC38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3405 static_assert(sizeof(Vis_SelectionList) == 0x2008, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3406 static_assert(sizeof(Vis) == 0x20D0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3407 static_assert(sizeof(PlayerBuffAnim) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3408 static_assert(sizeof(ProjectileAnim) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3409 static_assert(sizeof(stru6) == 0x5F8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3410 static_assert(sizeof(IndoorCameraD3D_Vec3) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3411 static_assert(sizeof(IndoorCameraD3D_Vec4) == 0x18, "Wrong type size"); //should be 14 (10 vec3 + 4 vdtor) but 18 coz of his +4 from own vdtor, but it is odd since vdtor already present from vec3 |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3412 //static_assert(sizeof(IndoorCameraD3D) == 0x1A1384, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3413 static_assert(sizeof(StationaryLight) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3414 static_assert(sizeof(LightsStack_StationaryLight_) == 0x12C8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3415 static_assert(sizeof(MobileLight) == 0x12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3416 static_assert(sizeof(LightsStack_MobileLight_) == 0x1C28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3417 static_assert(sizeof(Game) == 0xE78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3418 static_assert(sizeof(stru141_actor_collision_object) == 0xA8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3419 static_assert(sizeof(ActionQueue) == 0x7C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3420 static_assert(sizeof(NPCData) == 0x4C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3421 static_assert(sizeof(NPCStats) == 0x17FFC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3422 static_assert(sizeof(BspRenderer) == 0x53740, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3423 static_assert(sizeof(PaletteManager) == 0x267AF0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3424 static_assert(sizeof(ViewingParams) == 0x26C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3425 //static_assert(sizeof(IndoorCamera) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3426 static_assert(sizeof(Bloodsplat) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3427 static_assert(sizeof(BloodsplatContainer) == 0xA0C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3428 static_assert(sizeof(TrailParticle) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3429 static_assert(sizeof(EventIndex) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3430 static_assert(sizeof(_2devent) == 0x34, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3431 static_assert(sizeof(stru176) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3432 static_assert(sizeof(SavegameHeader) == 0x64, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3433 static_assert(sizeof(SavegameList) == 0x3138, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3434 static_assert(sizeof(StorylineText) == 0x160, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3435 static_assert(sizeof(FactionTable) == 0x1EF1, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3436 static_assert(sizeof(Decal) == 0xC20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3437 static_assert(sizeof(DecalBuilder) == 0x30C038, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3438 static_assert(sizeof(MonsterInfo) == 0x58, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3439 static_assert(sizeof(MonsterStats) == 0x5BA0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3440 static_assert(sizeof(RenderD3D) == 0x148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3441 // static_assert(sizeof(Render) == 0x129844, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3442 static_assert(sizeof(Player) == 0x1B3C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3443 static_assert(sizeof(PartyTimeStruct) == 0x678, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3444 static_assert(sizeof(Party) == 0x16238, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3445 static_assert(sizeof(GUIButton) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3446 static_assert(sizeof(GUIWindow) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3447 static_assert(sizeof(GUIProgressBar) == 0x1B8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3448 static_assert(sizeof(GUIFont) == 0x1020, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3449 // static_assert(sizeof(stru262_TurnBased) == 0x40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3450 static_assert(sizeof(ArcomageGame) == 0xFB, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3451 static_assert(sizeof(CastSpellInfo) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3452 static_assert(sizeof(ArcomageCard) == 0x6C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3453 static_assert(sizeof(stru320) == 0x3FC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3454 static_assert(sizeof(TravelInfo) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3455 static_assert(sizeof(stru336) == 0x798, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3456 static_assert(sizeof(Vec3_short_) == 6, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3457 static_assert(sizeof(BLVFace) == 96, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3458 static_assert(sizeof(BLVFaceExtra) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3459 static_assert(sizeof(BLVSector) == 116, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3460 static_assert(sizeof(LevelDecoration) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3461 static_assert(sizeof(BLVLightMM7) == 16, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3462 static_assert(sizeof(BSPNode) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3463 static_assert(sizeof(SpawnPointMM7) == 24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3464 static_assert(sizeof(DDM_DLV_Header) == 40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3465 static_assert(sizeof(Actor) == 836, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3466 static_assert(sizeof(SpriteObject) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3467 static_assert(sizeof(Chest) == 5324, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3468 static_assert(sizeof(stru123) == 0xC8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3469 static_assert(sizeof(BLVMapOutline) == 12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
3470 static_assert(sizeof(LODSprite) == 0x28, "Wrong type size"); |
522 | 3471 } |
3472 | |
2277 | 3473 bool new_sky = false; //íîâîå íåáî(òðåáóþòñÿ òåêñòóðêè) |
3474 int max_flight_height = 4000; //ìàêñèìàëüíàÿ âûñîòà ïîë¸òà | |
2034 | 3475 |
2037
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
3476 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
3477 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
3478 |
0 | 3479 //----- (00462C94) -------------------------------------------------------- |
3480 bool MM_Main(const wchar_t *pCmdLine) | |
3481 { | |
522 | 3482 IntegrityTest(); |
1706 | 3483 |
246 | 3484 char test[1024]; |
522 | 3485 sprintfex(test, "^Pi[%s]: çíàõàð^R[ü;êà;]", "Çîëòàí"); |
3486 | |
2052 | 3487 lua = new LuaVM; |
3488 lua->Initialize(); | |
2031 | 3489 |
1052 | 3490 bool bNoMargareth = false; |
0 | 3491 if (pCmdLine && *pCmdLine) |
3492 { | |
2061 | 3493 //if (wcsstr(pCmdLine, L"-usedefs")) |
3494 // bDebugResouces = 1; | |
0 | 3495 if (wcsstr(pCmdLine, L"-window")) |
2061 | 3496 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 3497 |
3498 if (wcsstr(pCmdLine, L"-nointro")) | |
3499 bNoIntro = true;//dword_6BE364_game_settings_1 |= 4; | |
3500 if (wcsstr(pCmdLine, L"-nologo")) | |
3501 bNoLogo = true;//dword_6BE364_game_settings_1 |= 8; | |
3502 if (wcsstr(pCmdLine, L"-nosound")) | |
3503 bNoSound = true; //dword_6BE364_game_settings_1 |= 0x10; | |
3504 | |
3505 bWalkSound = ReadWindowsRegistryInt("WalkSound", 1) != 0; | |
3506 if (wcsstr(pCmdLine, L"-nowalksound")) | |
3507 bWalkSound = false;//dword_6BE364_game_settings_1 |= 0x20; | |
256 | 3508 if (wcsstr(pCmdLine, L"-novideo")) |
0 | 3509 { |
2061 | 3510 dword_6BE364_game_settings_1 |= GAME_SETTINGS_NO_HOUSE_ANIM; |
0 | 3511 bNoVideo = true; |
3512 } | |
3513 if (wcsstr(pCmdLine, L"-nocd")) | |
3514 bNoCD = true; | |
168 | 3515 if (wcsstr(pCmdLine, L"-new_sky")) |
3516 new_sky = true; | |
1052 | 3517 if (wcsstr(pCmdLine, L"-nomarg")) |
3518 bNoMargareth = true; | |
0 | 3519 } |
3520 | |
731 | 3521 /*v8 = _4AC1C9_get_cpu_speed(0, (Vec4_int_ *)a2); |
0 | 3522 Rect.left = *(int *)v8; |
3523 Rect.top = *(int *)(v8 + 4); | |
3524 Rect.right = *(int *)(v8 + 8); | |
3525 Rect.bottom = *(int *)(v8 + 12); | |
731 | 3526 uCPUSpeed = Rect.bottom;*/ |
3527 uCPUSpeed = 2048; // about 2GHz | |
4 | 3528 |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
3529 if (!MM7_Initialize(640, 480))//çàäà¸òñÿ ðàçìåð îêíà |
734 | 3530 { |
3531 Log::Warning(L"MM init: failed"); | |
3532 pGame->Deinitialize(); | |
3533 return 1; | |
3534 } | |
0 | 3535 |
2216 | 3536 pEventTimer->Pause(); |
3537 | |
3538 SetUserInterface(PartyAlignment_Neutral, false); | |
2290 | 3539 ShowLogoVideo(); |
3540 //ShowIntroVideo_and_LoadingScreen(); | |
2216 | 3541 WriteWindowsRegistryInt("Ran once", 1); |
3542 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; | |
3543 pGame->InitializeGammaController(); | |
3544 SecondaryInitialization(); | |
3545 pRenderer->SetRasterClipRect(0, 0, window->GetWidth() - 1, window->GetHeight() - 1); | |
3546 FinalInitialization(); | |
2279 | 3547 |
3548 //Ritor1: include | |
2278 | 3549 MMT_MainMenu_Loop(); |
2279 | 3550 |
2216 | 3551 Log::Warning(L"MM: entering main loop"); |
3552 while ( 1 ) | |
3553 { | |
3554 MainMenuWindow* main_menu_window = MainMenuWindow::Create(); | |
3555 window->AddControl(main_menu_window); | |
3556 MainMenu_Loop(); | |
3557 uGameState = GAME_STATE_PLAYING; | |
0 | 3558 while ( 1 ) |
3559 { | |
2216 | 3560 if (uGameState == GAME_FINISHED || GetCurrentMenuID() == MENU_EXIT_GAME) |
3561 { | |
3562 pGame->Deinitialize(); | |
3563 return true; | |
3564 } | |
3565 | |
3566 if (GetCurrentMenuID() == MENU_NEWGAME) | |
0 | 3567 { |
2216 | 3568 if ( pAudioPlayer->hAILRedbook ) |
3569 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
3570 pParty->Reset(); | |
3571 pOtherOverlayList->Reset(); | |
3572 strcpy(pCurrentMapName, pStartingMapName); | |
3573 pParty->CreateDefaultParty(0); | |
3574 PlayerCreationUI_Initialize(); | |
3575 if ( PlayerCreationUI_Loop() ) | |
982 | 3576 { |
0 | 3577 DeleteCCharFont(); |
2216 | 3578 break; |
2 | 3579 } |
2216 | 3580 DeleteCCharFont(); |
3581 bFlashQuestBook = true; | |
3582 PlayFullscreenMovie(MOVIE_Emerald); | |
3583 //pGame->pCShow->PlayMovie(MOVIE_Emerald, 0); | |
3584 SaveNewGame(); | |
3585 if (bNoMargareth) | |
3586 _449B7E_toggle_bit(pParty->_quest_bits, PARTY_QUEST_EMERALD_MARGARETH_OFF, 1); | |
3587 pGame->Loop(); | |
3588 if (uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU) | |
101 | 3589 { |
3590 SetCurrentMenuID(MENU_NEWGAME); | |
982 | 3591 uGameState = GAME_STATE_PLAYING; |
0 | 3592 continue; |
101 | 3593 } |
2216 | 3594 else if (uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU) |
3595 break; | |
3596 assert(false && "Invalid game state"); | |
3597 } | |
3598 if (GetCurrentMenuID() == MENU_CREDITS) | |
3599 { | |
3600 if ( pAudioPlayer->hAILRedbook ) | |
3601 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
3602 MainMenuUI_Credits_Loop(); | |
3603 break; | |
3604 } | |
3605 if (GetCurrentMenuID() == MENU_5 || GetCurrentMenuID() == MENU_LoadingProcInMainMenu) | |
3606 { | |
3607 uGameState = GAME_STATE_PLAYING; | |
3608 pGame->Loop(); | |
3609 } | |
3610 else | |
3611 { | |
3612 if (GetCurrentMenuID() == MENU_DebugBLVLevel) | |
907 | 3613 { |
2216 | 3614 pMouse->ChangeActivation(0); |
3615 pParty->Reset(); | |
3616 pParty->CreateDefaultParty(1); | |
3617 | |
3618 __debugbreak(); | |
3619 /*extern void CreateDefaultBLVLevel(); | |
3620 CreateDefaultBLVLevel(); | |
3621 | |
3622 OPENFILENAMEA ofn; | |
3623 if ( !GetOpenFileNameA((LPOPENFILENAMEA)&ofn) ) | |
3624 { | |
3625 pMouse->ChangeActivation(1); | |
3626 break; | |
3627 } | |
3628 _chdir("..\\"); | |
3629 strcpy(pCurrentMapName, ofn.lpstrFileTitle);*/ | |
3630 pMouse->ChangeActivation(1); | |
3631 pGame->Loop(); | |
907 | 3632 } |
0 | 3633 } |
2216 | 3634 if ( uGameState == GAME_STATE_LOADING_GAME ) |
3635 { | |
3636 SetCurrentMenuID(MENU_5); | |
3637 uGameState = GAME_STATE_PLAYING; | |
3638 continue; | |
3639 } | |
3640 if ( uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU ) | |
0 | 3641 { |
2216 | 3642 SetCurrentMenuID(MENU_NEWGAME); |
3643 uGameState = GAME_STATE_PLAYING; | |
3644 continue; | |
3645 } | |
3646 if ( uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU)// from the loaded game | |
3647 { | |
3648 pAudioPlayer->StopChannels(-1, -1); | |
3649 uGameState = GAME_STATE_PLAYING; | |
3650 break; | |
0 | 3651 } |
3652 } | |
2216 | 3653 if (!bNoSound && pAudioPlayer->hAILRedbook) |
3654 { | |
3655 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f); | |
3656 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
3657 unsigned int startms, end_ms; | |
3658 AIL_redbook_track_info(pAudioPlayer->hAILRedbook, 14, &startms, &end_ms); | |
3659 AIL_redbook_play(pAudioPlayer->hAILRedbook, startms + 1, end_ms); | |
3660 } | |
3661 } | |
2050 | 3662 //lua_close(L); |
0 | 3663 pGame->Deinitialize(); |
734 | 3664 return 1; |
0 | 3665 } |
3666 | |
3667 //----- (004637E0) -------------------------------------------------------- | |
1458 | 3668 char sub_4637E0_is_there_popup_onscreen() |
0 | 3669 { |
3670 return dword_507BF0_is_there_popup_onscreen == 1; | |
3671 } | |
3672 // 507BF0: using guessed type int dword_507BF0_is_there_popup_onscreen; | |
3673 | |
3674 //----- (00466082) -------------------------------------------------------- | |
3675 void MM6_Initialize(const wchar_t *pIniFilename) | |
3676 { | |
3677 //int v0; // eax@1 | |
2151 | 3678 //UINT v1; // eax@18 |
0 | 3679 size_t v2; // eax@31 |
3680 size_t v3; // ebx@32 | |
3681 size_t v4; // edi@36 | |
3682 //char v5[120]; // [sp+Ch] [bp-17Ch]@1 | |
3683 //char String[120]; // [sp+84h] [bp-104h]@32 | |
3684 char pDefaultGroundTexture[16]; // [sp+FCh] [bp-8Ch]@32 | |
3685 //char pIniFilename[120]; // [sp+10Ch] [bp-7Ch]@1 | |
3686 unsigned int v9; // [sp+184h] [bp-4h]@28 | |
3687 | |
3688 //_getcwd(v5, 120); | |
3689 //sprintfex(pIniFilename, "%s\\mm6.ini", v5); | |
3690 viewparams = new ViewingParams; | |
819 | 3691 game_viewport_x = viewparams->uScreen_topL_X = GetPrivateProfileIntW(L"screen", L"vx1", 8, pIniFilename); |
3692 game_viewport_y = viewparams->uScreen_topL_Y = GetPrivateProfileIntW(L"screen", L"vy1", 8, pIniFilename); | |
3693 game_viewport_z = viewparams->uScreen_BttmR_X = GetPrivateProfileIntW(L"screen", L"vx2", 468, pIniFilename); | |
3694 game_viewport_w = viewparams->uScreen_BttmR_Y = GetPrivateProfileIntW(L"screen", L"vy2", 351, pIniFilename); | |
3695 game_viewport_width = game_viewport_z - game_viewport_x; | |
3696 game_viewport_height = game_viewport_w - game_viewport_y + 1; | |
0 | 3697 |
3698 | |
3699 pAudioPlayer = new AudioPlayer; | |
3700 pAudioPlayer->uMixerChannels = GetPrivateProfileIntW(L"settings", L"mixerchannels", 16, pIniFilename); | |
3701 if ( pAudioPlayer->uMixerChannels > 16 ) | |
3702 pAudioPlayer->uMixerChannels = 16; | |
3703 | |
3704 | |
3705 if (GetPrivateProfileIntW(L"debug", L"nomonster", 0, pIniFilename)) | |
2061 | 3706 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_ACTORS; |
2151 | 3707 if (ReadWindowsRegistryInt("startinwindow", 0)) |
2061 | 3708 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 3709 if (GetPrivateProfileIntW(L"debug", L"showFR", 0, pIniFilename)) |
2061 | 3710 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_0002_SHOW_FR; |
0 | 3711 if (GetPrivateProfileIntW(L"debug", L"nodamage", 0, pIniFilename)) |
2061 | 3712 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DAMAGE; |
0 | 3713 if (GetPrivateProfileIntW(L"debug", L"nodecoration", 0, pIniFilename)) |
2061 | 3714 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DECORATIONS; |
0 | 3715 |
3716 wchar_t pStartingMapNameW[1024]; | |
3717 GetPrivateProfileStringW(L"file", L"startmap", L"out01.odm", pStartingMapNameW, 0x20u, pIniFilename); | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3718 sprintf(pStartingMapName, "%S", pStartingMapNameW); |
0 | 3719 |
3720 v9 = 0; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3721 if ( strlen(pStartingMapName) ) |
0 | 3722 { |
3723 do | |
3724 { | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3725 if ( pStartingMapName[v9] == ' ' ) |
0 | 3726 pStartingMapName[v9] = 0; |
3727 ++v9; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
3728 v2 = strlen(pStartingMapName); |
0 | 3729 } |
3730 while ( v9 < v2 ); | |
3731 } | |
3732 | |
1637 | 3733 pODMRenderParams = new ODMRenderParams; |
3734 pODMRenderParams->outdoor_no_mist = GetPrivateProfileIntW(L"debug", L"noMist", 0, pIniFilename); | |
3735 pODMRenderParams->bNoSky = GetPrivateProfileIntW(L"outdoor", L"nosky", 0, pIniFilename); | |
3736 pODMRenderParams->bDoNotRenderDecorations = GetPrivateProfileIntW(L"render", L"nodecorations", 0, pIniFilename); | |
3737 pODMRenderParams->outdoor_no_wavy_water = GetPrivateProfileIntW(L"outdoor", L"nowavywater", 0, pIniFilename); | |
0 | 3738 outdoor_grid_band_1 = GetPrivateProfileIntW(L"outdoor", L"gridband1", 10, pIniFilename); |
3739 outdoor_grid_band_2 = GetPrivateProfileIntW(L"outdoor", L"gridband2", 15, pIniFilename); | |
3740 outdoor_grid_band_3 = GetPrivateProfileIntW(L"outdoor", L"gridband3", 25, pIniFilename); | |
1637 | 3741 pODMRenderParams->terrain_gamma = GetPrivateProfileIntW(L"outdoor", L"ter_gamma", 0, pIniFilename); |
3742 pODMRenderParams->building_gamme = GetPrivateProfileIntW(L"outdoor", L"bld_gamma", 0, pIniFilename); | |
3743 pODMRenderParams->shading_dist_shade = GetPrivateProfileIntW(L"shading", L"dist_shade", 2048, pIniFilename); | |
3744 pODMRenderParams->shading_dist_shademist = GetPrivateProfileIntW(L"shading", L"dist_shademist", 4096, pIniFilename); | |
1765 | 3745 |
2277 | 3746 //int dist = 0x2000; |
3747 | |
3748 //if ( new_draw_object_dist ) | |
3749 //dist = 0x6000; | |
3750 pODMRenderParams->shading_dist_mist = GetPrivateProfileIntW(L"shading", L"dist_mist", 0x2000, pIniFilename);//äàëüíîñòü îòðèñîâêè 0x2000 | |
0 | 3751 |
3752 wchar_t pDefaultSkyTextureW[1024]; | |
3753 GetPrivateProfileStringW(L"textures", L"sky", L"plansky1", pDefaultSkyTextureW, 0x10u, pIniFilename); | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
3754 sprintf(pDefaultSkyTexture.data(), "%S", pDefaultSkyTextureW); |
0 | 3755 |
3756 wchar_t pDefaultGroundTextureW[1024]; | |
3757 GetPrivateProfileStringW(L"textures", L"default", L"dirt", pDefaultGroundTextureW, 0x10u, pIniFilename); | |
3758 sprintf(pDefaultGroundTexture, "%S", pDefaultGroundTextureW); | |
3759 | |
3760 wchar_t pFloat[1024]; | |
3761 GetPrivateProfileStringW(L"debug", L"recmod1", L"1.0", pFloat, 0x10u, pIniFilename); | |
3762 swscanf(pFloat, L"%f", &flt_6BE3A4_debug_recmod1); | |
3763 | |
3764 GetPrivateProfileStringW(L"debug", L"recmod2", L"1.0", pFloat, 0x10u, pIniFilename); | |
3765 swscanf(pFloat, L"%f", &flt_6BE3A8_debug_recmod2); | |
3766 | |
3767 flt_6BE3AC_debug_recmod1_x_1_6 = flt_6BE3A4_debug_recmod1 * 1.666666666666667; | |
3768 | |
3769 v3 = 0; | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
3770 if ( strlen(pDefaultSkyTexture.data()) ) |
0 | 3771 { |
3772 do | |
3773 { | |
3774 if ( pDefaultSkyTexture[v3] == ' ' ) | |
3775 pDefaultSkyTexture[v3] = 0; | |
3776 ++v3; | |
3777 } | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
3778 while ( v3 < strlen(pDefaultSkyTexture.data()) ); |
0 | 3779 } |
3780 v4 = 0; | |
3781 if ( strlen(pDefaultGroundTexture) ) | |
3782 { | |
3783 do | |
3784 { | |
3785 if ( pDefaultGroundTexture[v4] == ' ' ) | |
3786 pDefaultGroundTexture[v4] = 0; | |
3787 ++v4; | |
3788 } | |
3789 while ( v4 < strlen(pDefaultGroundTexture) ); | |
3790 } | |
3791 | |
3792 MM7Initialization(); | |
3793 } | |
3794 | |
3795 //----- (004666D5) -------------------------------------------------------- | |
2151 | 3796 void MM7Initialization() |
0 | 3797 { |
3798 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | |
3799 { | |
2151 | 3800 /*if (byte_6BE388_graphicsmode == 0) |
0 | 3801 { |
3802 outdoor_grid_band_1 = 10; | |
3803 outdoor_grid_band_2 = 15; | |
3804 outdoor_grid_band_3 = 20; | |
1637 | 3805 pODMRenderParams->shading_dist_mist = 8192; |
3806 pODMRenderParams->bNoSky = false; | |
0 | 3807 LOBYTE(viewparams->field_20) = 0; |
2151 | 3808 }*/ |
1637 | 3809 pODMRenderParams->shading_dist_shade = 2048; |
3810 pODMRenderParams->terrain_gamma = 0; | |
3811 pODMRenderParams->building_gamme = 0; | |
3812 pODMRenderParams->shading_dist_shademist = 4096; | |
3813 pODMRenderParams->outdoor_no_wavy_water = 0; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
3814 //_47F4D3_initialize_terrain_bezier_stuff(outdoor_grid_band_1, outdoor_grid_band_2, outdoor_grid_band_3); |
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
3815 { |
1637 | 3816 pODMRenderParams->outdoor_grid_band_3 = outdoor_grid_band_3; |
3817 pODMRenderParams->uPickDepth = outdoor_grid_band_3 * 512; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
3818 } |
0 | 3819 } |
3820 else | |
3821 LOBYTE(viewparams->field_20) = 0; | |
2101 | 3822 pParty->uFlags |= 2; |
692 | 3823 viewparams->uSomeY = viewparams->uScreen_topL_Y; |
3824 viewparams->uSomeX = viewparams->uScreen_topL_X; | |
3825 viewparams->uSomeZ = viewparams->uScreen_BttmR_X; | |
3826 viewparams->uSomeW = viewparams->uScreen_BttmR_Y; | |
3827 | |
3828 pViewport->SetScreen(viewparams->uScreen_topL_X, viewparams->uScreen_topL_Y, viewparams->uScreen_BttmR_X, viewparams->uScreen_BttmR_Y); | |
0 | 3829 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) |
1637 | 3830 pODMRenderParams->Initialize(); |
0 | 3831 } |
3832 | |
3833 //----- (00466C40) -------------------------------------------------------- | |
3834 const wchar_t *MENU_STATE_to_string(MENU_STATE m) | |
3835 { | |
3836 switch (m) | |
3837 { | |
982 | 3838 case -1: return L"-1"; |
3839 case MENU_MAIN: return L"MENU_MAIN"; | |
3840 case MENU_NEWGAME: return L"MENU_NEWGAME"; | |
3841 case MENU_CREDITS: return L"MENU_CREDITS"; | |
3842 case MENU_SAVELOAD: return L"MENU_SAVELOAD"; | |
3843 case MENU_EXIT_GAME: return L"MENU_EXIT_GAME"; | |
3844 case MENU_5: return L"MENU_5"; | |
3845 case MENU_CREATEPARTY: return L"MENU_CREATEPARTY"; | |
165 | 3846 case MENU_NAMEPANELESC: return L"MENU_NAMEPANELESC"; |
982 | 3847 case MENU_CREDITSPROC: return L"MENU_CREDITSPROC"; |
961 | 3848 case MENU_LoadingProcInMainMenu: return L"MENU_LoadingProcInMainMenu"; |
1458 | 3849 case MENU_DebugBLVLevel: return L"MENU_DebugBLVLevel"; |
165 | 3850 case MENU_CREDITSCLOSE: return L"MENU_CREDITSCLOSE"; |
2278 | 3851 case MENU_MMT_MAIN_MENU: return L"MENU_MMT_MAIN_MENU"; |
982 | 3852 default: return L"unk"; |
0 | 3853 }; |
3854 }; | |
3855 void SetCurrentMenuID(MENU_STATE uMenu) | |
3856 { | |
2006 | 3857 sCurrentMenuID = uMenu; |
0 | 3858 |
3859 Log::Warning(L"CurrentMenu = %s", MENU_STATE_to_string(uMenu)); | |
3860 } | |
3861 | |
3862 //----- (00466CA0) -------------------------------------------------------- | |
3863 MENU_STATE GetCurrentMenuID() | |
3864 { | |
2006 | 3865 return sCurrentMenuID; |
0 | 3866 } |
3867 | |
3868 | |
3869 //----- (0046BDA8) -------------------------------------------------------- | |
1458 | 3870 unsigned int GetGravityStrength() |
0 | 3871 { |
3872 int v0; // eax@1 | |
3873 | |
3874 v0 = ~LOBYTE(pGame->uFlags2) & 8; | |
3875 LOBYTE(v0) = v0 | 2; | |
3876 return (unsigned int)v0 >> 1; | |
3877 } | |
3878 | |
3879 //----- (0046BDC0) -------------------------------------------------------- | |
1458 | 3880 void UpdateUserInput_and_MapSpecificStuff() |
0 | 3881 { |
2061 | 3882 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME) |
0 | 3883 { |
2061 | 3884 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME; |
3885 return; | |
0 | 3886 } |
2061 | 3887 |
630 | 3888 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
0 | 3889 BLV_UpdateUserInputAndOther(); |
630 | 3890 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) |
0 | 3891 ODM_UpdateUserInputAndOther(); |
630 | 3892 |
783 | 3893 area_of_effect__damage_evaluate(); |
0 | 3894 } |
3895 | |
3896 //----- (0046BFFA) -------------------------------------------------------- | |
3897 bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2) | |
3898 { | |
2101 | 3899 ObjectDesc *object; // ebx@1 |
0 | 3900 unsigned int v8; // eax@19 |
3901 signed int v10; // ebx@19 | |
3902 char *v11; // edx@20 | |
3903 unsigned __int16 v12; // ax@23 | |
3904 int v13; // eax@27 | |
2334 | 3905 // unsigned int v14; // ebx@33 |
0 | 3906 int v16; // eax@36 |
2334 | 3907 // unsigned int v17; // eax@37 |
0 | 3908 __int16 v18; // di@37 |
3909 signed int v19; // edx@37 | |
2334 | 3910 // unsigned __int8 v20; // sf@37 |
3911 // char *v21; // ecx@38 | |
0 | 3912 unsigned __int16 v22; // ax@41 |
2334 | 3913 // unsigned int v23; // eax@46 |
0 | 3914 signed int v24; // ebx@46 |
3915 char *v25; // edx@47 | |
3916 int v26; // edx@54 | |
3917 int v27; // edx@55 | |
3918 int v28; // edx@56 | |
3919 int v29; // edx@57 | |
2334 | 3920 // unsigned __int16 v30; // ax@60 |
3921 // unsigned int v31; // ecx@60 | |
3922 // int v32; // edi@60 | |
3923 // unsigned int v33; // eax@65 | |
0 | 3924 signed int v34; // edx@65 |
2334 | 3925 // char *v35; // ecx@66 |
0 | 3926 unsigned __int16 v36; // ax@69 |
3927 int v37; // ST14_4@72 | |
3928 int v38; // eax@72 | |
3929 int v39; // ST10_4@72 | |
3930 int v40; // ST0C_4@72 | |
3931 int v41; // edx@76 | |
3932 int v42; // edx@77 | |
3933 int v43; // edx@78 | |
3934 unsigned __int8 v44; // zf@79 | |
3935 int v45; // edx@79 | |
3936 unsigned __int16 v46; // ax@80 | |
3937 int v47; // eax@81 | |
3938 int v48; // edx@87 | |
3939 int v49; // edx@88 | |
3940 int v50; // edx@89 | |
3941 signed int v52; // ebx@93 | |
2334 | 3942 // char *v53; // edx@94 |
3943 // unsigned __int16 v54; // ax@98 | |
3944 // unsigned int v55; // ecx@98 | |
0 | 3945 signed int v56; // ebx@98 |
2334 | 3946 // char *v57; // edx@99 |
0 | 3947 unsigned __int16 v58; // ax@102 |
3948 unsigned __int16 v59; // ax@107 | |
2334 | 3949 // unsigned int v60; // ecx@107 |
0 | 3950 signed int v61; // ebx@107 |
2334 | 3951 // char *v62; // edx@108 |
0 | 3952 unsigned __int16 v63; // ax@111 |
3953 int v64; // ebx@114 | |
3954 signed int v65; // eax@114 | |
2334 | 3955 // unsigned int v66; // edi@123 |
3956 // unsigned __int16 v67; // ax@124 | |
3957 // unsigned int v68; // ecx@124 | |
0 | 3958 signed int v69; // ebx@124 |
2334 | 3959 // char *v70; // edx@125 |
0 | 3960 unsigned __int16 v71; // ax@128 |
3961 unsigned int v72; // ebx@131 | |
3962 int v78; // eax@133 | |
3963 char v79; // zf@139 | |
2334 | 3964 // unsigned int v80; // eax@140 |
0 | 3965 signed int v81; // edx@140 |
2334 | 3966 // char *v82; // ecx@141 |
0 | 3967 unsigned __int16 v83; // ax@144 |
2334 | 3968 // unsigned __int16 v84; // ax@151 |
3969 // unsigned int v85; // ecx@151 | |
0 | 3970 signed int v86; // ebx@151 |
2334 | 3971 // char *v87; // edx@152 |
0 | 3972 unsigned __int16 v88; // ax@155 |
3973 unsigned int v89; // eax@158 | |
3974 int v90; // ST34_4@159 | |
3975 int v91; // eax@159 | |
3976 unsigned int v92; // eax@163 | |
2334 | 3977 // unsigned int v93; // eax@177 |
3978 // char *v94; // ecx@178 | |
0 | 3979 unsigned __int16 v95; // ax@181 |
3980 unsigned __int16 v96; // ax@184 | |
3981 int v97; // eax@185 | |
2334 | 3982 // unsigned __int16 v98; // ax@191 |
0 | 3983 char v100; // ST18_1@198 |
3984 int v102; // eax@198 | |
3985 signed int v106; // eax@208 | |
3986 unsigned int v107; // edx@220 | |
3987 signed int v108; // ebx@225 | |
2334 | 3988 // unsigned int v109; // eax@234 |
0 | 3989 signed int v110; // ebx@234 |
2334 | 3990 // char *v111; // ecx@235 |
0 | 3991 unsigned __int16 v112; // ax@238 |
3992 unsigned __int16 v113; // si@241 | |
3993 int v114; // eax@242 | |
3994 int v115; // eax@245 | |
2334 | 3995 // unsigned __int16 v117; // ax@251 |
3996 // unsigned int v118; // ecx@251 | |
0 | 3997 signed int v119; // ebx@251 |
2334 | 3998 // char *v120; // edx@252 |
0 | 3999 unsigned __int16 v121; // ax@255 |
2334 | 4000 // unsigned int v122; // eax@260 |
4001 // char *v123; // edx@261 | |
0 | 4002 int v124; // eax@267 |
4003 int v125; // [sp-20h] [bp-4Ch]@28 | |
4004 char v132; // [sp-8h] [bp-34h]@131 | |
4005 char v134; // [sp-4h] [bp-30h]@131 | |
4006 signed int v135; // [sp-4h] [bp-30h]@217 | |
4007 int v136; // [sp+Ch] [bp-20h]@208 | |
4008 int v137; // [sp+10h] [bp-1Ch]@208 | |
4009 signed int v138; // [sp+14h] [bp-18h]@207 | |
4010 signed int v139; // [sp+18h] [bp-14h]@208 | |
2334 | 4011 // char *v140; // [sp+1Ch] [bp-10h]@61 |
0 | 4012 signed int v141; // [sp+1Ch] [bp-10h]@117 |
4013 unsigned int v142; // [sp+1Ch] [bp-10h]@158 | |
4014 signed int v143; // [sp+1Ch] [bp-10h]@172 | |
2334 | 4015 // char *v144; // [sp+1Ch] [bp-10h]@192 |
0 | 4016 signed int v146; // [sp+20h] [bp-Ch]@60 |
4017 int v147; // [sp+20h] [bp-Ch]@72 | |
4018 signed int v148; // [sp+20h] [bp-Ch]@158 | |
4019 unsigned __int16 v150; // [sp+20h] [bp-Ch]@208 | |
4020 signed int v152; // [sp+24h] [bp-8h]@208 | |
2101 | 4021 |
4022 //ïðèìåíåíèå: ôàåðáîëò â õðàìå ëóíû | |
4023 object = &pObjectList->pObjects[pSpriteObjects[uLayingItemID].uObjectDescID]; | |
4024 //v151 = PID_TYPE(a2); | |
848 | 4025 if ( PID_TYPE(a2) == OBJECT_Actor) |
4026 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4027 if ( PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Actor |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4028 && !pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].GetActorsRelation(&pActors[PID_ID(a2)]) ) |
0 | 4029 return 1; |
4030 } | |
4031 else | |
4032 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4033 if ( PID_TYPE(a2) == OBJECT_Player && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Player) |
0 | 4034 return 1; |
4035 } | |
4036 if ( pParty->bTurnBasedModeOn == 1 ) | |
4037 { | |
2101 | 4038 if ( pSpriteObjects[uLayingItemID].uAttributes & 4 ) |
0 | 4039 { |
1450 | 4040 --pTurnEngine->pending_actions; |
2101 | 4041 pSpriteObjects[uLayingItemID].uAttributes &= 0xFFFB; |
0 | 4042 } |
4043 } | |
2101 | 4044 if ( PID_TYPE(a2) == OBJECT_BModel && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) != OBJECT_Player) |
1280 | 4045 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4046 if (PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid) < 500) //bugfix PID_ID(v2->spell_caster_pid)==1000 |
2166 | 4047 pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].uAttributes |= 0x40000; |
1280 | 4048 } |
4049 | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4050 //v6 = v2->uType; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4051 //v7 = v2->uType; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4052 if ( pSpriteObjects[uLayingItemID].uType > 3060 ) |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4053 { |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4054 if ( pSpriteObjects[uLayingItemID].uType > 6090 ) |
0 | 4055 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4056 if ( pSpriteObjects[uLayingItemID].uType > 8090 ) |
0 | 4057 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4058 if ( pSpriteObjects[uLayingItemID].uType == 9010 ) |
0 | 4059 goto LABEL_247; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4060 if ( pSpriteObjects[uLayingItemID].uType != 9030 ) |
0 | 4061 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4062 if ( pSpriteObjects[uLayingItemID].uType != 9040 ) |
0 | 4063 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4064 if ( pSpriteObjects[uLayingItemID].uType != 9080 ) |
0 | 4065 return 0; |
2101 | 4066 v95 = 0; |
4067 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
4068 for ( v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146 ) | |
0 | 4069 { |
2101 | 4070 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID ) |
4071 v95 = v146; | |
0 | 4072 } |
2101 | 4073 pSpriteObjects[uLayingItemID].uObjectDescID = v95; |
4074 if ( !v95 ) | |
4075 SpriteObject::OnInteraction(uLayingItemID); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4076 v100 = pSpriteObjects[uLayingItemID].field_61; |
2101 | 4077 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
4078 v102 = 8 * uLayingItemID; | |
4079 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
4080 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4081 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4082 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4083 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
4084 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
4085 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
4086 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4087 v47 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4088 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4089 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4090 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2101 | 4091 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4092 return 0; |
0 | 4093 } |
2101 | 4094 sub_43A97E(uLayingItemID, a2); |
4095 ++pSpriteObjects[uLayingItemID].uType; | |
4096 v95 = 0; | |
4097 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4098 { | |
4099 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4100 v95 = v52; | |
4101 } | |
4102 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4103 if ( !v95 ) | |
4104 SpriteObject::OnInteraction(uLayingItemID); | |
4105 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4106 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4107 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4108 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4109 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4110 if ( !v96 ) | |
4111 v97 = 0; | |
4112 else | |
4113 v97 = (signed __int16)v96 + 4; | |
4114 v124 = 8 * uLayingItemID; | |
4115 LOBYTE(v124) = v124 | 2; | |
4116 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4117 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4118 return 0; | |
0 | 4119 } |
4120 LABEL_172: | |
4121 v143 = 17030; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4122 switch ( pSpriteObjects[uLayingItemID].uType ) |
0 | 4123 { |
4124 case 0x1798u: | |
4125 v143 = 15040; | |
4126 break; | |
4127 case 0xFAAu: | |
4128 v143 = 13010; | |
4129 break; | |
4130 case 0x2346u: | |
4131 v143 = 18030; | |
4132 break; | |
4133 } | |
4134 v138 = 1; | |
2101 | 4135 if ( PID_TYPE(a2) != OBJECT_Actor) |
0 | 4136 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4137 if ( pSpriteObjects[uLayingItemID].uType != 9030 || pSpriteObjects[uLayingItemID].spell_skill != 4 ) |
2101 | 4138 { |
4139 SpriteObject::OnInteraction(uLayingItemID); | |
4140 return 0; | |
4141 } | |
4142 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); | |
0 | 4143 LABEL_233: |
4144 if ( !v138 ) | |
4145 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4146 ++pSpriteObjects[uLayingItemID].uType; |
2101 | 4147 v112 = 0; |
4148 for ( v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110 ) | |
0 | 4149 { |
2101 | 4150 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID ) |
4151 v112 = v110; | |
0 | 4152 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4153 pSpriteObjects[uLayingItemID].uObjectDescID = v112; |
0 | 4154 if ( !v112 ) |
2101 | 4155 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4156 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4157 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4158 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4159 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4160 v113 = pSpriteObjects[uLayingItemID].uSoundID; |
0 | 4161 if ( v113 ) |
4162 v114 = (signed __int16)v113 + 4; | |
4163 else | |
4164 v114 = 0; | |
2101 | 4165 v115 = 8 * uLayingItemID; |
4166 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4167 v125 = v143 + 1; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4168 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0); |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4169 return 0; |
0 | 4170 } |
2101 | 4171 SpriteObject::OnInteraction(uLayingItemID); |
0 | 4172 return 0; |
4173 } | |
2101 | 4174 v106 = a2; |
0 | 4175 v150 = 0; |
848 | 4176 v139 = PID_ID(v106); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4177 v137 = pSpriteObjects[uLayingItemID].spell_level; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4178 v152 = pSpriteObjects[uLayingItemID].spell_skill; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4179 v136 = pSpriteObjects[uLayingItemID].spell_id; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4180 if ( pSpriteObjects[uLayingItemID].uType == 9030 ) |
0 | 4181 { |
4182 v150 = 2; | |
4183 if ( v152 == 2 ) | |
4184 { | |
4185 v150 = 3; | |
4186 } | |
4187 else | |
4188 { | |
4189 if ( v152 >= 3 ) | |
4190 v150 = 4; | |
4191 } | |
2166 | 4192 pActors[v139].uAttributes |= 0x80000; |
0 | 4193 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4194 if ( pSpriteObjects[uLayingItemID].uType == 6040 ) |
0 | 4195 { |
4196 v135 = 7; | |
4197 } | |
4198 else | |
4199 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4200 if ( pSpriteObjects[uLayingItemID].uType == 8030 ) |
0 | 4201 { |
4202 v135 = 9; | |
4203 } | |
4204 else | |
4205 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4206 if ( pSpriteObjects[uLayingItemID].uType != 9030 ) |
0 | 4207 { |
4208 v107 = v136; | |
4209 LABEL_222: | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4210 if ( pSpriteObjects[uLayingItemID].uType != 9030 || v152 != 4 ) |
0 | 4211 { |
4212 v108 = v139; | |
2301 | 4213 if ( pActors[v139].DoesDmgTypeDoDamage((DAMAGE_TYPE)v107) ) |
0 | 4214 { |
4215 v138 = 0; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4216 if ( pSpriteObjects[uLayingItemID].uType == 8030 ) |
0 | 4217 { |
4218 pActors[v108].uAIState = Standing; | |
4219 pActors[v108].UpdateAnimation(); | |
4220 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4221 pActors[v108].pActorBuffs[v136].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v137 << 7) * 0.033333335), |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4222 v152, v150, 0, 0); |
0 | 4223 } |
4224 } | |
4225 else | |
4226 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4227 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); |
0 | 4228 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4229 pSpriteObjects[uLayingItemID].spell_level = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4230 pSpriteObjects[uLayingItemID].spell_skill = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4231 pSpriteObjects[uLayingItemID].spell_id = 0; |
0 | 4232 goto LABEL_233; |
4233 } | |
4234 v135 = 10; | |
4235 } | |
4236 } | |
4237 v107 = v135; | |
4238 goto LABEL_222; | |
4239 } | |
2101 | 4240 if ( pSpriteObjects[uLayingItemID].uType == 8090 |
4241 || pSpriteObjects[uLayingItemID].uType == 7030 | |
4242 || pSpriteObjects[uLayingItemID].uType == 7090 || pSpriteObjects[uLayingItemID].uType == 8000 ) | |
4243 { | |
4244 sub_43A97E(uLayingItemID, a2); | |
4245 ++pSpriteObjects[uLayingItemID].uType; | |
4246 v95 = 0; | |
4247 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4248 { | |
4249 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4250 v95 = v52; | |
4251 } | |
4252 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4253 if ( !v95 ) | |
4254 SpriteObject::OnInteraction(uLayingItemID); | |
4255 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4256 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4257 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4258 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4259 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4260 if ( !v96 ) | |
4261 v97 = 0; | |
4262 else | |
4263 v97 = (signed __int16)v96 + 4; | |
4264 v124 = 8 * uLayingItemID; | |
4265 LOBYTE(v124) = v124 | 2; | |
4266 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4267 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4268 return 0; | |
4269 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4270 if ( pSpriteObjects[uLayingItemID].uType == 8010 ) |
0 | 4271 { |
2101 | 4272 if ( PID_TYPE(a2) == 3 |
4273 && MonsterStats::BelongsToSupertype(pActors[PID_ID(a2)].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD) ) | |
4274 sub_43A97E(uLayingItemID, a2); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4275 ++pSpriteObjects[uLayingItemID].uType; |
2101 | 4276 //v9 = 0; |
4277 v95 = 0; | |
4278 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
0 | 4279 { |
2101 | 4280 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) |
4281 v95 = v52; | |
0 | 4282 } |
2101 | 4283 pSpriteObjects[uLayingItemID].uObjectDescID = v95; |
4284 if ( !v95 ) | |
4285 SpriteObject::OnInteraction(uLayingItemID); | |
4286 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4287 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4288 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4289 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4290 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4291 if ( !v96 ) | |
4292 v97 = 0; | |
4293 else | |
4294 v97 = (signed __int16)v96 + 4; | |
4295 v92 = uLayingItemID; | |
4296 v124 = 8 * v92; | |
4297 LOBYTE(v124) = v124 | 2; | |
4298 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4299 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4300 return 0; | |
0 | 4301 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4302 v79 = pSpriteObjects[uLayingItemID].uType == 8030; |
0 | 4303 } |
4304 else | |
4305 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4306 if ( pSpriteObjects[uLayingItemID].uType == 6090 ) |
2101 | 4307 { |
4308 sub_43A97E(uLayingItemID, a2); | |
4309 ++pSpriteObjects[uLayingItemID].uType; | |
4310 v95 = 0; | |
4311 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4312 { | |
4313 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4314 v95 = v52; | |
4315 } | |
4316 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4317 if ( !v95 ) | |
4318 SpriteObject::OnInteraction(uLayingItemID); | |
4319 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4320 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4321 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4322 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4323 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4324 if ( !v96 ) | |
4325 v97 = 0; | |
4326 else | |
4327 v97 = (signed __int16)v96 + 4; | |
4328 v124 = 8 * uLayingItemID; | |
4329 LOBYTE(v124) = v124 | 2; | |
4330 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4331 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4332 return 0; | |
4333 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4334 if ( pSpriteObjects[uLayingItemID].uType <= 4070 ) |
0 | 4335 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4336 if ( pSpriteObjects[uLayingItemID].uType != 4070 ) |
0 | 4337 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4338 v48 = pSpriteObjects[uLayingItemID].uType - 3090; |
0 | 4339 if ( v48 ) |
4340 { | |
4341 v49 = v48 - 2; | |
4342 if ( v49 ) | |
4343 { | |
4344 v50 = v49 - 908; | |
2101 | 4345 if ( v49 == 908 ) |
4346 { | |
4347 sub_43A97E(uLayingItemID, a2); | |
4348 ++pSpriteObjects[uLayingItemID].uType; | |
4349 v95 = 0; | |
4350 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4351 { | |
4352 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4353 v95 = v52; | |
4354 } | |
4355 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4356 if ( !v95 ) | |
4357 SpriteObject::OnInteraction(uLayingItemID); | |
4358 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4359 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4360 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4361 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4362 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4363 if ( !v96 ) | |
4364 v97 = 0; | |
4365 else | |
4366 v97 = (signed __int16)v96 + 4; | |
4367 v124 = 8 * uLayingItemID; | |
4368 LOBYTE(v124) = v124 | 2; | |
4369 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4370 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4371 return 0; | |
4372 } | |
0 | 4373 v45 = v50 - 30; |
4374 v44 = v45 == 0; | |
4375 goto LABEL_91; | |
4376 } | |
2101 | 4377 //v9 = 0; |
4378 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType - 1; | |
4379 v58 = 0; | |
4380 for ( v56 = 0; v56 < (signed int)pObjectList->uNumObjects; ++v56 ) | |
0 | 4381 { |
2101 | 4382 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v56].uObjectID ) |
4383 v58 = v56; | |
0 | 4384 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4385 pSpriteObjects[uLayingItemID].uObjectDescID = v58; |
0 | 4386 if ( !v58 ) |
2101 | 4387 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4388 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4389 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4390 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4391 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
2101 | 4392 sub_43A97E(uLayingItemID, a2); |
4393 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
0 | 4394 v16 = 0; |
4395 else | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4396 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
2101 | 4397 v124 = 8 * uLayingItemID; |
0 | 4398 LOBYTE(v124) = v124 | 2; |
1456 | 4399 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2101 | 4400 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4401 return 0; |
0 | 4402 } |
2101 | 4403 //v9 = 0; |
4404 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
4405 v63 = 0; | |
4406 for ( v61 = 0; v61 < (signed int)pObjectList->uNumObjects; ++v61 ) | |
0 | 4407 { |
2101 | 4408 if ( v59 == pObjectList->pObjects[v61].uObjectID ) |
4409 v63 = v61; | |
0 | 4410 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4411 pSpriteObjects[uLayingItemID].uObjectDescID = v63; |
0 | 4412 if ( !v63 ) |
2101 | 4413 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4414 v64 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4415 v44 = pSpriteObjects[uLayingItemID].spell_skill == 4; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4416 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4417 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4418 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
0 | 4419 v65 = 7; |
4420 if ( v44 ) | |
4421 v65 = 9; | |
4422 if ( v65 > 0 ) | |
4423 { | |
4424 v141 = v65; | |
4425 do | |
4426 { | |
2101 | 4427 v64 += (signed int)stru_5C6E00->uIntegerHalfPi / 2; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4428 pSpriteObjects[uLayingItemID].Create(v64, 0, 1000, 0); |
0 | 4429 --v141; |
4430 } | |
4431 while ( v141 ); | |
4432 } | |
2101 | 4433 SpriteObject::OnInteraction(uLayingItemID); |
4434 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4435 v16 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4436 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4437 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
2101 | 4438 v124 = 8 * uLayingItemID; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4439 LOBYTE(v124) = v124 | 2; |
1456 | 4440 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2101 | 4441 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4442 return 0; |
0 | 4443 } |
2101 | 4444 //v66 = 0; |
4445 if ( PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2) ) | |
0 | 4446 return 1; |
2101 | 4447 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; |
4448 v71 = 0; | |
4449 for ( v69 = 0; v69 < (signed int)pObjectList->uNumObjects; ++v69 ) | |
0 | 4450 { |
2101 | 4451 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v69].uObjectID ) |
4452 v71 = v69; | |
0 | 4453 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4454 pSpriteObjects[uLayingItemID].uObjectDescID = v71; |
0 | 4455 if ( !v71 ) |
2101 | 4456 SpriteObject::OnInteraction(uLayingItemID); |
0 | 4457 v134 = 0; |
2101 | 4458 v72 = uLayingItemID; |
0 | 4459 v132 = 0; |
2101 | 4460 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
4461 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4462 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4463 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2059 | 4464 AttackerInfo.Add(PID(OBJECT_Item,v72), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); |
2101 | 4465 if ( !pSpriteObjects[uLayingItemID].uSoundID ) |
0 | 4466 v78 = 0; |
4467 else | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4468 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4469 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2185 | 4470 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4471 return 0; |
0 | 4472 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4473 if ( pSpriteObjects[uLayingItemID].uType == 4090 ) |
0 | 4474 { |
2101 | 4475 //v9 = 0; |
4476 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
4477 v88 = 0; | |
4478 for ( v86 = 0; v86 < (signed int)pObjectList->uNumObjects; ++v86 ) | |
0 | 4479 { |
2101 | 4480 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v86].uObjectID ) |
4481 v88 = v86; | |
0 | 4482 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4483 pSpriteObjects[uLayingItemID].uObjectDescID = v88; |
0 | 4484 if ( !v88 ) |
2101 | 4485 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4486 v89 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4487 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4488 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4489 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
0 | 4490 v142 = v89; |
4491 v148 = 7; | |
4492 do | |
4493 { | |
4494 pRnd->SetRange(-128, 128); | |
4495 v90 = pRnd->GetInRange(); | |
4496 pRnd->SetRange(5, 500); | |
4497 v91 = pRnd->GetInRange(); | |
4498 v142 += (signed int)stru_5C6E00->uIntegerHalfPi >> 1; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4499 pSpriteObjects[uLayingItemID].Create(v90 + v142, 0, v91, 0); |
0 | 4500 --v148; |
4501 } | |
4502 while ( v148 ); | |
2101 | 4503 SpriteObject::OnInteraction(uLayingItemID); |
4504 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4505 v16 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4506 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4507 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
2101 | 4508 v124 = 8 * uLayingItemID; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4509 LOBYTE(v124) = v124 | 2; |
1456 | 4510 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id-1] + 1; |
2101 | 4511 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4512 return 0; |
0 | 4513 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4514 if ( pSpriteObjects[uLayingItemID].uType == 4092 ) |
0 | 4515 { |
2101 | 4516 //v66 = 0; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4517 pSpriteObjects[uLayingItemID].uType = 4091; |
2101 | 4518 v83 = 0; |
4519 for ( v81 = 0; v81 < (signed int)pObjectList->uNumObjects; ++v81 ) | |
0 | 4520 { |
2101 | 4521 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v81].uObjectID ) |
4522 v83 = v81; | |
0 | 4523 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4524 pSpriteObjects[uLayingItemID].uObjectDescID = v83; |
0 | 4525 if ( !v83 ) |
2101 | 4526 SpriteObject::OnInteraction(uLayingItemID); |
0 | 4527 v134 = 0; |
2102 | 4528 //v72 = uLayingItemID; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4529 v132 = pSpriteObjects[uLayingItemID].field_61; |
2101 | 4530 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
4531 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4532 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4533 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2102 | 4534 AttackerInfo.Add(PID(OBJECT_Item, uLayingItemID), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); |
2101 | 4535 if ( !pSpriteObjects[uLayingItemID].uSoundID ) |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4536 v78 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4537 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4538 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4539 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2102 | 4540 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4541 return 0; |
0 | 4542 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4543 if ( pSpriteObjects[uLayingItemID].uType == 4100 || pSpriteObjects[uLayingItemID].uType == 6010 ) |
2101 | 4544 { |
4545 sub_43A97E(uLayingItemID, a2); | |
4546 ++pSpriteObjects[uLayingItemID].uType; | |
4547 v95 = 0; | |
4548 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4549 { | |
4550 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4551 v95 = v52; | |
4552 } | |
4553 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4554 if ( !v95 ) | |
4555 SpriteObject::OnInteraction(uLayingItemID); | |
4556 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4557 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4558 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4559 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4560 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4561 if ( !v96 ) | |
4562 v97 = 0; | |
4563 else | |
4564 v97 = (signed __int16)v96 + 4; | |
4565 v124 = 8 * uLayingItemID; | |
4566 LOBYTE(v124) = v124 | 2; | |
4567 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4568 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4569 return 0; | |
4570 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4571 v79 = pSpriteObjects[uLayingItemID].uType == 6040; |
0 | 4572 } |
4573 if ( !v79 ) | |
4574 return 0; | |
4575 goto LABEL_172; | |
4576 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4577 if ( pSpriteObjects[uLayingItemID].uType == 3060 ) |
2101 | 4578 { |
4579 sub_43A97E(uLayingItemID, a2); | |
4580 ++pSpriteObjects[uLayingItemID].uType; | |
4581 v95 = 0; | |
4582 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4583 { | |
4584 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4585 v95 = v52; | |
4586 } | |
4587 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4588 if ( !v95 ) | |
4589 SpriteObject::OnInteraction(uLayingItemID); | |
4590 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4591 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4592 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4593 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4594 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4595 if ( !v96 ) | |
4596 v97 = 0; | |
4597 else | |
4598 v97 = (signed __int16)v96 + 4; | |
4599 v124 = 8 * uLayingItemID; | |
4600 LOBYTE(v124) = v124 | 2; | |
4601 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4602 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4603 return 0; | |
4604 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4605 if ( pSpriteObjects[uLayingItemID].uType <= 555 ) |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4606 { |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4607 if ( pSpriteObjects[uLayingItemID].uType == 555 ) |
0 | 4608 { |
2101 | 4609 sub_43A97E(uLayingItemID, a2); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4610 ++pSpriteObjects[uLayingItemID].uType; |
0 | 4611 v18 = 0; |
2101 | 4612 v22 = 0; |
4613 v25 = (char *)&pObjectList->pObjects->uObjectID; | |
4614 for ( v24 = 0; v24 < (signed int)pObjectList->uNumObjects; ++v24 ) | |
0 | 4615 { |
2101 | 4616 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v24].uObjectID ) |
4617 v22 = v24; | |
0 | 4618 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4619 pSpriteObjects[uLayingItemID].uObjectDescID = v22; |
0 | 4620 if ( v22 == v18 ) |
2101 | 4621 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4622 pSpriteObjects[uLayingItemID].vVelocity.z = v18; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4623 pSpriteObjects[uLayingItemID].vVelocity.y = v18; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4624 pSpriteObjects[uLayingItemID].vVelocity.x = v18; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4625 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; |
0 | 4626 } |
4627 else | |
4628 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4629 switch ( pSpriteObjects[uLayingItemID].uType ) |
0 | 4630 { |
4631 case 500: | |
4632 case 505: | |
4633 case 510: | |
4634 case 515: | |
4635 case 520: | |
4636 case 525: | |
4637 case 530: | |
4638 case 535: | |
4639 case 540: | |
2101 | 4640 sub_43A97E(uLayingItemID, a2); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4641 ++pSpriteObjects[uLayingItemID].uType; |
2101 | 4642 v12 = 0; |
4643 for ( v10 = 0; v10 < (signed int)pObjectList->uNumObjects; ++v10 ) | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4644 { |
2101 | 4645 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v10].uObjectID ) |
4646 v12 = v10; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4647 } |
2101 | 4648 pSpriteObjects[uLayingItemID].uObjectDescID = v12; |
4649 if ( !v12 ) | |
4650 SpriteObject::OnInteraction(uLayingItemID); | |
4651 v44 = pSpriteObjects[uLayingItemID].uType == 555; | |
4652 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4653 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4654 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4655 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4656 if ( !v44 ) | |
4657 { | |
4658 v13 = 8 * uLayingItemID; | |
4659 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
4660 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
4661 } | |
4662 return 0; | |
0 | 4663 case 545: |
4664 case 550: | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4665 if ( pSpriteObjects[uLayingItemID].stru_24.uItemID != 405 && pSpriteObjects[uLayingItemID].stru_24.uSpecEnchantmentType != 3 ) |
0 | 4666 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4667 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4668 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4669 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4670 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
2101 | 4671 sub_43A97E(uLayingItemID, a2); |
4672 SpriteObject::OnInteraction(uLayingItemID); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4673 if ( pSpriteObjects[uLayingItemID].uSoundID == 0 ) |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4674 v16 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4675 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4676 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
2101 | 4677 v124 = 8 * uLayingItemID; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4678 LOBYTE(v124) = v124 | 2; |
1996 | 4679 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id] + 1; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4680 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4681 return 0; |
0 | 4682 } |
4683 v18 = 0; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4684 pSpriteObjects[uLayingItemID].uType = 600; |
2101 | 4685 v22 = 0; |
4686 for ( v19 = 0; v19 < (signed int)pObjectList->uNumObjects; ++v19 ) | |
0 | 4687 { |
2101 | 4688 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v19].uObjectID ) |
4689 v22 = v19; | |
0 | 4690 } |
2101 | 4691 pSpriteObjects[uLayingItemID].uObjectDescID = v22; |
4692 if ( !v22 ) | |
4693 SpriteObject::OnInteraction(uLayingItemID); | |
4694 pSpriteObjects[uLayingItemID].vVelocity.z = v18; | |
4695 pSpriteObjects[uLayingItemID].vVelocity.y = v18; | |
4696 pSpriteObjects[uLayingItemID].vVelocity.x = v18; | |
4697 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; | |
0 | 4698 default: |
4699 return 0; | |
4700 } | |
2101 | 4701 v12 = 0; |
4702 for ( v10; v10 < (signed int)v8; ++v10 ) | |
0 | 4703 { |
4704 v11 += 56; | |
2101 | 4705 if ( pSpriteObjects[uLayingItemID].uType != *(short *)v11 ) |
4706 v12 = v10; | |
0 | 4707 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4708 pSpriteObjects[uLayingItemID].uObjectDescID = v12; |
0 | 4709 if ( !v12 ) |
2101 | 4710 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4711 v44 = pSpriteObjects[uLayingItemID].uType == 555; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4712 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4713 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4714 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4715 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
0 | 4716 if ( !v44 ) |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4717 { |
2101 | 4718 v13 = 8 * uLayingItemID; |
4719 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
4720 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4721 return 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4722 } |
0 | 4723 } |
4724 return 0; | |
4725 } | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4726 if ( pSpriteObjects[uLayingItemID].uType > 1100 ) |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4727 { |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4728 v41 = pSpriteObjects[uLayingItemID].uType - 2030; |
0 | 4729 if ( !v41 ) |
4730 goto LABEL_247; | |
4731 v42 = v41 - 30; | |
4732 if ( v42 ) | |
4733 { | |
4734 v43 = v42 - 40; | |
2101 | 4735 if ( v42 == 40 ) |
4736 { | |
4737 if ( PID_TYPE(a2) != 3 ) | |
4738 { | |
4739 //v32 = 0; | |
4740 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
4741 v46 = 0; | |
4742 for ( v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146 ) | |
4743 { | |
4744 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID ) | |
4745 v46 = v146; | |
4746 } | |
4747 pSpriteObjects[uLayingItemID].uObjectDescID = v46; | |
4748 if ( !v46 ) | |
4749 SpriteObject::OnInteraction(uLayingItemID); | |
4750 v100 = pSpriteObjects[uLayingItemID].field_61; | |
4751 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4752 v102 = 8 * uLayingItemID; | |
4753 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
4754 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4755 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4756 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4757 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
4758 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
4759 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
4760 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
4761 v47 = 0; | |
4762 else | |
4763 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
4764 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4765 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
4766 return 0; | |
4767 } | |
4768 return 1; | |
4769 } | |
0 | 4770 v45 = v43 - 910; |
4771 v44 = v45 == 0; | |
4772 LABEL_91: | |
4773 if ( !v44 && v45 != 20 ) | |
4774 return 0; | |
4775 } | |
2101 | 4776 sub_43A97E(uLayingItemID, a2); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4777 ++pSpriteObjects[uLayingItemID].uType; |
2101 | 4778 v95 = 0; |
4779 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
0 | 4780 { |
2101 | 4781 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) |
4782 v95 = v52; | |
0 | 4783 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4784 pSpriteObjects[uLayingItemID].uObjectDescID = v95; |
2101 | 4785 if ( !v95 ) |
4786 SpriteObject::OnInteraction(uLayingItemID); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4787 v96 = pSpriteObjects[uLayingItemID].uSoundID; |
2101 | 4788 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
4789 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4790 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4791 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4792 if ( !v96 ) | |
0 | 4793 v97 = 0; |
4794 else | |
4795 v97 = (signed __int16)v96 + 4; | |
2101 | 4796 v124 = 8 * uLayingItemID; |
4797 LOBYTE(v124) = v124 | 2; | |
4798 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4799 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4800 return 0; | |
4801 } | |
4802 if ( pSpriteObjects[uLayingItemID].uType == 1100 ) | |
4803 { | |
4804 sub_43A97E(uLayingItemID, a2); | |
4805 ++pSpriteObjects[uLayingItemID].uType; | |
4806 v95 = 0; | |
4807 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4808 { | |
4809 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4810 v95 = v52; | |
4811 } | |
4812 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4813 if ( !v95 ) | |
4814 SpriteObject::OnInteraction(uLayingItemID); | |
4815 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4816 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4817 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4818 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4819 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4820 if ( !v96 ) | |
4821 v97 = 0; | |
4822 else | |
4823 v97 = (signed __int16)v96 + 4; | |
4824 v92 = uLayingItemID; | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4825 v124 = 8 * v92; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4826 LOBYTE(v124) = v124 | 2; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4827 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2101 | 4828 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4829 return 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4830 } |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4831 v26 = pSpriteObjects[uLayingItemID].uType - 600; |
2101 | 4832 if ( pSpriteObjects[uLayingItemID].uType == 600 ) |
0 | 4833 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4834 pSpriteObjects[uLayingItemID].uType = 601; |
2101 | 4835 v36 = 0; |
4836 for ( v34 = 0; v34 < (signed int)pObjectList->uNumObjects; ++v34 ) | |
0 | 4837 { |
2101 | 4838 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v34].uObjectID ) |
4839 v36 = v34; | |
0 | 4840 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4841 pSpriteObjects[uLayingItemID].uObjectDescID = v36; |
0 | 4842 if ( !v36 ) |
2101 | 4843 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4844 v37 = pSpriteObjects[uLayingItemID].vPosition.z; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4845 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
2101 | 4846 v38 = 8 * uLayingItemID; |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4847 v39 = pSpriteObjects[uLayingItemID].vPosition.y; |
2101 | 4848 LOBYTE(v38) = PID(OBJECT_Item, uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4849 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4850 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4851 v40 = pSpriteObjects[uLayingItemID].vPosition.x; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4852 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
0 | 4853 v147 = v38; |
2059 | 4854 AttackerInfo.Add(v38, 512, v40, v39, v37, 0, 0); |
2101 | 4855 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) |
4856 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4857 pAudioPlayer->PlaySound(SOUND_8, v147, 0, -1, 0, 0, 0, 0); |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4858 return 0; |
0 | 4859 } |
4860 v27 = v26 - 410; | |
2101 | 4861 if ( v26 == 410 ) |
4862 { | |
4863 sub_43A97E(uLayingItemID, a2); | |
4864 ++pSpriteObjects[uLayingItemID].uType; | |
4865 v95 = 0; | |
4866 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
4867 { | |
4868 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) | |
4869 v95 = v52; | |
4870 } | |
4871 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4872 if ( !v95 ) | |
4873 SpriteObject::OnInteraction(uLayingItemID); | |
4874 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
4875 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4876 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4877 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4878 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4879 if ( !v96 ) | |
4880 v97 = 0; | |
4881 else | |
4882 v97 = (signed __int16)v96 + 4; | |
4883 v124 = 8 * uLayingItemID; | |
4884 LOBYTE(v124) = v124 | 2; | |
4885 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4886 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4887 return 0; | |
4888 } | |
0 | 4889 v28 = v27 - 40; |
4890 if ( !v28 ) | |
2101 | 4891 { |
4892 v95 = 0; | |
4893 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
4894 for ( v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146 ) | |
4895 { | |
4896 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID ) | |
4897 v95 = v146; | |
4898 } | |
4899 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
4900 if ( !v95 ) | |
4901 SpriteObject::OnInteraction(uLayingItemID); | |
4902 v100 = pSpriteObjects[uLayingItemID].field_61; | |
4903 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4904 v102 = 8 * uLayingItemID; | |
4905 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
4906 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4907 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4908 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4909 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
4910 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
4911 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
4912 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
4913 v47 = 0; | |
4914 else | |
4915 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
4916 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4917 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
4918 return 0; | |
4919 } | |
0 | 4920 v29 = v28 - 10; |
4921 if ( v29 ) | |
4922 { | |
4923 if ( v29 != 20 ) | |
4924 return 0; | |
2101 | 4925 if ( PID_TYPE(a2) != 3 ) |
0 | 4926 { |
2101 | 4927 //v32 = 0; |
4928 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
4929 v46 = 0; | |
4930 for ( v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146 ) | |
0 | 4931 { |
2101 | 4932 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID ) |
4933 v46 = v146; | |
0 | 4934 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4935 pSpriteObjects[uLayingItemID].uObjectDescID = v46; |
2101 | 4936 if ( !v46 ) |
4937 SpriteObject::OnInteraction(uLayingItemID); | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4938 v100 = pSpriteObjects[uLayingItemID].field_61; |
2101 | 4939 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
4940 v102 = 8 * uLayingItemID; | |
4941 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
4942 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4943 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4944 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4945 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
4946 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
4947 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
4948 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4949 v47 = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4950 else |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4951 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4952 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; |
2101 | 4953 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4954 return 0; |
0 | 4955 } |
4956 return 1; | |
4957 } | |
4958 LABEL_247: | |
2101 | 4959 //v9 = 0; |
4960 if ( PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2) ) | |
0 | 4961 return 1; |
2101 | 4962 if ( PID_TYPE(a2) != 2 ) |
0 | 4963 { |
2101 | 4964 sub_43A97E(uLayingItemID, a2); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4965 ++pSpriteObjects[uLayingItemID].uType; |
2101 | 4966 v95 = 0; |
4967 for ( v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52 ) | |
0 | 4968 { |
2101 | 4969 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID ) |
4970 v95 = v52; | |
0 | 4971 } |
2101 | 4972 pSpriteObjects[uLayingItemID].uObjectDescID = v95; |
4973 if ( !v95 ) | |
4974 SpriteObject::OnInteraction(uLayingItemID); | |
4975 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
4976 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
4977 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
4978 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
4979 if ( !pSpriteObjects[uLayingItemID].uSoundID ) | |
4980 v97 = 0; | |
4981 else | |
4982 v97 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
4983 v124 = 8 * uLayingItemID; | |
4984 LOBYTE(v124) = v124 | 2; | |
4985 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
4986 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
4987 return 0; | |
0 | 4988 } |
2101 | 4989 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; |
4990 v121 = 0; | |
4991 for ( v119 = 0; v119 < (signed int)pObjectList->uNumObjects; ++v119 ) | |
0 | 4992 { |
2101 | 4993 if ( pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v119].uObjectID ) |
4994 v121 = v119; | |
0 | 4995 } |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4996 pSpriteObjects[uLayingItemID].uObjectDescID = v121; |
0 | 4997 if ( !v121 ) |
2101 | 4998 SpriteObject::OnInteraction(uLayingItemID); |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
4999 pSpriteObjects[uLayingItemID].vVelocity.z = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
5000 pSpriteObjects[uLayingItemID].vVelocity.y = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
5001 pSpriteObjects[uLayingItemID].vVelocity.x = 0; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
5002 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; |
2101 | 5003 v13 = 8 * uLayingItemID; |
5004 LOBYTE(v13) = PID(OBJECT_Item,uLayingItemID); | |
5005 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
0 | 5006 return 0; |
5007 } |