Mercurial > mm7
annotate mm7_2.cpp @ 2435:f1d8eba1a9aa
Merge
author | a.parshin |
---|---|
date | Wed, 23 Jul 2014 22:09:56 +0300 |
parents | c99c99439f6c |
children | c59a8fddb5e8 |
rev | line source |
---|---|
2415 | 1 #define _CRTDBG_MAP_ALLOC |
2 #include <stdlib.h> | |
3 #include <crtdbg.h> | |
4 | |
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
2235
diff
changeset
|
5 #define _CRT_SECURE_NO_WARNINGS |
0 | 6 #include <io.h> |
7 #include <direct.h> | |
2336 | 8 #include "mm7_unsorted_subs.h" |
2350
7c10dfb6d802
Finishing moving all known UI functions to their appropriate headers
Grumpy7
parents:
2341
diff
changeset
|
9 #include "UI\UIPartyCreation.h" |
7c10dfb6d802
Finishing moving all known UI functions to their appropriate headers
Grumpy7
parents:
2341
diff
changeset
|
10 #include "GUIButton.h" |
2336 | 11 |
12 | |
1262 | 13 #include "mm7_data.h" |
1016 | 14 #include "Sprites.h" |
15 | |
16 #include "LightmapBuilder.h" | |
17 #include "DecalBuilder.h" | |
18 #include "ParticleEngine.h" | |
19 #include "Mouse.h" | |
20 #include "Keyboard.h" | |
21 #include "CShow.h" | |
22 #include "GammaControl.h" | |
23 #include "stru6.h" | |
24 | |
25 #include "Vis.h" | |
0 | 26 #include "MapInfo.h" |
27 #include "Game.h" | |
28 #include "GUIWindow.h" | |
29 #include "GUIFont.h" | |
30 #include "Party.h" | |
31 #include "AudioPlayer.h" | |
32 #include "Outdoor.h" | |
1637 | 33 #include "Outdoor_stuff.h" |
0 | 34 #include "Overlays.h" |
35 #include "Arcomage.h" | |
36 #include "LOD.h" | |
2337
d04017f3d2fa
LightsStack_StationaryLight_::AddLight moved to LightStack.cpp
Grumpy7
parents:
2336
diff
changeset
|
37 #include "Log.h" |
0 | 38 #include "Actor.h" |
39 #include "Events.h" | |
40 #include "Viewport.h" | |
2037
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
41 #include "OurMath.h" |
515
cb0ad52d6a26
LayingItem -> SpriteObject (long-waited rename, old name was inaccurate and confused people)
Nomad
parents:
496
diff
changeset
|
42 #include "SpriteObject.h" |
0 | 43 #include "ObjectList.h" |
44 #include "Chest.h" | |
45 #include "PaletteManager.h" | |
46 #include "DecorationList.h" | |
47 #include "SaveLoad.h" | |
48 #include "stru123.h" | |
2386 | 49 #include "MapsLongTimer.h" |
2044 | 50 #include "Timer.h" |
0 | 51 #include "IconFrameTable.h" |
52 #include "GUIProgressBar.h" | |
53 #include "Bink_Smacker.h" | |
54 #include "PlayerFrameTable.h" | |
55 #include "TurnEngine.h" | |
56 #include "FactionTable.h" | |
57 #include "StorylineTextTable.h" | |
58 #include "Random.h" | |
924 | 59 #include "CastSpellInfo.h" |
0 | 60 #include "stru298.h" |
1299 | 61 #include "UI\UIHouses.h" |
189 | 62 #include "texts.h" |
522 | 63 #include "MM7.h" |
1262 | 64 #include "Lights.h" |
1815 | 65 #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
|
66 #include "Level/Decoration.h" |
2052 | 67 #include "LuaVM.h" |
2290 | 68 #include "MMT.h" |
2341 | 69 #include "Registry.h" |
2052 | 70 |
1913 | 71 int __stdcall aWinProc(HWND hWnd, UINT Msg, WPARAM wParam, unsigned int lParam); |
72 int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4); | |
73 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive); | |
74 bool __fastcall Initialize(HINSTANCE hInst, char *pCmdLine); | |
75 | |
76 | |
0 | 77 //----- (004BBA85) -------------------------------------------------------- |
1529 | 78 void CheckBountyRespawnAndAward() |
0 | 79 { |
80 int i; // eax@2 | |
1529 | 81 int rand_monster_id; // edx@3 |
0 | 82 |
83 uDialogueType = 83; | |
84 pDialogueWindow->Release(); | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
85 pDialogueWindow = GUIWindow::Create(0, 0, window->GetWidth(), 350, WINDOW_MainMenu, 0, 0); |
1529 | 86 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34],// "Cancel" |
945 | 87 pIcons_LOD->GetTexture(uExitCancelTextureId), 0); |
832 | 88 pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0); |
1529 | 89 pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_0, 83, 0, "", 0); |
972 | 90 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2); |
747 | 91 dialog_menu_id = HOUSE_DIALOGUE_OTHER; |
1529 | 92 //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
|
93 if ( pParty->PartyTimes.bountyHunting_next_generation_time[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] < (signed __int64)pParty->uTimePlayed ) |
1529 | 94 { |
95 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
|
96 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 | 97 for ( i = rand(); ; i = rand() ) |
98 { | |
1529 | 99 rand_monster_id = i % 258 + 1; |
100 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = rand_monster_id; | |
101 if ( (unsigned __int16)rand_monster_id < 0x73u || (unsigned __int16)rand_monster_id > 0x84u ) | |
0 | 102 { |
1529 | 103 if ( ((unsigned __int16)rand_monster_id < 0xEBu || (unsigned __int16)rand_monster_id > 0xFCu) |
104 && ((unsigned __int16)rand_monster_id < 0x85u || (unsigned __int16)rand_monster_id > 0x96u) | |
105 && ((unsigned __int16)rand_monster_id < 0x97u || (unsigned __int16)rand_monster_id > 0xBAu) | |
106 && ((unsigned __int16)rand_monster_id < 0xC4u || (unsigned __int16)rand_monster_id > 0xC6u) ) | |
0 | 107 break; |
108 } | |
109 } | |
110 } | |
1529 | 111 bountyHunting_monster_id_for_hunting = pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]; |
112 if ( !pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
113 { | |
114 bountyHunting_text = pNPCTopics[351].pText; | |
115 if ( !pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
116 bountyHunting_text = pNPCTopics[353].pText; | |
117 } | |
118 else//get prize | |
119 { | |
120 if ( pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] ) | |
0 | 121 { |
1828
35c1e4ff6ba7
party_finds_gold to Party::PartyFindsGold, cleaned up, moved Level/Decoration.h reference out of Indoor.h
Grumpy7
parents:
1826
diff
changeset
|
122 pParty->PartyFindsGold(100 * pMonsterStats->pInfos[(unsigned __int16)pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel, 0); |
1529 | 123 for ( uint i = 0; i < 4; ++i ) |
124 pParty->pPlayers[i].SetVariable(VAR_Award, 86); | |
125 pParty->uNumBountiesCollected += 100 * pMonsterStats->pInfos[pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel; | |
126 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = 0; | |
127 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false; | |
0 | 128 } |
1529 | 129 bountyHunting_text = pNPCTopics[352].pText; |
130 } | |
0 | 131 } |
132 | |
133 //----- (004BF91E) -------------------------------------------------------- | |
2061 | 134 unsigned int GameOverMenu(void *ecx0) |
0 | 135 { |
1838 | 136 const char *v1; // eax@2 |
0 | 137 unsigned int result; // eax@3 |
1838 | 138 const char *v6; // eax@10 |
139 const char *v7; // edx@10 | |
140 const char *v8; // ecx@12 | |
141 const char *v9; // eax@14 | |
0 | 142 unsigned int v10; // eax@25 |
143 GUIWindow pWindow; // [sp+34h] [bp-9Ch]@1 | |
144 unsigned int v14; // [sp+A4h] [bp-2Ch]@5 | |
145 void *v15; // [sp+A8h] [bp-28h]@1 | |
1838 | 146 const char *pInString; // [sp+ACh] [bp-24h]@5 |
0 | 147 unsigned int v17; // [sp+B0h] [bp-20h]@5 |
148 unsigned int v18; // [sp+B4h] [bp-1Ch]@5 | |
149 unsigned int v19; // [sp+B8h] [bp-18h]@5 | |
150 int v20; // [sp+BCh] [bp-14h]@7 | |
151 GUIFont *pFont; // [sp+C4h] [bp-Ch]@1 | |
152 unsigned __int64 v23; // [sp+C8h] [bp-8h]@5 | |
153 | |
154 v15 = ecx0; | |
155 | |
156 RGBTexture _this; // [sp+Ch] [bp-C4h]@1 | |
157 //RGBTexture::RGBTexture(&this); | |
158 | |
2061 | 159 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_4000; |
0 | 160 bGameoverLoop = 1; |
161 pVideoPlayer->bStopBeforeSchedule = 0; | |
162 pAudioPlayer->StopChannels(-1, -1); | |
163 pRenderer->BeginScene(); | |
164 pRenderer->ClearBlack(); | |
165 pRenderer->EndScene(); | |
166 pRenderer->Present(); | |
165 | 167 pVideoPlayer->pResetflag = 0; |
484 | 168 _449B57_test_bit(pParty->_quest_bits, 99); |
0 | 169 _this.Load("winbg.pcx", 2); |
170 pRenderer->BeginScene(); | |
171 pRenderer->DrawTextureRGB(0, 0, &_this); | |
172 pRenderer->EndScene(); | |
173 free(_this.pPixels); | |
174 _this.pPixels = 0; | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
175 window_SpeakInHouse = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
0 | 176 pWindow.uFrameX = 75; |
177 pWindow.uFrameY = 60; | |
178 pWindow.uFrameWidth = 469; | |
179 pWindow.uFrameHeight = 338; | |
180 pWindow.uFrameZ = 543; | |
181 pWindow.uFrameW = 397; | |
180 | 182 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
|
183 if ( pParty->IsPartyGood() ) |
2133 | 184 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 | 185 else |
186 { | |
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
|
187 result = pParty->IsPartyEvil(); |
0 | 188 if ( !(short)result ) |
189 return result; | |
2133 | 190 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 | 191 } |
192 pInString = v1; | |
193 v23 = pParty->uTimePlayed - 138240; | |
2373 | 194 v19 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24; |
195 v14 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24 / 0x1C / 0xC; | |
196 v18 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24 / 0x1C % 0xC; | |
0 | 197 v17 = v19 % 0x1C; |
198 if ( !v19 ) | |
199 v19 = 1; | |
200 pRenderer->BeginScene(); | |
2133 | 201 pWindow.DrawTitleText(pFont, 1, 0x23, 1, pGlobalTXT_LocalizationStrings[9], 3);//Congratulations! |
0 | 202 v23 = 0i64; |
203 v20 = 0; | |
2133 | 204 for ( uint i = 0; i < 4; i++ ) |
89 | 205 { |
2133 | 206 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[129], pParty->pPlayers[i].pName, pParty->pPlayers[i].GetBaseLevel(), pClassNames[pParty->pPlayers[i].classType]);//%s the Level %u %s |
207 pWindow.DrawTitleText(pFont, 1, i * (LOBYTE(pFont->uFontHeight) - 2) + LOBYTE(pFont->uFontHeight) + 46, 1, pTmpBuf.data(), 3); | |
208 v23 += pParty->pPlayers[i].uExperience;//__PAIR__(*(int *)(i - 4), *(int *)(i - 8)); | |
0 | 209 } |
210 v23 = (signed __int64)v23 / v19; | |
2133 | 211 v6 = FitTextInAWindow(pInString, pFont, &pWindow, 0xC, 0); |
212 pWindow.DrawTitleText(pFont, 1, 5 * (LOBYTE(pFont->uFontHeight) + 11), 1, v6, 0); | |
213 strcpy(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[37]);//Total Time: | |
2373 | 214 |
0 | 215 v7 = pGlobalTXT_LocalizationStrings[56]; |
216 if ( v17 != 1 ) | |
217 v7 = pGlobalTXT_LocalizationStrings[57]; | |
2373 | 218 |
219 v8 = pGlobalTXT_LocalizationStrings[146];//Month, Ìåñÿö | |
0 | 220 if ( v18 != 1 ) |
2373 | 221 v8 = pGlobalTXT_LocalizationStrings[148];//Months,Ìåñÿöåâ |
222 | |
0 | 223 v9 = pGlobalTXT_LocalizationStrings[245]; |
224 if ( v14 != 1 ) | |
225 v9 = pGlobalTXT_LocalizationStrings[132]; | |
2373 | 226 |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
227 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
|
228 strcat(pTmpBuf.data(), pTmpBuf2.data()); |
2386 | 229 pWindow.DrawTitleText(pFont, 1, pWindow.uFrameHeight - 2 * LOBYTE(pFont->uFontHeight) - 5, 1, pTmpBuf.data(), 3); |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
230 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[94], v23); |
2386 | 231 pWindow.DrawTitleText(pFont, 1, pWindow.uFrameHeight, 1, pTmpBuf.data(), 3); |
2061 | 232 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; |
0 | 233 pRenderer->EndScene(); |
234 pRenderer->Present(); | |
2153 | 235 //if ( pRenderer->pRenderD3D ) |
0 | 236 pRenderer->pBeforePresentFunction(); |
2069 | 237 pRenderer->SaveWinnersCertificate("MM7_Win.Pcx"); |
1583 | 238 free(pFont); |
336 | 239 window_SpeakInHouse->Release(); |
240 window_SpeakInHouse = 0; | |
0 | 241 if ( v15 == (void *)2 ) |
242 { | |
243 result = pMessageQueue_50CBD0->uNumMessages; | |
244 } | |
245 else | |
246 { | |
247 LODWORD(v23) = GetTickCount() + 5000; | |
248 while ( (unsigned int)v23 > GetTickCount() ) | |
249 ; | |
1532 | 250 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 251 { |
1532 | 252 if (msg.message == WM_QUIT) |
0 | 253 Game_DeinitializeAndTerminate(0); |
1532 | 254 TranslateMessage(&msg); |
255 DispatchMessage(&msg); | |
0 | 256 } |
257 if ( pMessageQueue_50CBD0->uNumMessages ) | |
258 { | |
259 LOBYTE(v10) = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
260 pMessageQueue_50CBD0->uNumMessages = v10; | |
261 } | |
262 pKeyActionMap->ResetKeys(); | |
263 pKeyActionMap->uLastKeyPressed = 0; | |
264 do | |
265 { | |
1532 | 266 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 267 { |
1532 | 268 if (msg.message == WM_QUIT) |
0 | 269 Game_DeinitializeAndTerminate(0); |
1532 | 270 TranslateMessage(&msg); |
271 DispatchMessage(&msg); | |
0 | 272 } |
273 } | |
274 while ( !pKeyActionMap->uLastKeyPressed ); | |
275 result = pMessageQueue_50CBD0->uNumMessages; | |
276 if ( pMessageQueue_50CBD0->uNumMessages ) | |
277 { | |
278 result = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
279 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
280 } | |
281 } | |
282 if ( v15 ) | |
283 { | |
437 | 284 /*if ( (signed int)result < 40 ) |
285 { | |
286 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_Quit; | |
287 }*/ | |
2402 | 288 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Quit, 1, 0); |
0 | 289 } |
290 else | |
291 { | |
2402 | 292 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_ShowFinalWindow, 1, 0); |
437 | 293 /*if ( (signed int)result < 40 ) |
294 { | |
295 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_C5; | |
0 | 296 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1; |
297 result = 3 * pMessageQueue_50CBD0->uNumMessages + 3; | |
298 *(&pMessageQueue_50CBD0->uNumMessages + result) = 0; | |
299 ++pMessageQueue_50CBD0->uNumMessages; | |
437 | 300 }*/ |
0 | 301 } |
302 bGameoverLoop = 0; | |
303 return result; | |
304 } | |
305 | |
306 //----- (00451007) -------------------------------------------------------- | |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
307 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 | 308 unsigned short *pDst, int dstWidth, int dstHeight, int dstPitch, |
309 int a10, int a11) | |
310 { | |
311 int result; // eax@1 | |
312 float v17; // ST3C_4@12 | |
313 float v18; // ST38_4@12 | |
314 unsigned int v19; // esi@12 | |
315 int v21; // eax@18 | |
316 unsigned int v22; // ecx@25 | |
317 unsigned int v23; // eax@29 | |
1146
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
318 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
|
319 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
|
320 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
|
321 unsigned int widthRatioPlusOne; // [sp+14h] [bp-74h]@218 |
2334 | 322 // int v160; // [sp+3Ch] [bp-4Ch]@13 |
0 | 323 unsigned __int16 *v175; // [sp+4Ch] [bp-3Ch]@13 |
324 unsigned __int16 *v193; // [sp+5Ch] [bp-2Ch]@7 | |
2314 | 325 //signed int v231; // [sp+78h] [bp-10h]@7 |
0 | 326 __int64 v240; // [sp+7Ch] [bp-Ch]@12 |
327 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
|
328 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
|
329 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
|
330 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
|
331 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
|
332 int field_0_bits; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
333 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
|
334 |
1146
b4ade2580ae3
sub_451007_scale_image_bicubic cleanup - some variable renaming, code shuffling
Grumpy7
parents:
1145
diff
changeset
|
335 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
|
336 switch(field0value) |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
337 { |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
338 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
|
339 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
340 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
|
341 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
342 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
|
343 break; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
344 default: |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
345 return field0value; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
346 } |
1144
f544cd6f7168
sub_451007_scale_image_bicubic cleanup - preparations for further condition body extractions
Grumpy7
parents:
1140
diff
changeset
|
347 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
|
348 switch(field20value) |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
349 { |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
350 case 8: field_20_bits = 1; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
351 break; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
352 case 16: field_20_bits = 2; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
353 break; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
354 case 32: field_20_bits = 4; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
355 break; |
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
356 default: |
1144
f544cd6f7168
sub_451007_scale_image_bicubic cleanup - preparations for further condition body extractions
Grumpy7
parents:
1140
diff
changeset
|
357 return field20value; |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
358 } |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
359 |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
360 result = (int)pDst; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
361 v193 = pDst; |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
362 if ( dstHeight <= 0 ) |
1129
9362028fccd1
sub_451007_scale_image_bicubic cleanup - extracting common bodies from conditions
Grumpy7
parents:
1128
diff
changeset
|
363 return result; |
1600
0016b08ab621
stru350::sub_451007_scale_image_bicubic - fixing a memory access bug
Grumpy7
parents:
1546
diff
changeset
|
364 |
2212 | 365 //do |
2314 | 366 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
|
367 { |
2314 | 368 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
|
369 { |
2314 | 370 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
|
371 widthRatio = bankersRounding(a6s); |
2314 | 372 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
|
373 widthRatioPlusOne = bankersRounding(a6t); |
2314 | 374 |
375 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
|
376 heightRatio = bankersRounding(v17); |
2314 | 377 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
|
378 heightRatioPlusOne = bankersRounding(v18); |
2314 | 379 |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
380 v251 = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
381 v19 = (heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
382 v252 = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
383 a6b = 0; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
384 v240 = 0i64; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
385 |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
386 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
|
387 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
|
388 { |
2314 | 389 //int ratioDiff = widthRatioPlusOne - widthRatio; |
390 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
|
391 { |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
392 if(field0value == 32) |
2314 | 393 v21 = _450FB1(((int*)v175)[ratioDiff]); |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
394 else if(field0value == 16) |
2314 | 395 v21 = _450FB1(((_WORD*)v175)[ratioDiff]); |
1901 | 396 else if (field0value == 8) |
2314 | 397 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
|
398 v240 += ((unsigned int)v21 >> 24); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
399 a6b += BYTE2(v21); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
400 v252 += BYTE1(v21); |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
401 v251 += (unsigned __int8)v21; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
402 } |
1901 | 403 if (field0value == 32) |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
404 v175 += 2 * srcPitch; |
1901 | 405 else if (field0value == 16) |
2314 | 406 v175 += srcPitch; |
1901 | 407 else if (field0value == 8) |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
408 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
|
409 } |
2314 | 410 |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
411 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
|
412 if ( v19 ) |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
413 { |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
414 a6b /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
415 v252 /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
416 v251 /= v19; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
417 } |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
418 if ( v22 != 255 ) |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
419 v22 &= 0x7FFFFFFFu; |
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
420 v23 = _450F55(v251 | ((v252 | ((a6b | (v22 << 8)) << 8)) << 8)); |
2420 | 421 *(_DWORD *)v193 = v23; //Invalid memory access |
1149
05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
Grumpy7
parents:
1148
diff
changeset
|
422 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
|
423 } |
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
424 v193 = (unsigned __int16 *)((char *)v193 + field_20_bits * (dstPitch - dstWidth)); |
2212 | 425 //++v231; |
2314 | 426 result = height; |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
427 } |
2212 | 428 //while(v231 < dstHeight); |
1148
ee6bccef32e8
sub_451007_scale_image_bicubic cleanup - final condition collapsing, remaining labels removed, etc
Grumpy7
parents:
1147
diff
changeset
|
429 return result; |
0 | 430 } |
431 | |
432 | |
433 //----- (00450DDE) -------------------------------------------------------- | |
434 stru350 *stru350::_450DDE() | |
435 { | |
436 _450DF1(&stru_4E82A4, &stru_4E82A4); | |
437 return this; | |
438 } | |
439 | |
440 //----- (00450DF1) -------------------------------------------------------- | |
441 bool stru350::_450DF1(const stru355 *p1, const stru355 *p2) | |
442 { | |
443 //stru350 *v3; // esi@1 | |
444 //void *result; // eax@1 | |
445 unsigned int v5; // ecx@2 | |
446 int v6; // edi@2 | |
447 int v7; // edx@2 | |
448 unsigned int v8; // ecx@8 | |
449 int v9; // edi@8 | |
450 int v10; // edx@8 | |
451 int v11; // ecx@12 | |
452 int v12; // edi@12 | |
453 unsigned int v13; // ecx@12 | |
454 int v14; // edx@12 | |
455 int v15; // ecx@16 | |
456 unsigned int v16; // edx@16 | |
457 int v17; // ecx@16 | |
458 int v18; // edi@16 | |
459 char v19; // zf@20 | |
460 unsigned int v20; // ecx@21 | |
461 int v21; // edi@21 | |
462 int v22; // edx@21 | |
463 unsigned int v23; // ecx@27 | |
464 int v24; // edi@27 | |
465 int v25; // edx@27 | |
466 int v26; // ecx@31 | |
467 int v27; // edi@31 | |
468 unsigned int v28; // ecx@31 | |
469 int v29; // edx@31 | |
470 int v30; // ebx@35 | |
471 int v31; // ecx@35 | |
472 int v32; // edi@35 | |
473 int v33; // edx@35 | |
474 unsigned int i; // ecx@35 | |
475 int v35; // ecx@39 | |
476 unsigned int v36; // edx@39 | |
477 int v37; // ecx@39 | |
478 int v38; // ebx@39 | |
479 | |
480 //v3 = this; | |
481 memcpy(&field_0, p1, sizeof(stru355)); | |
482 memcpy(&field_20, p2, sizeof(stru355)); | |
483 //result = memcpy(&v3->field_20, p2, 0x20u); | |
484 //LOBYTE(result) = 1; | |
485 if (field_0.field_4 & 1) | |
486 { | |
487 v5 = field_0.field_1C; | |
488 v6 = 0; | |
489 v7 = 0; | |
490 while ( !(v5 & 1) ) | |
491 { | |
492 ++v6; | |
493 v5 >>= 1; | |
494 } | |
495 do | |
496 { | |
497 v5 >>= 1; | |
498 ++v7; | |
499 } | |
500 while ( v5 & 1 ); | |
501 field_40 = 32 - v7 - v6; | |
502 } | |
503 else | |
504 { | |
505 field_40 = 0; | |
506 } | |
507 v8 = field_0.field_10; | |
508 v9 = 0; | |
509 v10 = 0; | |
510 while ( !(v8 & 1) ) | |
511 { | |
512 ++v9; | |
513 v8 >>= 1; | |
514 } | |
515 do | |
516 { | |
517 v8 >>= 1; | |
518 ++v10; | |
519 } | |
520 while ( v8 & 1 ); | |
521 v11 = 24 - v10 - v9; | |
522 v12 = 0; | |
523 field_48 = v11; | |
524 v13 = field_0.field_14; | |
525 v14 = 0; | |
526 while ( !(v13 & 1) ) | |
527 { | |
528 ++v12; | |
529 v13 >>= 1; | |
530 } | |
531 do | |
532 { | |
533 v13 >>= 1; | |
534 ++v14; | |
535 } | |
536 while ( v13 & 1 ); | |
537 v15 = 16 - v14; | |
538 v16 = field_0.field_18; | |
539 field_50 = v15 - v12; | |
540 v17 = 0; | |
541 v18 = 0; | |
542 while ( !(v16 & 1) ) | |
543 { | |
544 ++v17; | |
545 v16 >>= 1; | |
546 } | |
547 do | |
548 { | |
549 v16 >>= 1; | |
550 ++v18; | |
551 } | |
552 while ( v16 & 1 ); | |
553 v19 = (field_20.field_4 & 1) == 0; | |
554 field_58 = v17 - v18 + 8; | |
555 if ( v19 ) | |
556 { | |
557 field_44 = 0; | |
558 } | |
559 else | |
560 { | |
561 v20 = field_20.field_1C; | |
562 v21 = 0; | |
563 v22 = 0; | |
564 while ( !(v20 & 1) ) | |
565 { | |
566 ++v21; | |
567 v20 >>= 1; | |
568 } | |
569 do | |
570 { | |
571 v20 >>= 1; | |
572 ++v22; | |
573 } | |
574 while ( v20 & 1 ); | |
575 field_44 = 32 - v22 - v21; | |
576 } | |
577 v23 = field_20.field_10; | |
578 v24 = 0; | |
579 v25 = 0; | |
580 while ( !(v23 & 1) ) | |
581 { | |
582 ++v24; | |
583 v23 >>= 1; | |
584 } | |
585 do | |
586 { | |
587 v23 >>= 1; | |
588 ++v25; | |
589 } | |
590 while ( v23 & 1 ); | |
591 v26 = 24 - v25 - v24; | |
592 v27 = 0; | |
593 field_4C = v26; | |
594 v28 = field_20.field_14; | |
595 v29 = 0; | |
596 while ( !(v28 & 1) ) | |
597 { | |
598 ++v27; | |
599 v28 >>= 1; | |
600 } | |
601 do | |
602 { | |
603 v28 >>= 1; | |
604 ++v29; | |
605 } | |
606 while ( v28 & 1 ); | |
607 v30 = 0; | |
608 v31 = 16 - v29 - v27; | |
609 v32 = field_20.field_18; | |
610 field_54 = v31; | |
611 v33 = 0; | |
612 for ( i = v32; !(i & 1); i >>= 1 ) | |
613 ++v30; | |
614 do | |
615 { | |
616 i >>= 1; | |
617 ++v33; | |
618 } | |
619 while ( i & 1 ); | |
620 v35 = 32 - v33; | |
621 v36 = v32; | |
622 field_5C = v35 - v30; | |
623 v37 = 0; | |
624 v38 = 0; | |
625 while ( !(v36 & 1) ) | |
626 { | |
627 ++v37; | |
628 v36 >>= 1; | |
629 } | |
630 do | |
631 { | |
632 v36 >>= 1; | |
633 ++v38; | |
634 } | |
635 while ( v36 & 1 ); | |
636 field_5C = v37 - v38 + 8; | |
637 return true; | |
638 } | |
639 | |
640 //----- (00450F55) -------------------------------------------------------- | |
641 unsigned int stru350::_450F55(int a2) | |
642 { | |
643 int v2 = a2 & stru_4E82A4.field_1C; | |
644 if (field_20.field_4 & 1) | |
645 v2 = (unsigned int)v2 >> this->field_44; | |
646 return v2 & field_20.field_1C | | |
647 field_20.field_10 & ((a2 & (unsigned int)stru_4E82A4.field_10) >> field_4C) | | |
648 field_20.field_14 & ((a2 & (unsigned int)stru_4E82A4.field_14) >> field_54) | | |
649 field_20.field_18 & ((a2 & (unsigned int)stru_4E82A4.field_18) >> field_5C); | |
650 } | |
651 | |
652 //----- (00450FB1) -------------------------------------------------------- | |
653 int stru350::_450FB1(int a2) | |
654 { | |
655 int v2 = 0; | |
656 int v4 = field_0.field_4 & 1; | |
657 if ( v4 ) | |
658 v2 = a2 & field_0.field_1C; | |
659 if ( v4 ) | |
660 v2 <<= field_40; | |
661 return v2 | ((a2 & field_0.field_10) << field_48) | ((a2 & field_0.field_14) << field_50) | ((a2 & field_0.field_18) << field_58); | |
662 } | |
663 | |
664 //----- (00452442) -------------------------------------------------------- | |
1583 | 665 unsigned int __fastcall _452442_color_cvt(unsigned __int16 a1, unsigned __int16 a2, int a3, int a4) |
0 | 666 { |
667 int v4; // ebx@0 | |
668 __int16 v5; // ST14_2@1 | |
669 __int16 v6; // dx@1 | |
670 int v7; // ecx@1 | |
671 __int16 v8; // ST10_2@1 | |
672 int v9; // edi@1 | |
673 unsigned __int16 v10; // dh@1@1 | |
674 int v11; // ebx@1 | |
675 int v12; // ebx@1 | |
676 __int16 a3a; // [sp+1Ch] [bp+8h]@1 | |
677 | |
678 v5 = a2 >> 2; | |
679 v6 = (unsigned __int16)a4 >> 2; | |
680 v8 = a1 >> 2; | |
681 a3a = (unsigned __int16)a3 >> 2; | |
682 LOWORD(v7) = a3a; | |
683 v9 = v7; | |
684 LOWORD(v4) = ((unsigned __int16)a4 >> 2) & 0xE0; | |
685 LOWORD(v7) = a3a & 0xE0; | |
686 LOWORD(v9) = v9 & 0x1C00; | |
687 v11 = v7 + v4; | |
688 LOWORD(v7) = v5 & 0xE0; | |
689 v12 = v7 + v11; | |
690 LOWORD(v7) = v8 & 0xE0; | |
1409
c9e3b93ec570
Highlighted locations with "using uninitialized variable" warning.
Nomad
parents:
1408
diff
changeset
|
691 __debugbreak(); // warning C4700: uninitialized local variable 'v10' used |
848 | 692 return (PID_TYPE(v8) + PID_TYPE(v5) + PID_TYPE(a3a) + PID_TYPE(v6)) | (v7 + v12) | ((v8 & 0x1C00) |
0 | 693 + (v5 & 0x1C00) |
694 + v9 | |
695 + (__PAIR__(v10, (unsigned __int16)a4 >> 2) & 0x1C00)); | |
696 } | |
697 | |
698 //----- (004547E4) -------------------------------------------------------- | |
699 void FactionTable::Initialize() | |
700 { | |
237 | 701 int i; |
702 char* test_string; | |
703 unsigned char c; | |
704 bool break_loop; | |
705 unsigned int temp_str_len; | |
706 char* tmp_pos; | |
707 int decode_step; | |
2334 | 708 // int item_counter; |
237 | 709 |
2369
bddcaf5d5db2
removing non-nullptr conditions before frees, chaning 0 and NULL assignmnets to pointers to nullptr assignments
Grumpy7
parents:
2362
diff
changeset
|
710 free(pHostileTXT_Raw); |
0 | 711 pHostileTXT_Raw = (char *)pEvents_LOD->LoadRaw("hostile.txt", 0); |
712 strtok(pHostileTXT_Raw, "\r"); | |
2101 | 713 for ( i=0; i < 89; ++i ) |
714 { | |
715 test_string = strtok(NULL, "\r") + 1; | |
716 break_loop = false; | |
717 decode_step=0; | |
718 do | |
719 { | |
720 c = *(unsigned char*)test_string; | |
721 temp_str_len = 0; | |
722 while((c!='\t') && (c > 0)) | |
723 { | |
724 ++temp_str_len; | |
725 c = test_string[temp_str_len]; | |
726 } | |
727 tmp_pos=test_string+temp_str_len; | |
728 if (*tmp_pos == 0) | |
729 break_loop = true; | |
730 *tmp_pos = 0; | |
731 if (temp_str_len) | |
732 { | |
733 if ( decode_step >= 1 && decode_step < 90 ) | |
734 relations[decode_step-1][i] = atoi(test_string); | |
735 } | |
736 else | |
737 break_loop = true; | |
738 ++decode_step; | |
739 test_string=tmp_pos+1; | |
740 } | |
741 while ((decode_step < 92) && !break_loop ); | |
742 } | |
2369
bddcaf5d5db2
removing non-nullptr conditions before frees, chaning 0 and NULL assignmnets to pointers to nullptr assignments
Grumpy7
parents:
2362
diff
changeset
|
743 free(pHostileTXT_Raw); |
bddcaf5d5db2
removing non-nullptr conditions before frees, chaning 0 and NULL assignmnets to pointers to nullptr assignments
Grumpy7
parents:
2362
diff
changeset
|
744 pHostileTXT_Raw = nullptr; |
0 | 745 } |
746 | |
747 //----- (004610AA) -------------------------------------------------------- | |
1637 | 748 void __fastcall PrepareToLoadODM(unsigned int bLoading, ODMRenderParams *a2) |
0 | 749 { |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
750 pGameLoadingUI_ProgressBar->Reset(27); |
0 | 751 pSoundList->_4A9D79(0); |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
752 uCurrentlyLoadedLevelType = LEVEL_Outdoor; |
2099 | 753 ODM_LoadAndInitialize(pCurrentMapName, a2); |
754 if ( !bLoading ) | |
0 | 755 TeleportToStartingPoint(uLevel_StartingPointType); |
756 viewparams->_443365(); | |
757 PlayLevelMusic(); | |
758 } | |
759 // 6BE35C: using guessed type int uLevel_StartingPointType; | |
760 | |
761 //----- (00461103) -------------------------------------------------------- | |
1640
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
762 void _461103_load_level_sub() |
0 | 763 { |
764 int v4; // edx@8 | |
765 signed int v6; // esi@14 | |
766 signed int v8; // ecx@16 | |
767 int v12; // esi@25 | |
768 int v13; // eax@26 | |
769 __int16 v14; // ax@41 | |
770 signed int v17; // [sp+14h] [bp-48h]@3 | |
771 signed int v18; // [sp+14h] [bp-48h]@23 | |
772 int v19; // [sp+18h] [bp-44h]@1 | |
773 signed int v20; // [sp+18h] [bp-44h]@14 | |
774 int v21[16]; // [sp+1Ch] [bp-40h]@17 | |
775 | |
598 | 776 GenerateItemsInChest(); |
0 | 777 pGameLoadingUI_ProgressBar->Progress(); |
2101 | 778 pParty->uFlags |= 2; |
0 | 779 pParty->field_7B5_in_arena_quest = 0; |
780 dword_5C6DF8 = 1; | |
291 | 781 pNPCStats->uNewlNPCBufPos = 0; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
782 v19 = pMapStats->GetMapInfo(pCurrentMapName); |
0 | 783 |
784 //v15 = 0; | |
785 for (uint i = 0; i < uNumActors; ++i) | |
786 //if ( (signed int)uNumActors > 0 ) | |
787 { | |
2099 | 788 //Actor* pActor = &pActors[i]; |
0 | 789 //v2 = (char *)&pActors[0].uNPC_ID; |
790 //do | |
791 //{ | |
2101 | 792 //v3 = pActors[i].pMonsterInfo.uID; |
0 | 793 v17 = 0; |
2099 | 794 if ( pActors[i].pMonsterInfo.uID >= 115 && pActors[i].pMonsterInfo.uID <= 186 |
795 || pActors[i].pMonsterInfo.uID >= 232 && pActors[i].pMonsterInfo.uID <= 249 ) | |
0 | 796 v17 = 1; |
797 //v1 = 0; | |
2101 | 798 v4 = (pActors[i].pMonsterInfo.uID - 1) % 3; |
0 | 799 if ( 2 == v4 ) |
800 { | |
2099 | 801 if ( pActors[i].sNPC_ID && pActors[i].sNPC_ID < 5000 ) |
0 | 802 continue; |
803 } | |
804 else | |
805 { | |
806 if ( v4 != 1 ) | |
807 { | |
2099 | 808 if ( v4 == 0 && pActors[i].sNPC_ID == 0 ) |
2101 | 809 pActors[i].sNPC_ID = 0; |
810 continue; | |
0 | 811 } |
812 } | |
2099 | 813 if ( pActors[i].sNPC_ID > 0 && pActors[i].sNPC_ID < 5000 ) |
0 | 814 continue; |
815 if ( v17 ) | |
816 { | |
2101 | 817 pNPCStats->InitializeAdditionalNPCs(&pNPCStats->pAdditionalNPC[pNPCStats->uNewlNPCBufPos], pActors[i].pMonsterInfo.uID, 0, v19); |
291 | 818 v14 = LOWORD(pNPCStats->uNewlNPCBufPos) + 5000; |
819 ++pNPCStats->uNewlNPCBufPos; | |
2099 | 820 pActors[i].sNPC_ID = v14; |
0 | 821 continue; |
822 } | |
2099 | 823 pActors[i].sNPC_ID = 0; |
0 | 824 //++v15; |
825 //v2 += 836; | |
826 //} | |
827 //while ( v15 < (signed int)uNumActors ); | |
828 } | |
829 | |
830 pGameLoadingUI_ProgressBar->Progress(); | |
831 | |
832 //v5 = uNumActors; | |
833 v6 = 0; | |
834 v20 = 0; | |
835 //v16 = v1; | |
836 | |
837 for (uint i = 0; i < uNumActors; ++i) | |
838 { | |
839 //v7 = (char *)&pActors[0].pMonsterInfo; | |
840 //do | |
841 //{ | |
2101 | 842 for ( v8 = 0; v8 < v6; ++v8 ) |
843 { | |
844 if ( v21[v8] == pActors[i].pMonsterInfo.uID - 1 ) | |
845 break; | |
846 } | |
847 | |
848 if ( v8 == v6 ) | |
849 { | |
850 v21[v6++] = pActors[i].pMonsterInfo.uID - 1; | |
851 v20 = v6; | |
852 if ( v6 == 16 ) | |
853 break; | |
854 } | |
855 //++v16; | |
856 //v7 += 836; | |
0 | 857 //} |
858 //while ( v16 < (signed int)v5 ); | |
859 } | |
860 | |
861 pGameLoadingUI_ProgressBar->Progress(); | |
862 | |
2101 | 863 for ( int _v0 = 0; _v0 < v6; ++_v0 ) |
0 | 864 { |
2101 | 865 for ( v18 = 4; v18; --v18 ) |
866 pSoundList->LoadSound(pMonsterList->pMonsters[v21[_v0]].pSoundSampleIDs[4 - v18], 0); | |
0 | 867 v12 = 0; |
868 do | |
2101 | 869 v13 = pSoundList->LoadSound(v12++ + word_4EE088_sound_ids[pMonsterStats->pInfos[v21[_v0] + 1].uSpell1ID], 1); |
0 | 870 while ( v13 ); |
871 } | |
872 //v0 = pGameLoadingUI_ProgressBar; | |
873 //v1 = 0; | |
874 | |
875 pGameLoadingUI_ProgressBar->Progress(); | |
876 | |
2061 | 877 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_ACTORS) |
0 | 878 uNumActors = 0; |
2061 | 879 if ( dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_DECORATIONS) |
0 | 880 uNumLevelDecorations = 0; |
1459 | 881 init_event_triggers(); |
0 | 882 |
883 pGameLoadingUI_ProgressBar->Progress(); | |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
884 |
1640
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
885 pGame->pIndoorCameraD3D->vPartyPos.x = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
886 pGame->pIndoorCameraD3D->vPartyPos.y = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
887 pGame->pIndoorCameraD3D->vPartyPos.z = 100; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
888 pGame->pIndoorCameraD3D->sRotationX = 0; |
afc1c3514dd5
Some common code from ODM and BLV RenderParams moved to IndoorCameraD3D
Nomad
parents:
1638
diff
changeset
|
889 pGame->pIndoorCameraD3D->sRotationY = 0; |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
890 viewparams->bRedrawGameUI = true; |
783 | 891 uLevel_StartingPointType = MapStartPoint_Party; |
0 | 892 pSprites_LOD->_461397(); |
893 pPaletteManager->LockTestAll(); | |
894 if ( pParty->pPickedItem.uItemID != 0 ) | |
895 pMouse->SetCursorBitmapFromItemID(pParty->pPickedItem.uItemID); | |
896 } | |
897 | |
898 //----- (004613C4) -------------------------------------------------------- | |
1459 | 899 void init_event_triggers() |
0 | 900 { |
1459 | 901 uint id = pDecorationList->GetDecorIdByName("Event Trigger"); |
902 | |
903 num_event_triggers = 0; | |
904 for (uint i = 0; i < uNumLevelDecorations; ++i) | |
905 if (pLevelDecorations[i].uDecorationDescID == id) | |
906 event_triggers[num_event_triggers++] = i; | |
0 | 907 } |
908 | |
909 //----- (004627B7) -------------------------------------------------------- | |
762 | 910 void MainMenu_Loop() |
0 | 911 { |
912 GUIButton *pButton; // eax@27 | |
913 unsigned int pControlParam; // ecx@35 | |
2334 | 914 // int v10; // ecx@36 |
915 // int v11; // ecx@37 | |
0 | 916 unsigned int pY; // [sp-18h] [bp-54h]@39 |
917 Texture *pTexture; // [sp-14h] [bp-50h]@39 | |
2334 | 918 // GUIButton *pButton2; // [sp+0h] [bp-3Ch]@27 |
0 | 919 GUIWindow *pWindow; // [sp+4h] [bp-38h]@11 |
920 | |
151 | 921 pCurrentScreen = SCREEN_GAME; |
1038 | 922 |
0 | 923 pGUIWindow2 = 0; |
2216 | 924 pAudioPlayer->StopChannels(-1, -1);//îñòàíîâèòü/ïîäãîòîâèòü êàíàë |
2219 | 925 pMouse->RemoveHoldingItem();//èçáàâèòü êóðñîð îò âåùè |
762 | 926 |
927 pIcons_LOD->_inlined_sub2(); | |
928 | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
929 pWindow_MainMenu = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
1980 | 930 Texture* pNew = pIcons_LOD->LoadTexturePtr("title_new", TEXTURE_16BIT_PALETTE); |
931 Texture* pLoad = pIcons_LOD->LoadTexturePtr("title_load", TEXTURE_16BIT_PALETTE); | |
932 Texture* pCredits = pIcons_LOD->LoadTexturePtr("title_cred", TEXTURE_16BIT_PALETTE); | |
933 Texture* pExit = pIcons_LOD->LoadTexturePtr("title_exit", TEXTURE_16BIT_PALETTE); | |
948 | 934 |
935 pMainMenu_BtnNew = pWindow_MainMenu->CreateButton(495, 172, pNew->uTextureWidth, pNew->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowPartyCreationWnd, 0, 'N', "", pNew, 0); | |
936 pMainMenu_BtnLoad = pWindow_MainMenu->CreateButton(495, 227, pLoad->uTextureWidth, pLoad->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowLoadWindow, 1, 'L', "", pLoad, 0); | |
937 pMainMenu_BtnCredits = pWindow_MainMenu->CreateButton(495, 282, pCredits->uTextureWidth, pCredits->uTextureHeight, 1, 0, UIMSG_ShowCredits, 2, 'C', "", pCredits, 0); | |
938 pMainMenu_BtnExit = pWindow_MainMenu->CreateButton(495, 337, pExit->uTextureWidth, pExit->uTextureHeight, 1, 0, UIMSG_ExitToWindows, 3, 0, "", pExit, 0); | |
939 | |
0 | 940 pTexture_PCX.Release(); |
941 pTexture_PCX.Load("title.pcx", 0); | |
942 SetCurrentMenuID(MENU_MAIN); | |
1984 | 943 SetForegroundWindow(window->GetApiHandle()); |
944 SendMessageW(window->GetApiHandle(), WM_ACTIVATEAPP, 1, 0); | |
0 | 945 while (GetCurrentMenuID() == MENU_MAIN || GetCurrentMenuID() == MENU_SAVELOAD) |
946 { | |
947 POINT pt; | |
948 pMouse->GetCursorPos(&pt); | |
949 pWindow = pWindow_MainMenu; | |
165 | 950 if ( GetCurrentMenuID() == MENU_SAVELOAD) |
0 | 951 { |
151 | 952 if ( pCurrentScreen != SCREEN_LOADGAME ) |
0 | 953 { |
954 pTexture_PCX.Release(); | |
955 pTexture_PCX.Load("lsave640.pcx", 0); | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
956 pGUIWindow2 = GUIWindow::Create(0, 0, window->GetWidth(), window->GetHeight(), WINDOW_MainMenu, 0, 0); |
151 | 957 pCurrentScreen = SCREEN_LOADGAME; |
1033 | 958 LoadUI_Load(0); |
0 | 959 } |
960 pWindow = pGUIWindow_CurrentMenu; | |
961 } | |
962 | |
2061 | 963 for (MSG msg; PeekMessageW(&msg, 0, 0, 0, PM_REMOVE);) |
0 | 964 { |
965 if (msg.message == WM_QUIT) | |
966 Game_DeinitializeAndTerminate(0); | |
967 TranslateMessage(&msg); | |
2061 | 968 DispatchMessageW(&msg); |
0 | 969 } |
2061 | 970 |
971 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE) | |
0 | 972 { |
973 WaitMessage(); | |
2061 | 974 continue; |
0 | 975 } |
2061 | 976 |
0 | 977 pRenderer->BeginScene(); |
978 pRenderer->DrawTextureRGB(0, 0, &pTexture_PCX); | |
1038 | 979 |
165 | 980 GUI_MainMenuMessageProc(); |
0 | 981 GUI_UpdateWindows(); |
1038 | 982 |
165 | 983 if (GetCurrentMenuID() != MENU_MAIN) |
984 { | |
961 | 985 if (GetCurrentMenuID() == MENU_LoadingProcInMainMenu) |
0 | 986 { |
1405
c0b273d33338
RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents:
1404
diff
changeset
|
987 pIcons_LOD->RemoveTexturesPackFromTextureList(); |
0 | 988 pGUIWindow_CurrentMenu->Release(); |
989 pGUIWindow_CurrentMenu = 0; | |
151 | 990 pCurrentScreen = SCREEN_GAME; |
0 | 991 viewparams->bRedrawGameUI = 1; |
992 } | |
993 } | |
994 else | |
995 { | |
1458 | 996 if ( !pModalWindow )// ??? |
0 | 997 { |
998 pButton = pWindow->pControlsHead; | |
999 for ( pButton = pWindow->pControlsHead; pButton; pButton = pButton->pNext ) | |
1000 { | |
1001 if ( pt.x >= (signed int)pButton->uX && pt.x <= (signed int)pButton->uZ | |
1002 && pt.y >= (signed int)pButton->uY && pt.y <= (signed int)pButton->uW | |
1003 && pWindow == pWindow_MainMenu ) | |
1004 { | |
832 | 1005 pControlParam = pButton->msg_param; |
0 | 1006 switch (pControlParam) // ïîäñâåòêà êíîïîê |
1007 { | |
1008 case 0: | |
1009 pTexture = pNew; | |
1010 pY = 172; | |
1011 break; | |
1012 case 1: | |
1013 pTexture = pLoad; | |
1014 pY = 227; | |
1015 break; | |
1016 case 2: | |
1017 pTexture = pCredits; | |
1018 pY = 282; | |
1019 break; | |
1020 case 3: | |
1021 pTexture = pExit; | |
1022 pY = 337; | |
1023 break; | |
1024 } | |
1025 pRenderer->DrawTextureIndexed(495, pY, pTexture); //ïîäñâåòêà êíîïîê | |
1026 } | |
1027 } | |
1028 } | |
1029 } | |
1030 pRenderer->EndScene(); | |
1031 pRenderer->Present(); | |
1032 } | |
970 | 1033 GUI_MainMenuMessageProc(); |
0 | 1034 pRenderer->BeginScene(); |
1035 GUI_UpdateWindows(); | |
1036 pRenderer->EndScene(); | |
1037 pRenderer->Present(); | |
961 | 1038 pTexture_PCX.Release(); |
0 | 1039 if ( pGUIWindow2 ) |
1040 { | |
1041 pGUIWindow2->Release(); | |
1042 pGUIWindow2 = 0; | |
1043 } | |
1044 pWindow_MainMenu->Release(); | |
1405
c0b273d33338
RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents:
1404
diff
changeset
|
1045 pIcons_LOD->RemoveTexturesPackFromTextureList(); |
0 | 1046 } |
1047 | |
1048 //----- (00464479) -------------------------------------------------------- | |
1583 | 1049 void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows() |
0 | 1050 { |
1051 int v0; // esi@9 | |
1052 | |
1053 if (pMouse) | |
1054 pMouse->SetCursorBitmap("MICON1"); | |
1055 | |
1056 pPaletteManager->ResetNonLocked(); | |
1057 pBitmaps_LOD->ReleaseAll2(); | |
1058 pSprites_LOD->DeleteSomeOtherSprites(); | |
1059 pIcons_LOD->ReleaseAll2(); | |
2152 | 1060 |
0 | 1061 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
1062 pIndoor->Release(); | |
1063 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) | |
1583 | 1064 pOutdoor->Release(); |
0 | 1065 |
1066 pAudioPlayer->StopChannels(-1, -1); | |
1067 pSoundList->_4A9D79(0); | |
1068 uCurrentlyLoadedLevelType = LEVEL_null; | |
1069 pSpriteFrameTable->ResetSomeSpriteFlags(); | |
1070 v0 = uNumVisibleWindows; | |
349 | 1071 pParty->armageddon_timer = 0; |
0 | 1072 while ( v0 > 0 ) |
1073 pWindowList[pVisibleWindowsIdxs[v0--] - 1].Release(); | |
1074 } | |
1075 | |
1076 //----- (004646F0) -------------------------------------------------------- | |
1458 | 1077 void PrepareWorld(unsigned int _0_box_loading_1_fullscreen) |
0 | 1078 { |
2154 | 1079 //if ( pRenderer->pRenderD3D ) |
0 | 1080 pGame->pVisInstance->_4C1A02(); |
1081 pEventTimer->Pause(); | |
1082 pMiscTimer->Pause(); | |
1083 pParty->uFlags = 2; | |
1517 | 1084 CastSpellInfoHelpers::_427D48(); |
0 | 1085 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); |
1458 | 1086 DoPrepareWorld(0, (_0_box_loading_1_fullscreen == 0) + 1); |
0 | 1087 pMiscTimer->Resume(); |
1088 pEventTimer->Resume(); | |
1089 } | |
1090 | |
1091 //----- (00464761) -------------------------------------------------------- | |
1583 | 1092 void Game_DeinitializeAndTerminate(int exitCode) |
0 | 1093 { |
1586 | 1094 SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS); |
0 | 1095 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); |
1096 pGame->Deinitialize(); | |
2155 | 1097 pRenderer->Release(); |
1802 | 1098 delete window; |
1099 //if ( !DestroyWindow(hWnd) ) | |
1100 // GetLastError(); | |
1583 | 1101 exit(exitCode); |
0 | 1102 } |
1103 | |
1104 //----- (004647AB) -------------------------------------------------------- | |
762 | 1105 void FinalInitialization() |
0 | 1106 { |
1107 pViewport->SetScreen(viewparams->uSomeX, viewparams->uSomeY, viewparams->uSomeZ, viewparams->uSomeW); | |
2151 | 1108 pViewport->SetFOV(flt_6BE3A0 * 65536.0f); |
0 | 1109 |
1638
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
1110 //pIndoorCamera = new IndoorCamera; |
ccde94f02b75
class IndoorCamera split into BLVRenderParams and ODMRenderParams
Nomad
parents:
1637
diff
changeset
|
1111 //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
|
1112 // viewparams->uScreen_BttmR_Y - viewparams->uScreen_topL_Y + 1); |
0 | 1113 |
1114 InitializeTurnBasedAnimations(&stru_50C198); | |
762 | 1115 pBitmaps_LOD->_inlined_sub1(); |
1116 pSprites_LOD->_inlined_sub1(); | |
1117 pIcons_LOD->_inlined_sub1(); | |
0 | 1118 } |
1119 // 6BE3A0: using guessed type float flt_6BE3A0; | |
1120 | |
2331
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1121 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1122 //----- (0042F3D6) -------------------------------------------------------- |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1123 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
|
1124 { |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1125 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
|
1126 { |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1127 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
|
1128 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
|
1129 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
|
1130 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
|
1131 } |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1132 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1133 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
|
1134 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
|
1135 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
|
1136 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
|
1137 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
|
1138 |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1139 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
|
1140 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
|
1141 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
|
1142 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
|
1143 } |
9551756f46c4
Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
2314
diff
changeset
|
1144 |
0 | 1145 //----- (00464866) -------------------------------------------------------- |
1458 | 1146 void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box) |
0 | 1147 { |
1458 | 1148 //int v2; // esi@1 |
0 | 1149 char *v3; // eax@1 |
1150 //char *v4; // eax@1 | |
1151 unsigned int v5; // eax@3 | |
1152 //size_t v6; // ecx@10 | |
1153 //char *v7; // eax@11 | |
1154 char Str1[20]; // [sp+Ch] [bp-18h]@1 | |
1155 unsigned int v9; // [sp+20h] [bp-4h]@1 | |
1156 | |
1157 v9 = bLoading; | |
1158 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); | |
1159 pDecalBuilder->Reset(0); | |
1458 | 1160 pGameLoadingUI_ProgressBar->Initialize(_1_fullscreen_loading_2_box == 1 ? GUIProgressBar::TYPE_Fullscreen : |
1161 GUIProgressBar::TYPE_Box); | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1162 strcpy(Str1, pCurrentMapName); |
0 | 1163 v3 = strtok(Str1, "."); |
1164 strcpy(Str1, v3); | |
1165 Level_LoadEvtAndStr(Str1); | |
1166 LoadLevel_InitializeLevelEvt(); | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1167 strcpy(Str1, pCurrentMapName); |
0 | 1168 _strrev(Str1); |
1169 strtok(Str1, "."); | |
1170 _strrev(Str1); | |
1171 | |
1172 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
|
1173 pSpriteObjects[i].uObjectDescID = 0; |
0 | 1174 |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1175 v5 = pMapStats->GetMapInfo(pCurrentMapName); |
1541 | 1176 bUnderwater = false; |
0 | 1177 uLevelMapStatsID = v5; |
1178 pGame->uFlags2 &= 0xFFFFFFF7u; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1179 if ( !_stricmp(pCurrentMapName, "out15.odm") ) |
0 | 1180 { |
1541 | 1181 bUnderwater = true; |
1583 | 1182 pGame->uFlags2 |= GAME_FLAGS_2_ALTER_GRAVITY; |
0 | 1183 } |
831 | 1184 pParty->floor_face_pid = 0; |
1104 | 1185 if ( _stricmp(Str1, "blv") ) |
0 | 1186 PrepareToLoadODM(v9, 0); |
1187 else | |
1188 PrepareToLoadBLV(v9); | |
1189 pAudioPlayer->SetMapEAX(); | |
1459 | 1190 _461103_load_level_sub(); |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1191 if ( !_stricmp(pCurrentMapName, "d11.blv") || !_stricmp(pCurrentMapName, "d10.blv") ) |
0 | 1192 { |
1583 | 1193 //spawning grounds & walls of mist - no loot & exp from monsters |
0 | 1194 |
1195 for (uint i = 0; i < uNumActors; ++i) | |
1196 { | |
1197 pActors[i].pMonsterInfo.uTreasureType = 0; | |
1198 pActors[i].pMonsterInfo.uTreasureDiceRolls = 0; | |
1199 pActors[i].pMonsterInfo.uExp = 0; | |
1200 } | |
1201 } | |
1202 bDialogueUI_InitializeActor_NPC_ID = 0; | |
1203 OnMapLoad(); | |
1204 pGameLoadingUI_ProgressBar->Progress(); | |
1459 | 1205 memset(&pRenderer->pBillboardRenderListD3D, 0, sizeof(pRenderer->pBillboardRenderListD3D)); |
0 | 1206 pGameLoadingUI_ProgressBar->Release(); |
1207 _flushall(); | |
1208 } | |
1209 | |
1210 | |
1211 //----- (00464E17) -------------------------------------------------------- | |
1212 bool __fastcall CheckMM7CD(char c) | |
1213 { | |
2425 | 1214 char DstBuf[256] = {0}; |
1215 char strCommand[256] = {0}; // [sp+10Ch] [bp-118h]@1 | |
1216 char Filename[20] = {0}; // [sp+20Ch] [bp-18h]@1 | |
0 | 1217 |
1218 wchar_t pMagicPath[1024]; | |
1165
29a8defbad9e
temporary _CRT_SECURE_NO_WARNINGS to remove some warnings
Grumpy7
parents:
1150
diff
changeset
|
1219 swprintf(pMagicPath, wcslen(L"%C:\\anims\\magic7.vid"), L"%C:\\anims\\magic7.vid", c); |
0 | 1220 if (GetFileAttributesW(pMagicPath) == -1) |
1221 return false; | |
1222 | |
1223 wsprintfA(strCommand, "open %c: type cdaudio alias CD", c); | |
2425 | 1224 if (!mciSendStringA(strCommand, DstBuf, 255, 0))//Uninitialized memory access |
1225 | |
0 | 1226 { |
1227 wsprintfA(strCommand, "info CD UPC wait"); | |
2425 | 1228 mciSendStringA(strCommand, DstBuf, 255, 0); |
0 | 1229 wsprintfA(strCommand, "close CD"); |
2425 | 1230 mciSendStringA(strCommand, DstBuf, 255, 0); |
0 | 1231 } |
1232 | |
1233 memcpy(Filename, "X:\\anims\\magic7.vid", sizeof(Filename)); | |
1234 *Filename = c; | |
1235 | |
1980 | 1236 FILE* f = fopen(Filename, "rb"); |
0 | 1237 if (!f) |
1238 return false; | |
1239 | |
1240 if (!fseek(f, 0, SEEK_END)) | |
1241 { | |
1242 if (!fseek(f, -100, SEEK_CUR)) | |
2425 | 1243 fread(DstBuf, 1, 0x64u, f); |
0 | 1244 |
1245 fclose(f); | |
1246 return true; | |
1247 } | |
1248 fclose(f); | |
1249 return false; | |
1250 } | |
1251 | |
1252 //----- (00464F1B) -------------------------------------------------------- | |
1253 signed int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4) | |
1254 { | |
1255 char v4; // zf@3 | |
1256 int v6; // eax@10 | |
1257 int v7; // eax@11 | |
1258 int v8; // eax@12 | |
1259 int v9; // eax@13 | |
1260 BOOL (__stdcall *v10)(HWND, int, LPCSTR); // edi@15 | |
1261 const CHAR *v11; // [sp-Ch] [bp-Ch]@15 | |
1262 INT_PTR v12; // [sp-4h] [bp-4h]@5 | |
1263 | |
1264 if ( a2 == 272 ) | |
1265 { | |
1266 hInsertCDWindow = hDlg; | |
1267 v6 = (GetUserDefaultLangID() & 0x3FF) - 7; | |
1268 if ( v6 ) | |
1269 { | |
1270 v7 = v6 - 3; | |
1271 if ( v7 ) | |
1272 { | |
1273 v8 = v7 - 2; | |
1274 if ( v8 ) | |
1275 { | |
1276 v9 = v8 - 4; | |
1277 if ( v9 ) | |
1278 { | |
1279 if ( v9 != 5 ) | |
1280 return 0; | |
1281 SetWindowTextA(hDlg, "Wloz CD-ROM numer 2"); | |
1282 v10 = SetDlgItemTextA; | |
1283 SetDlgItemTextA(hDlg, 1010, "Wloz CD-ROM numer 2 Might and Magic® VII."); | |
1284 v11 = "Odwolaj"; | |
1285 } | |
1286 else | |
1287 { | |
1288 SetWindowTextA(hDlg, "Inserire il secondo CD"); | |
1289 v10 = SetDlgItemTextA; | |
1290 SetDlgItemTextA(hDlg, 1010, "Inserire il secondo CD di Might and Magic® VII."); | |
1291 v11 = "Annulla"; | |
1292 } | |
1293 } | |
1294 else | |
1295 { | |
1296 SetWindowTextA(hDlg, "Insérez le CD 2"); | |
1297 v10 = SetDlgItemTextA; | |
1298 SetDlgItemTextA(hDlg, 1010, "Insérez Might & Magic® VII CD 2."); | |
1299 v11 = "Supprimer"; | |
1300 } | |
1301 } | |
1302 else | |
1303 { | |
1304 SetWindowTextA(hDlg, "Por favor, inserte disco 2"); | |
1305 v10 = SetDlgItemTextA; | |
1306 SetDlgItemTextA(hDlg, 1010, "Por favor, inserte disco 2 de Might & Magic® VII."); | |
1307 v11 = "Cancelar"; | |
1308 } | |
1309 } | |
1310 else | |
1311 { | |
1312 SetWindowTextA(hDlg, "Bitte CD 2 einlegen"); | |
1313 v10 = SetDlgItemTextA; | |
1314 SetDlgItemTextA(hDlg, 1010, "Bitte CD 2 von Might and Magic® VII einlegen."); | |
1315 v11 = "Abbrechen"; | |
1316 } | |
1317 v10(hDlg, 2, v11); | |
1318 return 0; | |
1319 } | |
1320 if ( a2 == 273 ) | |
1321 { | |
1322 if ( a3 == 2 ) | |
1323 { | |
1324 v12 = 0; | |
1325 EndDialog(hDlg, v12); | |
1326 return 1; | |
1327 } | |
1328 v4 = a3 == 1; | |
1329 } | |
1330 else | |
1331 { | |
1332 v4 = a2 == 1025; | |
1333 } | |
1334 if ( v4 ) | |
1335 { | |
1336 v12 = 1; | |
1416 | 1337 EndDialog(hDlg, v12); |
1338 return 1; | |
0 | 1339 } |
1340 return 0; | |
1341 } | |
1342 | |
1343 //----- (00465061) -------------------------------------------------------- | |
1344 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive) | |
1345 { | |
1346 char drive[4] = {'X', ':', '\\', 0}; | |
1347 | |
1348 bool bGotCDFromRegistry = false; | |
1349 | |
1350 HKEY hSoftware = nullptr, | |
1351 hNWC = nullptr, | |
1352 hMM7 = nullptr, | |
1353 hVersion = nullptr; | |
1354 if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hSoftware)) | |
1355 { | |
1356 if (!RegOpenKeyExA(hSoftware, "New World Computing", 0, 0x2001Fu, &hNWC)) | |
1357 { | |
1358 if (!RegOpenKeyExA(hNWC, "Might and Magic VII", 0, 0x2001Fu, &hMM7)) | |
1359 { | |
1360 if (!RegOpenKeyExA(hMM7, "1.0", 0, 0x2001Fu, &hVersion)) | |
1361 { | |
1362 DWORD cbData = 3; | |
1363 if (!RegQueryValueExA(hVersion, "CDDrive", 0, 0, (BYTE *)drive, &cbData)) | |
1364 bGotCDFromRegistry = true; | |
1365 } | |
1366 RegCloseKey(hVersion); | |
1367 } | |
1368 RegCloseKey(hMM7); | |
1369 } | |
1370 RegCloseKey(hNWC); | |
1371 } | |
1372 RegCloseKey(hSoftware); | |
1373 | |
1374 if (bGotCDFromRegistry) | |
1375 if (CheckMM7CD(*drive)) | |
1376 { | |
1377 cMM7GameCDDriveLetter = *drive; | |
1378 return true; | |
1379 } | |
1380 | |
1381 while (true) | |
1382 { | |
1383 for (uint i = 0; i < 26; ++i) | |
1384 { | |
1385 drive[0] = 'A' + i; | |
1386 | |
1387 if (GetDriveTypeA(drive) == DRIVE_CDROM) | |
1388 if (CheckMM7CD(*drive)) | |
1389 { | |
1390 cMM7GameCDDriveLetter = *drive; | |
1391 WriteWindowsRegistryString("CDDrive", drive); | |
1392 return true; | |
1393 } | |
1394 } | |
1395 | |
1802 | 1396 if (DialogBoxParamA(GetModuleHandleW(nullptr), "InsertCD", hWnd, (DLGPROC)InsertMM7CDDialogFunc, 0)) |
0 | 1397 continue; |
1398 return false; | |
1399 } | |
1400 } | |
1401 | |
1402 //----- (004651F4) -------------------------------------------------------- | |
1655 | 1403 bool MM7_Initialize(int game_width, int game_height) |
0 | 1404 { |
1405 wchar_t pCurrentDir[1024]; | |
1406 _wgetcwd(pCurrentDir, 1024); | |
1407 | |
1408 wchar_t pMM6IniFile[1024]; | |
293 | 1409 wsprintfW(pMM6IniFile, L"%s\\mm6.ini", pCurrentDir); |
0 | 1410 |
1411 bCanLoadFromCD = GetPrivateProfileIntW(L"settings", L"use_cd", 1, pMM6IniFile); | |
1412 if (bNoCD) | |
1413 bCanLoadFromCD = false; | |
1414 if (bCanLoadFromCD) | |
1415 { | |
2151 | 1416 Log::Warning(L"Checking for CD..."); |
1802 | 1417 if (!FindMM7CD(nullptr, &cMM7GameCDDriveLetter)) |
0 | 1418 return false; |
2394 | 1419 Log::Warning(L"...done."); |
0 | 1420 } |
1421 | |
1422 | |
1423 srand(GetTickCount()); | |
1802 | 1424 |
2423 | 1425 pEventTimer = Timer::Create(); |
1426 pEventTimer->Initialize(); | |
1802 | 1427 window = OSWindow::Create(L"Might and Magic® Trilogy", game_width, game_height); |
0 | 1428 |
1429 pRenderer = Render::Create(); | |
1430 if (!pRenderer) | |
1431 { | |
1432 Log::Warning(L"Render creation failed"); | |
1433 return false; | |
1434 } | |
1435 else | |
1436 { | |
2069 | 1437 //bool bWindowMode = ReadWindowsRegistryInt("startinwindow", false); |
1802 | 1438 //uint uDefaultDevice = ReadWindowsRegistryInt("D3D Device", 1); |
0 | 1439 bool bColoredLights = ReadWindowsRegistryInt("Colored Lights", false); |
1440 uint uLevelOfDetail = ReadWindowsRegistryInt("Detail Level", 1); | |
1441 uint bTinting = ReadWindowsRegistryInt("Tinting", 1) != 0; | |
1442 | |
2069 | 1443 if (!pRenderer->Initialize(window, bColoredLights, uLevelOfDetail, bTinting)) |
0 | 1444 { |
1445 Log::Warning(L"Render failed to initialize"); | |
1446 return false; | |
1447 } | |
1448 } | |
492 | 1449 |
351 | 1450 game_starting_year = 1168; |
0 | 1451 |
1452 pParty = new Party; | |
147 | 1453 memset(&pParty->pHirelings, 0, sizeof(pParty->pHirelings)); |
0 | 1454 pParty->uWalkSpeed = GetPrivateProfileIntW(L"debug", L"walkspeed", 384, pMM6IniFile); |
1455 pParty->uDefaultEyelevel = GetPrivateProfileIntW(L"party", L"eyelevel", 160, pMM6IniFile); | |
1456 pParty->sEyelevel = pParty->uDefaultEyelevel; | |
1457 pParty->uDefaultPartyHeight = GetPrivateProfileIntW(L"party", L"height", 192, pMM6IniFile); | |
1458 pParty->uPartyHeight = pParty->uDefaultPartyHeight; | |
2151 | 1459 |
0 | 1460 MM6_Initialize(pMM6IniFile); |
1461 | |
1462 pKeyActionMap = new KeyboardActionMapping; | |
1463 | |
2415 | 1464 // _CrtDumpMemoryLeaks(); |
0 | 1465 OnTimer(1); |
1466 GameUI_StatusBar_UpdateTimedString(1); | |
1467 pGame = Game::Create(); | |
1468 pMouse = pGame->pMouseInstance; | |
1655 | 1469 |
0 | 1470 |
1471 pIcons_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1472 if (!pIcons_LOD->Load("data\\icons.lod", "icons")) |
0 | 1473 { |
2151 | 1474 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.", |
1475 L"Files Missing", MB_ICONEXCLAMATION); | |
0 | 1476 return false; |
1477 } | |
1478 pIcons_LOD->dword_011BA4 = 0; | |
1479 | |
1480 pEvents_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1481 if (!pEvents_LOD->Load("data\\events.lod", "icons")) |
0 | 1482 { |
2151 | 1483 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.", |
1484 L"Files Missing", MB_ICONEXCLAMATION); | |
0 | 1485 return false; |
1486 } | |
1487 | |
1488 InitializeGameText(); | |
1489 | |
1490 pBitmaps_LOD = new LODFile_IconsBitmaps; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1491 if (!pBitmaps_LOD->Load("data\\bitmaps.lod", "bitmaps")) |
0 | 1492 { |
2151 | 1493 MessageBoxA(nullptr, pGlobalTXT_LocalizationStrings[63], |
1494 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION); | |
0 | 1495 return false; |
1496 } | |
1497 | |
1498 pSprites_LOD = new LODFile_Sprites; | |
2151 | 1499 if (!pSprites_LOD->LoadSprites("data\\sprites.lod")) |
0 | 1500 { |
1501 MessageBoxA(nullptr, | |
1502 pGlobalTXT_LocalizationStrings[63], | |
1503 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION); | |
1504 return false; | |
1505 } | |
1506 | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1507 |
1543 | 1508 #if 0 |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1509 if (_access("../MM_VI/data/icons.lod", 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1510 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1511 pIcons_LOD_mm6 = new LODFile_IconsBitmaps; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1512 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
|
1513 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1514 delete pIcons_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1515 pIcons_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1516 Log::Warning(L"Unable to load mm6:icons.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1517 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1518 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1519 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1520 Log::Warning(L"Unable to find mm6:icons.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1521 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1522 if (_access("../MM_VI/data/bitmaps.lod", 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1523 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1524 pBitmaps_LOD_mm6 = new LODFile_IconsBitmaps; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1525 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
|
1526 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1527 delete pBitmaps_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1528 pBitmaps_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1529 Log::Warning(L"Unable to load mm6:bitmaps.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1530 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1531 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1532 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1533 Log::Warning(L"Unable to find mm6:bitmaps.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1534 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1535 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
|
1536 : "../MM_VI/data/sprites.lod"; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1537 if (_access(mm6_sprite_container_name, 0) == 0) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1538 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1539 pSprites_LOD_mm6 = new LODFile_Sprites; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1540 if (!pSprites_LOD_mm6->LoadSprites(mm6_sprite_container_name)) |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1541 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1542 delete pSprites_LOD_mm6; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1543 pSprites_LOD_mm6 = nullptr; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1544 Log::Warning(L"Unable to load mm6:sprites.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1545 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1546 } |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1547 else |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1548 Log::Warning(L"Unable to find mm6:sprites.lod"); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1549 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1550 |
1541 | 1551 if (_access("../mm8/data/icons.lod", 0) == 0) |
1552 { | |
1553 pIcons_LOD_mm8 = new LODFile_IconsBitmaps; | |
1554 if (!pIcons_LOD_mm8->Load("../mm8/data/icons.lod", "icons")) | |
1555 { | |
1556 delete pIcons_LOD_mm8; | |
1557 pIcons_LOD_mm8 = nullptr; | |
1558 Log::Warning(L"Unable to load mm8:icons.lod"); | |
1559 } | |
0 | 1560 } |
1561 else | |
1541 | 1562 Log::Warning(L"Unable to find mm8:icons.lod"); |
1563 | |
1564 | |
1565 if (_access("../mm8/data/bitmaps.lod", 0) == 0) | |
1566 { | |
1567 pBitmaps_LOD_mm8 = new LODFile_IconsBitmaps; | |
1568 if (!pBitmaps_LOD_mm8->Load("../mm8/data/bitmaps.lod", "bitmaps")) | |
1569 { | |
1570 delete pBitmaps_LOD_mm8; | |
1571 pBitmaps_LOD_mm8 = nullptr; | |
1572 Log::Warning(L"Unable to load mm8:bitmaps.lod"); | |
1573 } | |
1574 } | |
1575 else | |
1576 Log::Warning(L"Unable to find mm8:bitmaps.lod"); | |
1577 | |
1578 | |
1579 if (_access("../mm8/data/sprites.lod", 0) == 0) | |
1580 { | |
1581 pSprites_LOD_mm8 = new LODFile_Sprites; | |
1582 if (!pSprites_LOD_mm8->LoadSprites("../mm8/data/sprites.lod")) | |
1583 { | |
1584 delete pSprites_LOD_mm8; | |
1585 pSprites_LOD_mm8 = nullptr; | |
1586 Log::Warning(L"Unable to load mm8:sprites.lod"); | |
1587 } | |
1588 } | |
1589 else | |
1590 Log::Warning(L"Unable to find mm8:sprites.lod"); | |
1543 | 1591 #endif |
1541 | 1592 |
0 | 1593 { |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1594 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
|
1595 *sft_mm8 = nullptr; |
2151 | 1596 void *sft_mm7 = pEvents_LOD->LoadRaw("dsft.bin", 1); |
0 | 1597 pSpriteFrameTable = new SpriteFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1598 pSpriteFrameTable->FromFile(sft_mm6, sft_mm7, sft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1599 free(sft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1600 free(sft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1601 free(sft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1602 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1603 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
|
1604 *tft_mm8 = nullptr; |
2151 | 1605 void *tft_mm7 = pEvents_LOD->LoadRaw("dtft.bin", 1); |
0 | 1606 pTextureFrameTable = new TextureFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1607 pTextureFrameTable->FromFile(tft_mm6, tft_mm7, tft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1608 free(tft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1609 free(tft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1610 free(tft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1611 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1612 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
|
1613 *tiles_mm8 = nullptr; |
2151 | 1614 void *tiles_mm7 = pEvents_LOD->LoadRaw("dtile.bin", 1); |
0 | 1615 pTileTable = new TileTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1616 pTileTable->FromFile(tiles_mm6, tiles_mm7, tiles_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1617 free(tiles_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1618 free(tiles_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1619 free(tiles_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1620 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1621 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
|
1622 *pft_mm8 = nullptr; |
2151 | 1623 void *pft_mm7 = pEvents_LOD->LoadRaw("dpft.bin", 1); |
0 | 1624 pPlayerFrameTable = new PlayerFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1625 pPlayerFrameTable->FromFile(pft_mm6, pft_mm7, pft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1626 free(pft_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1627 free(pft_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1628 free(pft_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1629 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1630 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
|
1631 *ift_mm8 = nullptr; |
2151 | 1632 void *ift_mm7 = pEvents_LOD->LoadRaw("dift.bin", 1); |
0 | 1633 pIconsFrameTable = new IconFrameTable; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1634 pIconsFrameTable->FromFile(ift_mm6, ift_mm7, ift_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1635 free(ift_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1636 free(ift_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1637 free(ift_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1638 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1639 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
|
1640 *decs_mm8 = nullptr; |
2151 | 1641 void *decs_mm7 = pEvents_LOD->LoadRaw("ddeclist.bin", 1); |
0 | 1642 pDecorationList = new DecorationList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1643 pDecorationList->FromFile(decs_mm6, decs_mm7, decs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1644 free(decs_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1645 free(decs_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1646 free(decs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1647 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1648 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
|
1649 *objs_mm8 = nullptr; |
2151 | 1650 void *objs_mm7 = pEvents_LOD->LoadRaw("dobjlist.bin", 1); |
0 | 1651 pObjectList = new ObjectList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1652 pObjectList->FromFile(objs_mm6, objs_mm7, objs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1653 free(objs_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1654 free(objs_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1655 free(objs_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1656 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1657 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
|
1658 *mons_mm8 = nullptr; |
2151 | 1659 void *mons_mm7 = pEvents_LOD->LoadRaw("dmonlist.bin", 1); |
0 | 1660 pMonsterList = new MonsterList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1661 pMonsterList->FromFile(mons_mm6, mons_mm7, mons_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1662 free(mons_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1663 free(mons_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1664 free(mons_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1665 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1666 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
|
1667 *chests_mm8 = nullptr; |
2151 | 1668 void *chests_mm7 = pEvents_LOD->LoadRaw("dchest.bin", 1); |
0 | 1669 pChestList = new ChestList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1670 pChestList->FromFile(chests_mm6, chests_mm7, chests_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1671 free(chests_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1672 free(chests_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1673 free(chests_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1674 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1675 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
|
1676 *overlays_mm8 = nullptr; |
2151 | 1677 void *overlays_mm7 = pEvents_LOD->LoadRaw("doverlay.bin", 1); |
0 | 1678 pOverlayList = new OverlayList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1679 pOverlayList->FromFile(overlays_mm6, overlays_mm7, overlays_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1680 free(overlays_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1681 free(overlays_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1682 free(overlays_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1683 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1684 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
|
1685 *sounds_mm8 = nullptr; |
2151 | 1686 void *sounds_mm7 = pEvents_LOD->LoadRaw("dsounds.bin", 1); |
0 | 1687 pSoundList = new SoundList; |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1688 pSoundList->FromFile(sounds_mm6, sounds_mm7, sounds_mm8); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1689 free(sounds_mm6); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1690 free(sounds_mm7); |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
1691 free(sounds_mm8); |
0 | 1692 } |
1693 | |
1694 | |
1695 | |
492 | 1696 |
2069 | 1697 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_RUN_IN_WIDOW) |
0 | 1698 { |
2069 | 1699 //window->SetWindowedMode(game_width, game_height); |
1700 pRenderer->SwitchToWindow(); | |
0 | 1701 } |
1702 else | |
1703 { | |
2069 | 1704 __debugbreak(); // Nomad |
1705 window->SetFullscreenMode(); | |
1706 pRenderer->InitializeFullscreen(); | |
0 | 1707 } |
2151 | 1708 |
1709 uSoundVolumeMultiplier = min(9, ReadWindowsRegistryInt("soundflag", 9)); | |
1710 uMusicVolimeMultiplier = min(9, ReadWindowsRegistryInt("musicflag", 9)); | |
1711 uVoicesVolumeMultiplier = min(9, ReadWindowsRegistryInt("CharVoices", 9)); | |
0 | 1712 bShowDamage = ReadWindowsRegistryInt("ShowDamage", 1) != 0; |
2151 | 1713 |
1714 uGammaPos = min(4, ReadWindowsRegistryInt("GammaPos", 4)); | |
0 | 1715 pGame->pGammaController->Initialize(uGammaPos * 0.1 + 0.6); |
1716 | |
1717 if ( ReadWindowsRegistryInt("Bloodsplats", 1) ) | |
591 | 1718 pGame->uFlags2 |= GAME_FLAGS_2_DRAW_BLOODSPLATS; |
0 | 1719 else |
733 | 1720 pGame->uFlags2 &= ~GAME_FLAGS_2_DRAW_BLOODSPLATS; |
0 | 1721 |
2427 | 1722 uTurnSpeed = ReadWindowsRegistryInt("TurnDelta", 3); |
0 | 1723 |
1724 if (!bNoSound) | |
1802 | 1725 pAudioPlayer->Initialize(); |
0 | 1726 |
1262 | 1727 pVideoPlayer = new VideoPlayer(); |
1802 | 1728 pVideoPlayer->Initialize(window); |
0 | 1729 |
2061 | 1730 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; |
0 | 1731 |
1732 switch ( uTurnSpeed ) | |
1733 { | |
731 | 1734 case 0: // undefined turn option |
1067 | 1735 __debugbreak(); // really shouldn't use this mode |
731 | 1736 uTurnSpeed = (unsigned int)uCPUSpeed < 199 ? 128 : 64; // adjust turn speed to estimated fps |
1737 break; | |
1738 | |
1739 case 1u: // 16x | |
1740 Log::Warning(L"x16 Turn Speed"); // really shouldn't use this mode | |
0 | 1741 uTurnSpeed = 128; |
731 | 1742 break; |
1743 | |
1744 case 2u: // 32x | |
1745 Log::Warning(L"x32 Turn Speed"); // really shouldn't use this mode | |
0 | 1746 uTurnSpeed = 64; |
731 | 1747 break; |
1748 | |
1749 case 3u: // smooth | |
0 | 1750 uTurnSpeed = 0; |
731 | 1751 break; |
1752 } | |
1753 | |
0 | 1754 return true; |
1755 } | |
1756 | |
1757 //----- (00465D0B) -------------------------------------------------------- | |
1802 | 1758 void SecondaryInitialization() |
0 | 1759 { |
2151 | 1760 //__int16 v4; // ax@4 |
1761 //signed int v5; // esi@5 | |
1762 //int v6; // ecx@6 | |
1763 //int v7; // edx@7 | |
1764 //ObjectDesc *v8; // eax@7 | |
1765 //char pContainer[32]; // [sp+10h] [bp-Ch]@9 | |
0 | 1766 |
1802 | 1767 pMouse->Initialize(window); |
0 | 1768 |
1769 pItemsTable = new ItemsTable; | |
1770 pItemsTable->Initialize(); | |
1771 | |
2154 | 1772 //pBitmaps_LOD->can_load_hardware_sprites = 1; |
2069 | 1773 //pBitmaps_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); |
1774 pBitmaps_LOD->SetupPalettes(5, 6, 5); | |
1775 //pIcons_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
1776 pIcons_LOD->SetupPalettes(5, 6, 5); | |
1777 //pPaletteManager->SetColorChannelInfo(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
1778 pPaletteManager->SetColorChannelInfo(5, 6, 5); | |
762 | 1779 |
1780 pPaletteManager->SetMistColor(128, 128, 128); | |
0 | 1781 pPaletteManager->RecalculateAll(); |
2154 | 1782 //pSprites_LOD->can_load_hardware_sprites = 1; |
0 | 1783 pObjectList->InitializeSprites(); |
1784 pOverlayList->InitializeSprites(); | |
2412 | 1785 |
0 | 1786 if (!bNoSound) |
1787 pSoundList->Initialize(); | |
1788 | |
1789 | |
1790 for (uint i = 0; i < 4; ++i) | |
1791 { | |
2151 | 1792 static const char *pUIAnimNames[4] = |
1793 { | |
1794 "glow03", "glow05", | |
1795 "torchA", "wizeyeA" | |
1796 }; | |
1797 static unsigned short _4E98D0[4][4] = | |
1798 { | |
1799 {479, 0, 329, 0}, | |
1800 {585, 0, 332, 0}, | |
1801 {468, 0, 0, 0}, | |
1802 {606, 0, 0, 0} | |
1803 }; | |
1804 | |
0 | 1805 pUIAnims[i]->uIconID = pIconsFrameTable->FindIcon(pUIAnimNames[i]); |
1806 pIconsFrameTable->InitializeAnimation(pUIAnims[i]->uIconID); | |
1807 | |
1808 pUIAnims[i]->uAnimLength = 0; | |
1809 pUIAnims[i]->uAnimTime = 0; | |
1810 pUIAnims[i]->x = _4E98D0[i][0]; | |
1811 pUIAnims[i]->y = _4E98D0[i][2]; | |
1812 } | |
1813 | |
2151 | 1814 for (unsigned int i = 0; i < pObjectList->uNumObjects; ++i) |
0 | 1815 { |
2151 | 1816 pObjectList->pObjects[i].uParticleTrailColor = pObjectList->pObjects[i].uParticleTrailColorB | |
1817 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorG << 8) | | |
1818 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorR << 16); | |
0 | 1819 } |
2151 | 1820 |
0 | 1821 MainMenuUI_Create(); |
1822 pGame->pStru6Instance->LoadAnimations(); | |
1823 | |
1824 for (uint i = 0; i < 7; ++i) | |
1825 { | |
2151 | 1826 char container_name[64]; |
1827 sprintf(container_name, "HDWTR%03u", i); | |
1828 pRenderer->pHDWaterBitmapIDs[i] = pBitmaps_LOD->LoadTexture(container_name); | |
0 | 1829 } |
1830 | |
1831 pNPCStats = new NPCStats; | |
110 | 1832 memset(pNPCStats->pNPCData, 0, 0x94BCu); |
0 | 1833 pNPCStats->Initialize(); |
1834 | |
1835 Initialize_GlobalEVT(); | |
762 | 1836 pBitmaps_LOD->_inlined_sub0(); |
1837 pSprites_LOD->_inlined_sub0(); | |
0 | 1838 pPaletteManager->LockAll(); |
1839 | |
1840 _mkdir("Saves"); | |
1841 for (uint i = 0; i < 5; ++i) | |
1842 for (uint j = 0; j < 6; ++j) | |
1843 { | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
1844 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
|
1845 remove(pTmpBuf.data()); |
0 | 1846 } |
1847 | |
1848 Initialize_GamesLOD_NewLOD(); | |
1051 | 1849 _576E2C_current_minimap_zoom = 512; |
0 | 1850 dword_576E28 = 9; |
1851 } | |
1852 | |
522 | 1853 void IntegrityTest() |
1854 { | |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1855 static_assert(sizeof(MovieHeader) == 44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1856 static_assert(sizeof(SoundDesc_mm6) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1857 static_assert(sizeof(SoundDesc) == 120, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1858 static_assert(sizeof(OverlayDesc) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1859 static_assert(sizeof(ChestDesc) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1860 static_assert(sizeof(ObjectDesc_mm6) == 52, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1861 static_assert(sizeof(ObjectDesc) == 56, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1862 static_assert(sizeof(DecorationDesc) == 84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1863 static_assert(sizeof(IconFrame) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1864 static_assert(sizeof(PlayerFrame) == 10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1865 static_assert(sizeof(TextureFrame) == 20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1866 static_assert(sizeof(SpriteFrame) == 60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1867 static_assert(sizeof(RenderVertexSoft) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1868 static_assert(sizeof(RenderBillboard) == 0x34, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1869 static_assert(sizeof(Texture) == 0x48, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1870 static_assert(sizeof(RGBTexture) == 0x28, "Wrong type size"); |
2154 | 1871 //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
|
1872 static_assert(sizeof(AudioPlayer) == 0xC84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1873 static_assert(sizeof(SoundDesc) == 0x78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1874 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
|
1875 //static_assert(sizeof(VideoPlayer) == 0x108 + 4, "Wrong type size"); |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1876 static_assert(sizeof(MovieHeader) == 0x2C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1877 static_assert(sizeof(DecorationDesc) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1878 static_assert(sizeof(ObjectDesc) == 0x38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1879 static_assert(sizeof(OverlayDesc) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1880 static_assert(sizeof(ChestDesc) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1881 static_assert(sizeof(TileDesc) == 0x1A, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1882 static_assert(sizeof(MonsterDesc_mm6) == 148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1883 static_assert(sizeof(MonsterDesc) == 152, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1884 static_assert(sizeof(Timer) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1885 static_assert(sizeof(OtherOverlay) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1886 static_assert(sizeof(ItemGen) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1887 static_assert(sizeof(SpriteObject) == 0x70, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1888 static_assert(sizeof(ItemDesc) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1889 static_assert(sizeof(ItemsTable) == 0x117A0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1890 static_assert(sizeof(Chest) == 0x14CC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1891 static_assert(sizeof(MapInfo) == 0x44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1892 static_assert(sizeof(SpellInfo) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1893 static_assert(sizeof(SpellData) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1894 static_assert(sizeof(SpellBuff) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1895 static_assert(sizeof(AIDirection) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1896 static_assert(sizeof(ActorJob) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1897 static_assert(sizeof(Actor) == 0x344, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1898 static_assert(sizeof(LevelDecoration) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1899 static_assert(sizeof(KeyboardActionMapping) == 0x20C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1900 static_assert(sizeof(UIAnimation) == 0xD, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1901 static_assert(sizeof(SpawnPointMM7) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1902 static_assert(sizeof(ODMFace) == 0x134, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1903 static_assert(sizeof(BSPNode) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1904 static_assert(sizeof(BSPModel) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1905 static_assert(sizeof(OutdoorLocation) == 0x1C28C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1906 static_assert(sizeof(BLVFace) == 0x60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1907 static_assert(sizeof(BLVFaceExtra) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1908 static_assert(sizeof(BLVSector) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1909 static_assert(sizeof(BLVLightMM7) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1910 static_assert(sizeof(BLVDoor) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1911 static_assert(sizeof(IndoorLocation) == 0x690, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1912 //static_assert(sizeof(ODMRenderParams) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1913 static_assert(sizeof(Mouse) == 0x114, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1914 static_assert(sizeof(Particle_sw) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1915 static_assert(sizeof(Particle) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1916 static_assert(sizeof(ParticleEngine) == 0xE430, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1917 static_assert(sizeof(Lightmap) == 0xC1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1918 static_assert(sizeof(LightmapBuilder) == 0x3CBC38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1919 static_assert(sizeof(Vis_SelectionList) == 0x2008, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1920 static_assert(sizeof(Vis) == 0x20D0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1921 static_assert(sizeof(PlayerBuffAnim) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1922 static_assert(sizeof(ProjectileAnim) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1923 static_assert(sizeof(stru6) == 0x5F8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1924 static_assert(sizeof(IndoorCameraD3D_Vec3) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1925 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
|
1926 //static_assert(sizeof(IndoorCameraD3D) == 0x1A1384, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1927 static_assert(sizeof(StationaryLight) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1928 static_assert(sizeof(LightsStack_StationaryLight_) == 0x12C8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1929 static_assert(sizeof(MobileLight) == 0x12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1930 static_assert(sizeof(LightsStack_MobileLight_) == 0x1C28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1931 static_assert(sizeof(Game) == 0xE78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1932 static_assert(sizeof(stru141_actor_collision_object) == 0xA8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1933 static_assert(sizeof(ActionQueue) == 0x7C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1934 static_assert(sizeof(NPCData) == 0x4C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1935 static_assert(sizeof(NPCStats) == 0x17FFC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1936 static_assert(sizeof(BspRenderer) == 0x53740, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1937 static_assert(sizeof(PaletteManager) == 0x267AF0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1938 static_assert(sizeof(ViewingParams) == 0x26C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1939 //static_assert(sizeof(IndoorCamera) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1940 static_assert(sizeof(Bloodsplat) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1941 static_assert(sizeof(BloodsplatContainer) == 0xA0C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1942 static_assert(sizeof(TrailParticle) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1943 static_assert(sizeof(EventIndex) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1944 static_assert(sizeof(_2devent) == 0x34, "Wrong type size"); |
2386 | 1945 static_assert(sizeof(MapsLongTimer) == 0x20, "Wrong type size"); |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1946 static_assert(sizeof(SavegameHeader) == 0x64, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1947 static_assert(sizeof(SavegameList) == 0x3138, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1948 static_assert(sizeof(StorylineText) == 0x160, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1949 static_assert(sizeof(FactionTable) == 0x1EF1, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1950 static_assert(sizeof(Decal) == 0xC20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1951 static_assert(sizeof(DecalBuilder) == 0x30C038, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1952 static_assert(sizeof(MonsterInfo) == 0x58, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1953 static_assert(sizeof(MonsterStats) == 0x5BA0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1954 static_assert(sizeof(RenderD3D) == 0x148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1955 // static_assert(sizeof(Render) == 0x129844, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1956 static_assert(sizeof(Player) == 0x1B3C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1957 static_assert(sizeof(PartyTimeStruct) == 0x678, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1958 static_assert(sizeof(Party) == 0x16238, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1959 static_assert(sizeof(GUIButton) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1960 static_assert(sizeof(GUIWindow) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1961 static_assert(sizeof(GUIProgressBar) == 0x1B8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1962 static_assert(sizeof(GUIFont) == 0x1020, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1963 // static_assert(sizeof(stru262_TurnBased) == 0x40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1964 static_assert(sizeof(ArcomageGame) == 0xFB, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1965 static_assert(sizeof(CastSpellInfo) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1966 static_assert(sizeof(ArcomageCard) == 0x6C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1967 static_assert(sizeof(stru320) == 0x3FC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1968 static_assert(sizeof(TravelInfo) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1969 static_assert(sizeof(stru336) == 0x798, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1970 static_assert(sizeof(Vec3_short_) == 6, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1971 static_assert(sizeof(BLVFace) == 96, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1972 static_assert(sizeof(BLVFaceExtra) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1973 static_assert(sizeof(BLVSector) == 116, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1974 static_assert(sizeof(LevelDecoration) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1975 static_assert(sizeof(BLVLightMM7) == 16, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1976 static_assert(sizeof(BSPNode) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1977 static_assert(sizeof(SpawnPointMM7) == 24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1978 static_assert(sizeof(DDM_DLV_Header) == 40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1979 static_assert(sizeof(Actor) == 836, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1980 static_assert(sizeof(SpriteObject) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1981 static_assert(sizeof(Chest) == 5324, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1982 static_assert(sizeof(stru123) == 0xC8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1983 static_assert(sizeof(BLVMapOutline) == 12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1984 static_assert(sizeof(LODSprite) == 0x28, "Wrong type size"); |
522 | 1985 } |
1986 | |
2277 | 1987 bool new_sky = false; //íîâîå íåáî(òðåáóþòñÿ òåêñòóðêè) |
1988 int max_flight_height = 4000; //ìàêñèìàëüíàÿ âûñîòà ïîë¸òà | |
2034 | 1989 |
2037
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1990 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1991 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1992 |
0 | 1993 //----- (00462C94) -------------------------------------------------------- |
1994 bool MM_Main(const wchar_t *pCmdLine) | |
1995 { | |
522 | 1996 IntegrityTest(); |
1706 | 1997 |
246 | 1998 char test[1024]; |
522 | 1999 sprintfex(test, "^Pi[%s]: çíàõàð^R[ü;êà;]", "Çîëòàí"); |
2000 | |
2052 | 2001 lua = new LuaVM; |
2002 lua->Initialize(); | |
2031 | 2003 |
1052 | 2004 bool bNoMargareth = false; |
0 | 2005 if (pCmdLine && *pCmdLine) |
2006 { | |
2061 | 2007 //if (wcsstr(pCmdLine, L"-usedefs")) |
2008 // bDebugResouces = 1; | |
0 | 2009 if (wcsstr(pCmdLine, L"-window")) |
2061 | 2010 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 2011 |
2012 if (wcsstr(pCmdLine, L"-nointro")) | |
2013 bNoIntro = true;//dword_6BE364_game_settings_1 |= 4; | |
2014 if (wcsstr(pCmdLine, L"-nologo")) | |
2015 bNoLogo = true;//dword_6BE364_game_settings_1 |= 8; | |
2016 if (wcsstr(pCmdLine, L"-nosound")) | |
2017 bNoSound = true; //dword_6BE364_game_settings_1 |= 0x10; | |
2018 | |
2019 bWalkSound = ReadWindowsRegistryInt("WalkSound", 1) != 0; | |
2020 if (wcsstr(pCmdLine, L"-nowalksound")) | |
2021 bWalkSound = false;//dword_6BE364_game_settings_1 |= 0x20; | |
256 | 2022 if (wcsstr(pCmdLine, L"-novideo")) |
0 | 2023 { |
2061 | 2024 dword_6BE364_game_settings_1 |= GAME_SETTINGS_NO_HOUSE_ANIM; |
0 | 2025 bNoVideo = true; |
2026 } | |
2027 if (wcsstr(pCmdLine, L"-nocd")) | |
2028 bNoCD = true; | |
168 | 2029 if (wcsstr(pCmdLine, L"-new_sky")) |
2030 new_sky = true; | |
1052 | 2031 if (wcsstr(pCmdLine, L"-nomarg")) |
2032 bNoMargareth = true; | |
0 | 2033 } |
2034 | |
731 | 2035 /*v8 = _4AC1C9_get_cpu_speed(0, (Vec4_int_ *)a2); |
0 | 2036 Rect.left = *(int *)v8; |
2037 Rect.top = *(int *)(v8 + 4); | |
2038 Rect.right = *(int *)(v8 + 8); | |
2039 Rect.bottom = *(int *)(v8 + 12); | |
731 | 2040 uCPUSpeed = Rect.bottom;*/ |
2041 uCPUSpeed = 2048; // about 2GHz | |
4 | 2042 |
2416 | 2043 //_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF );//Ritor1: for memory test(äëÿ ïðîâåðêè ïàìÿòè) |
2044 | |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
2045 if (!MM7_Initialize(640, 480))//çàäà¸òñÿ ðàçìåð îêíà |
734 | 2046 { |
2047 Log::Warning(L"MM init: failed"); | |
2048 pGame->Deinitialize(); | |
2049 return 1; | |
2050 } | |
0 | 2051 |
2216 | 2052 pEventTimer->Pause(); |
2053 | |
2054 SetUserInterface(PartyAlignment_Neutral, false); | |
2290 | 2055 ShowLogoVideo(); |
2056 //ShowIntroVideo_and_LoadingScreen(); | |
2216 | 2057 WriteWindowsRegistryInt("Ran once", 1); |
2058 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; | |
2059 pGame->InitializeGammaController(); | |
2060 SecondaryInitialization(); | |
2061 pRenderer->SetRasterClipRect(0, 0, window->GetWidth() - 1, window->GetHeight() - 1); | |
2062 FinalInitialization(); | |
2279 | 2063 |
2064 //Ritor1: include | |
2278 | 2065 MMT_MainMenu_Loop(); |
2279 | 2066 |
2394 | 2067 Log::Warning(L"MM: entering main loop"); |
2216 | 2068 while ( 1 ) |
2069 { | |
2070 MainMenuWindow* main_menu_window = MainMenuWindow::Create(); | |
2071 window->AddControl(main_menu_window); | |
2072 MainMenu_Loop(); | |
2073 uGameState = GAME_STATE_PLAYING; | |
0 | 2074 while ( 1 ) |
2075 { | |
2216 | 2076 if (uGameState == GAME_FINISHED || GetCurrentMenuID() == MENU_EXIT_GAME) |
2077 { | |
2078 pGame->Deinitialize(); | |
2079 return true; | |
2080 } | |
2081 | |
2082 if (GetCurrentMenuID() == MENU_NEWGAME) | |
0 | 2083 { |
2216 | 2084 if ( pAudioPlayer->hAILRedbook ) |
2085 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2086 pParty->Reset(); | |
2087 pOtherOverlayList->Reset(); | |
2088 strcpy(pCurrentMapName, pStartingMapName); | |
2089 pParty->CreateDefaultParty(0); | |
2090 PlayerCreationUI_Initialize(); | |
2091 if ( PlayerCreationUI_Loop() ) | |
982 | 2092 { |
0 | 2093 DeleteCCharFont(); |
2216 | 2094 break; |
2 | 2095 } |
2216 | 2096 DeleteCCharFont(); |
2097 bFlashQuestBook = true; | |
2098 PlayFullscreenMovie(MOVIE_Emerald); | |
2099 //pGame->pCShow->PlayMovie(MOVIE_Emerald, 0); | |
2100 SaveNewGame(); | |
2101 if (bNoMargareth) | |
2102 _449B7E_toggle_bit(pParty->_quest_bits, PARTY_QUEST_EMERALD_MARGARETH_OFF, 1); | |
2103 pGame->Loop(); | |
2104 if (uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU) | |
101 | 2105 { |
2106 SetCurrentMenuID(MENU_NEWGAME); | |
982 | 2107 uGameState = GAME_STATE_PLAYING; |
0 | 2108 continue; |
101 | 2109 } |
2216 | 2110 else if (uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU) |
2111 break; | |
2112 assert(false && "Invalid game state"); | |
2113 } | |
2114 if (GetCurrentMenuID() == MENU_CREDITS) | |
2115 { | |
2116 if ( pAudioPlayer->hAILRedbook ) | |
2117 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2118 MainMenuUI_Credits_Loop(); | |
2119 break; | |
2120 } | |
2121 if (GetCurrentMenuID() == MENU_5 || GetCurrentMenuID() == MENU_LoadingProcInMainMenu) | |
2122 { | |
2123 uGameState = GAME_STATE_PLAYING; | |
2124 pGame->Loop(); | |
2125 } | |
2126 else | |
2127 { | |
2128 if (GetCurrentMenuID() == MENU_DebugBLVLevel) | |
907 | 2129 { |
2216 | 2130 pMouse->ChangeActivation(0); |
2131 pParty->Reset(); | |
2132 pParty->CreateDefaultParty(1); | |
2133 | |
2134 __debugbreak(); | |
2135 /*extern void CreateDefaultBLVLevel(); | |
2136 CreateDefaultBLVLevel(); | |
2137 | |
2138 OPENFILENAMEA ofn; | |
2139 if ( !GetOpenFileNameA((LPOPENFILENAMEA)&ofn) ) | |
2140 { | |
2141 pMouse->ChangeActivation(1); | |
2142 break; | |
2143 } | |
2144 _chdir("..\\"); | |
2145 strcpy(pCurrentMapName, ofn.lpstrFileTitle);*/ | |
2146 pMouse->ChangeActivation(1); | |
2147 pGame->Loop(); | |
907 | 2148 } |
0 | 2149 } |
2216 | 2150 if ( uGameState == GAME_STATE_LOADING_GAME ) |
2151 { | |
2152 SetCurrentMenuID(MENU_5); | |
2153 uGameState = GAME_STATE_PLAYING; | |
2154 continue; | |
2155 } | |
2156 if ( uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU ) | |
0 | 2157 { |
2216 | 2158 SetCurrentMenuID(MENU_NEWGAME); |
2159 uGameState = GAME_STATE_PLAYING; | |
2160 continue; | |
2161 } | |
2162 if ( uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU)// from the loaded game | |
2163 { | |
2164 pAudioPlayer->StopChannels(-1, -1); | |
2165 uGameState = GAME_STATE_PLAYING; | |
2166 break; | |
0 | 2167 } |
2168 } | |
2216 | 2169 if (!bNoSound && pAudioPlayer->hAILRedbook) |
2170 { | |
2171 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f); | |
2172 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2173 unsigned int startms, end_ms; | |
2174 AIL_redbook_track_info(pAudioPlayer->hAILRedbook, 14, &startms, &end_ms); | |
2175 AIL_redbook_play(pAudioPlayer->hAILRedbook, startms + 1, end_ms); | |
2176 } | |
2177 } | |
2050 | 2178 //lua_close(L); |
0 | 2179 pGame->Deinitialize(); |
734 | 2180 return 1; |
0 | 2181 } |
2182 | |
2183 | |
2184 //----- (00466082) -------------------------------------------------------- | |
2185 void MM6_Initialize(const wchar_t *pIniFilename) | |
2186 { | |
2187 //int v0; // eax@1 | |
2151 | 2188 //UINT v1; // eax@18 |
0 | 2189 size_t v2; // eax@31 |
2190 size_t v3; // ebx@32 | |
2191 size_t v4; // edi@36 | |
2192 //char v5[120]; // [sp+Ch] [bp-17Ch]@1 | |
2193 //char String[120]; // [sp+84h] [bp-104h]@32 | |
2194 char pDefaultGroundTexture[16]; // [sp+FCh] [bp-8Ch]@32 | |
2195 //char pIniFilename[120]; // [sp+10Ch] [bp-7Ch]@1 | |
2196 unsigned int v9; // [sp+184h] [bp-4h]@28 | |
2197 | |
2198 //_getcwd(v5, 120); | |
2199 //sprintfex(pIniFilename, "%s\\mm6.ini", v5); | |
2200 viewparams = new ViewingParams; | |
819 | 2201 game_viewport_x = viewparams->uScreen_topL_X = GetPrivateProfileIntW(L"screen", L"vx1", 8, pIniFilename); |
2202 game_viewport_y = viewparams->uScreen_topL_Y = GetPrivateProfileIntW(L"screen", L"vy1", 8, pIniFilename); | |
2203 game_viewport_z = viewparams->uScreen_BttmR_X = GetPrivateProfileIntW(L"screen", L"vx2", 468, pIniFilename); | |
2204 game_viewport_w = viewparams->uScreen_BttmR_Y = GetPrivateProfileIntW(L"screen", L"vy2", 351, pIniFilename); | |
2205 game_viewport_width = game_viewport_z - game_viewport_x; | |
2206 game_viewport_height = game_viewport_w - game_viewport_y + 1; | |
0 | 2207 |
2208 | |
2209 pAudioPlayer = new AudioPlayer; | |
2210 pAudioPlayer->uMixerChannels = GetPrivateProfileIntW(L"settings", L"mixerchannels", 16, pIniFilename); | |
2211 if ( pAudioPlayer->uMixerChannels > 16 ) | |
2212 pAudioPlayer->uMixerChannels = 16; | |
2213 | |
2214 | |
2215 if (GetPrivateProfileIntW(L"debug", L"nomonster", 0, pIniFilename)) | |
2061 | 2216 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_ACTORS; |
2151 | 2217 if (ReadWindowsRegistryInt("startinwindow", 0)) |
2061 | 2218 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 2219 if (GetPrivateProfileIntW(L"debug", L"showFR", 0, pIniFilename)) |
2061 | 2220 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_0002_SHOW_FR; |
0 | 2221 if (GetPrivateProfileIntW(L"debug", L"nodamage", 0, pIniFilename)) |
2061 | 2222 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DAMAGE; |
0 | 2223 if (GetPrivateProfileIntW(L"debug", L"nodecoration", 0, pIniFilename)) |
2061 | 2224 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DECORATIONS; |
0 | 2225 |
2226 wchar_t pStartingMapNameW[1024]; | |
2227 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
|
2228 sprintf(pStartingMapName, "%S", pStartingMapNameW); |
0 | 2229 |
2230 v9 = 0; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2231 if ( strlen(pStartingMapName) ) |
0 | 2232 { |
2233 do | |
2234 { | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2235 if ( pStartingMapName[v9] == ' ' ) |
0 | 2236 pStartingMapName[v9] = 0; |
2237 ++v9; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2238 v2 = strlen(pStartingMapName); |
0 | 2239 } |
2240 while ( v9 < v2 ); | |
2241 } | |
2242 | |
1637 | 2243 pODMRenderParams = new ODMRenderParams; |
2244 pODMRenderParams->outdoor_no_mist = GetPrivateProfileIntW(L"debug", L"noMist", 0, pIniFilename); | |
2245 pODMRenderParams->bNoSky = GetPrivateProfileIntW(L"outdoor", L"nosky", 0, pIniFilename); | |
2246 pODMRenderParams->bDoNotRenderDecorations = GetPrivateProfileIntW(L"render", L"nodecorations", 0, pIniFilename); | |
2247 pODMRenderParams->outdoor_no_wavy_water = GetPrivateProfileIntW(L"outdoor", L"nowavywater", 0, pIniFilename); | |
0 | 2248 outdoor_grid_band_1 = GetPrivateProfileIntW(L"outdoor", L"gridband1", 10, pIniFilename); |
2249 outdoor_grid_band_2 = GetPrivateProfileIntW(L"outdoor", L"gridband2", 15, pIniFilename); | |
2250 outdoor_grid_band_3 = GetPrivateProfileIntW(L"outdoor", L"gridband3", 25, pIniFilename); | |
1637 | 2251 pODMRenderParams->terrain_gamma = GetPrivateProfileIntW(L"outdoor", L"ter_gamma", 0, pIniFilename); |
2252 pODMRenderParams->building_gamme = GetPrivateProfileIntW(L"outdoor", L"bld_gamma", 0, pIniFilename); | |
2253 pODMRenderParams->shading_dist_shade = GetPrivateProfileIntW(L"shading", L"dist_shade", 2048, pIniFilename); | |
2254 pODMRenderParams->shading_dist_shademist = GetPrivateProfileIntW(L"shading", L"dist_shademist", 4096, pIniFilename); | |
1765 | 2255 |
2277 | 2256 //int dist = 0x2000; |
2257 | |
2258 //if ( new_draw_object_dist ) | |
2259 //dist = 0x6000; | |
2260 pODMRenderParams->shading_dist_mist = GetPrivateProfileIntW(L"shading", L"dist_mist", 0x2000, pIniFilename);//äàëüíîñòü îòðèñîâêè 0x2000 | |
0 | 2261 |
2262 wchar_t pDefaultSkyTextureW[1024]; | |
2263 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
|
2264 sprintf(pDefaultSkyTexture.data(), "%S", pDefaultSkyTextureW); |
0 | 2265 |
2266 wchar_t pDefaultGroundTextureW[1024]; | |
2267 GetPrivateProfileStringW(L"textures", L"default", L"dirt", pDefaultGroundTextureW, 0x10u, pIniFilename); | |
2268 sprintf(pDefaultGroundTexture, "%S", pDefaultGroundTextureW); | |
2269 | |
2270 wchar_t pFloat[1024]; | |
2271 GetPrivateProfileStringW(L"debug", L"recmod1", L"1.0", pFloat, 0x10u, pIniFilename); | |
2272 swscanf(pFloat, L"%f", &flt_6BE3A4_debug_recmod1); | |
2273 | |
2274 GetPrivateProfileStringW(L"debug", L"recmod2", L"1.0", pFloat, 0x10u, pIniFilename); | |
2275 swscanf(pFloat, L"%f", &flt_6BE3A8_debug_recmod2); | |
2276 | |
2277 flt_6BE3AC_debug_recmod1_x_1_6 = flt_6BE3A4_debug_recmod1 * 1.666666666666667; | |
2278 | |
2279 v3 = 0; | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
2280 if ( strlen(pDefaultSkyTexture.data()) ) |
0 | 2281 { |
2282 do | |
2283 { | |
2284 if ( pDefaultSkyTexture[v3] == ' ' ) | |
2285 pDefaultSkyTexture[v3] = 0; | |
2286 ++v3; | |
2287 } | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
2288 while ( v3 < strlen(pDefaultSkyTexture.data()) ); |
0 | 2289 } |
2290 v4 = 0; | |
2291 if ( strlen(pDefaultGroundTexture) ) | |
2292 { | |
2293 do | |
2294 { | |
2295 if ( pDefaultGroundTexture[v4] == ' ' ) | |
2296 pDefaultGroundTexture[v4] = 0; | |
2297 ++v4; | |
2298 } | |
2299 while ( v4 < strlen(pDefaultGroundTexture) ); | |
2300 } | |
2301 | |
2302 MM7Initialization(); | |
2303 } | |
2304 | |
2305 //----- (004666D5) -------------------------------------------------------- | |
2151 | 2306 void MM7Initialization() |
0 | 2307 { |
2308 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | |
2309 { | |
2151 | 2310 /*if (byte_6BE388_graphicsmode == 0) |
0 | 2311 { |
2312 outdoor_grid_band_1 = 10; | |
2313 outdoor_grid_band_2 = 15; | |
2314 outdoor_grid_band_3 = 20; | |
1637 | 2315 pODMRenderParams->shading_dist_mist = 8192; |
2316 pODMRenderParams->bNoSky = false; | |
0 | 2317 LOBYTE(viewparams->field_20) = 0; |
2151 | 2318 }*/ |
1637 | 2319 pODMRenderParams->shading_dist_shade = 2048; |
2320 pODMRenderParams->terrain_gamma = 0; | |
2321 pODMRenderParams->building_gamme = 0; | |
2322 pODMRenderParams->shading_dist_shademist = 4096; | |
2323 pODMRenderParams->outdoor_no_wavy_water = 0; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
2324 //_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
|
2325 { |
1637 | 2326 pODMRenderParams->outdoor_grid_band_3 = outdoor_grid_band_3; |
2327 pODMRenderParams->uPickDepth = outdoor_grid_band_3 * 512; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
2328 } |
0 | 2329 } |
2330 else | |
2331 LOBYTE(viewparams->field_20) = 0; | |
2101 | 2332 pParty->uFlags |= 2; |
692 | 2333 viewparams->uSomeY = viewparams->uScreen_topL_Y; |
2334 viewparams->uSomeX = viewparams->uScreen_topL_X; | |
2335 viewparams->uSomeZ = viewparams->uScreen_BttmR_X; | |
2336 viewparams->uSomeW = viewparams->uScreen_BttmR_Y; | |
2337 | |
2338 pViewport->SetScreen(viewparams->uScreen_topL_X, viewparams->uScreen_topL_Y, viewparams->uScreen_BttmR_X, viewparams->uScreen_BttmR_Y); | |
0 | 2339 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) |
1637 | 2340 pODMRenderParams->Initialize(); |
0 | 2341 } |
2342 | |
2343 //----- (00466C40) -------------------------------------------------------- | |
2344 const wchar_t *MENU_STATE_to_string(MENU_STATE m) | |
2345 { | |
2346 switch (m) | |
2347 { | |
982 | 2348 case -1: return L"-1"; |
2349 case MENU_MAIN: return L"MENU_MAIN"; | |
2350 case MENU_NEWGAME: return L"MENU_NEWGAME"; | |
2351 case MENU_CREDITS: return L"MENU_CREDITS"; | |
2352 case MENU_SAVELOAD: return L"MENU_SAVELOAD"; | |
2353 case MENU_EXIT_GAME: return L"MENU_EXIT_GAME"; | |
2354 case MENU_5: return L"MENU_5"; | |
2355 case MENU_CREATEPARTY: return L"MENU_CREATEPARTY"; | |
165 | 2356 case MENU_NAMEPANELESC: return L"MENU_NAMEPANELESC"; |
982 | 2357 case MENU_CREDITSPROC: return L"MENU_CREDITSPROC"; |
961 | 2358 case MENU_LoadingProcInMainMenu: return L"MENU_LoadingProcInMainMenu"; |
1458 | 2359 case MENU_DebugBLVLevel: return L"MENU_DebugBLVLevel"; |
165 | 2360 case MENU_CREDITSCLOSE: return L"MENU_CREDITSCLOSE"; |
2278 | 2361 case MENU_MMT_MAIN_MENU: return L"MENU_MMT_MAIN_MENU"; |
982 | 2362 default: return L"unk"; |
0 | 2363 }; |
2364 }; | |
2365 void SetCurrentMenuID(MENU_STATE uMenu) | |
2366 { | |
2006 | 2367 sCurrentMenuID = uMenu; |
0 | 2368 |
2393 | 2369 Log::Warning(L"CurrentMenu = %s \n", MENU_STATE_to_string(uMenu)); |
0 | 2370 } |
2371 | |
2372 //----- (00466CA0) -------------------------------------------------------- | |
2373 MENU_STATE GetCurrentMenuID() | |
2374 { | |
2006 | 2375 return sCurrentMenuID; |
0 | 2376 } |
2377 | |
2378 | |
2379 //----- (0046BDA8) -------------------------------------------------------- | |
1458 | 2380 unsigned int GetGravityStrength() |
0 | 2381 { |
2382 int v0; // eax@1 | |
2383 | |
2384 v0 = ~LOBYTE(pGame->uFlags2) & 8; | |
2385 LOBYTE(v0) = v0 | 2; | |
2386 return (unsigned int)v0 >> 1; | |
2387 } | |
2388 | |
2389 //----- (0046BDC0) -------------------------------------------------------- | |
1458 | 2390 void UpdateUserInput_and_MapSpecificStuff() |
0 | 2391 { |
2061 | 2392 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME) |
0 | 2393 { |
2061 | 2394 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME; |
2395 return; | |
0 | 2396 } |
2061 | 2397 |
630 | 2398 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
0 | 2399 BLV_UpdateUserInputAndOther(); |
630 | 2400 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) |
0 | 2401 ODM_UpdateUserInputAndOther(); |
630 | 2402 |
783 | 2403 area_of_effect__damage_evaluate(); |
0 | 2404 } |
2405 | |
2406 //----- (0046BFFA) -------------------------------------------------------- | |
2407 bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2) | |
2408 { | |
2101 | 2409 ObjectDesc *object; // ebx@1 |
0 | 2410 unsigned int v8; // eax@19 |
2411 signed int v10; // ebx@19 | |
2412 char *v11; // edx@20 | |
2413 unsigned __int16 v12; // ax@23 | |
2414 int v13; // eax@27 | |
2334 | 2415 // unsigned int v14; // ebx@33 |
0 | 2416 int v16; // eax@36 |
2334 | 2417 // unsigned int v17; // eax@37 |
0 | 2418 __int16 v18; // di@37 |
2419 signed int v19; // edx@37 | |
2334 | 2420 // unsigned __int8 v20; // sf@37 |
2421 // char *v21; // ecx@38 | |
0 | 2422 unsigned __int16 v22; // ax@41 |
2334 | 2423 // unsigned int v23; // eax@46 |
0 | 2424 signed int v24; // ebx@46 |
2425 char *v25; // edx@47 | |
2425 | 2426 // int v26; // edx@54 |
2427 // int v27; // edx@55 | |
2428 // int v28; // edx@56 | |
2429 // int v29; // edx@57 | |
2334 | 2430 // unsigned __int16 v30; // ax@60 |
2431 // unsigned int v31; // ecx@60 | |
2432 // int v32; // edi@60 | |
2433 // unsigned int v33; // eax@65 | |
0 | 2434 signed int v34; // edx@65 |
2334 | 2435 // char *v35; // ecx@66 |
0 | 2436 unsigned __int16 v36; // ax@69 |
2437 int v37; // ST14_4@72 | |
2438 int v38; // eax@72 | |
2439 int v39; // ST10_4@72 | |
2440 int v40; // ST0C_4@72 | |
2425 | 2441 //int v41; // edx@76 |
2442 // int v42; // edx@77 | |
2443 // int v43; // edx@78 | |
0 | 2444 unsigned __int8 v44; // zf@79 |
2425 | 2445 // int v45; // edx@79 |
2446 // unsigned __int16 v46; // ax@80 | |
0 | 2447 int v47; // eax@81 |
2425 | 2448 // int v48; // edx@87 |
2449 // int v49; // edx@88 | |
2450 // int v50; // edx@89 | |
0 | 2451 signed int v52; // ebx@93 |
2334 | 2452 // char *v53; // edx@94 |
2453 // unsigned __int16 v54; // ax@98 | |
2454 // unsigned int v55; // ecx@98 | |
0 | 2455 signed int v56; // ebx@98 |
2334 | 2456 // char *v57; // edx@99 |
0 | 2457 unsigned __int16 v58; // ax@102 |
2458 unsigned __int16 v59; // ax@107 | |
2334 | 2459 // unsigned int v60; // ecx@107 |
0 | 2460 signed int v61; // ebx@107 |
2334 | 2461 // char *v62; // edx@108 |
0 | 2462 unsigned __int16 v63; // ax@111 |
2463 int v64; // ebx@114 | |
2464 signed int v65; // eax@114 | |
2334 | 2465 // unsigned int v66; // edi@123 |
2466 // unsigned __int16 v67; // ax@124 | |
2467 // unsigned int v68; // ecx@124 | |
0 | 2468 signed int v69; // ebx@124 |
2334 | 2469 // char *v70; // edx@125 |
0 | 2470 unsigned __int16 v71; // ax@128 |
2471 unsigned int v72; // ebx@131 | |
2472 int v78; // eax@133 | |
2425 | 2473 // char v79; // zf@139 |
2334 | 2474 // unsigned int v80; // eax@140 |
0 | 2475 signed int v81; // edx@140 |
2334 | 2476 // char *v82; // ecx@141 |
0 | 2477 unsigned __int16 v83; // ax@144 |
2334 | 2478 // unsigned __int16 v84; // ax@151 |
2479 // unsigned int v85; // ecx@151 | |
0 | 2480 signed int v86; // ebx@151 |
2334 | 2481 // char *v87; // edx@152 |
0 | 2482 unsigned __int16 v88; // ax@155 |
2483 unsigned int v89; // eax@158 | |
2484 int v90; // ST34_4@159 | |
2485 int v91; // eax@159 | |
2486 unsigned int v92; // eax@163 | |
2334 | 2487 // unsigned int v93; // eax@177 |
2488 // char *v94; // ecx@178 | |
0 | 2489 unsigned __int16 v95; // ax@181 |
2490 unsigned __int16 v96; // ax@184 | |
2491 int v97; // eax@185 | |
2334 | 2492 // unsigned __int16 v98; // ax@191 |
0 | 2493 char v100; // ST18_1@198 |
2494 int v102; // eax@198 | |
2495 signed int v106; // eax@208 | |
2496 unsigned int v107; // edx@220 | |
2497 signed int v108; // ebx@225 | |
2334 | 2498 // unsigned int v109; // eax@234 |
0 | 2499 signed int v110; // ebx@234 |
2334 | 2500 // char *v111; // ecx@235 |
0 | 2501 unsigned __int16 v112; // ax@238 |
2502 unsigned __int16 v113; // si@241 | |
2503 int v114; // eax@242 | |
2504 int v115; // eax@245 | |
2334 | 2505 // unsigned __int16 v117; // ax@251 |
2506 // unsigned int v118; // ecx@251 | |
0 | 2507 signed int v119; // ebx@251 |
2334 | 2508 // char *v120; // edx@252 |
0 | 2509 unsigned __int16 v121; // ax@255 |
2334 | 2510 // unsigned int v122; // eax@260 |
2511 // char *v123; // edx@261 | |
0 | 2512 int v124; // eax@267 |
2513 int v125; // [sp-20h] [bp-4Ch]@28 | |
2514 char v132; // [sp-8h] [bp-34h]@131 | |
2515 char v134; // [sp-4h] [bp-30h]@131 | |
2516 signed int v135; // [sp-4h] [bp-30h]@217 | |
2517 int v136; // [sp+Ch] [bp-20h]@208 | |
2518 int v137; // [sp+10h] [bp-1Ch]@208 | |
2519 signed int v138; // [sp+14h] [bp-18h]@207 | |
2520 signed int v139; // [sp+18h] [bp-14h]@208 | |
2334 | 2521 // char *v140; // [sp+1Ch] [bp-10h]@61 |
0 | 2522 signed int v141; // [sp+1Ch] [bp-10h]@117 |
2523 unsigned int v142; // [sp+1Ch] [bp-10h]@158 | |
2524 signed int v143; // [sp+1Ch] [bp-10h]@172 | |
2334 | 2525 // char *v144; // [sp+1Ch] [bp-10h]@192 |
0 | 2526 signed int v146; // [sp+20h] [bp-Ch]@60 |
2527 int v147; // [sp+20h] [bp-Ch]@72 | |
2528 signed int v148; // [sp+20h] [bp-Ch]@158 | |
2529 unsigned __int16 v150; // [sp+20h] [bp-Ch]@208 | |
2530 signed int v152; // [sp+24h] [bp-8h]@208 | |
2101 | 2531 |
2532 //ïðèìåíåíèå: ôàåðáîëò â õðàìå ëóíû | |
2533 object = &pObjectList->pObjects[pSpriteObjects[uLayingItemID].uObjectDescID]; | |
2534 //v151 = PID_TYPE(a2); | |
848 | 2535 if ( PID_TYPE(a2) == OBJECT_Actor) |
2536 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2537 if ( PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Actor |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2538 && !pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].GetActorsRelation(&pActors[PID_ID(a2)]) ) |
0 | 2539 return 1; |
2540 } | |
2541 else | |
2542 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2543 if ( PID_TYPE(a2) == OBJECT_Player && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Player) |
0 | 2544 return 1; |
2545 } | |
2546 if ( pParty->bTurnBasedModeOn == 1 ) | |
2547 { | |
2101 | 2548 if ( pSpriteObjects[uLayingItemID].uAttributes & 4 ) |
0 | 2549 { |
1450 | 2550 --pTurnEngine->pending_actions; |
2101 | 2551 pSpriteObjects[uLayingItemID].uAttributes &= 0xFFFB; |
0 | 2552 } |
2553 } | |
2101 | 2554 if ( PID_TYPE(a2) == OBJECT_BModel && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) != OBJECT_Player) |
1280 | 2555 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2556 if (PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid) < 500) //bugfix PID_ID(v2->spell_caster_pid)==1000 |
2166 | 2557 pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].uAttributes |= 0x40000; |
1280 | 2558 } |
2559 | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2560 //v6 = v2->uType; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2561 //v7 = v2->uType; |
2396 | 2562 |
2563 switch (pSpriteObjects[uLayingItemID].uType) | |
2564 { | |
2565 | |
2566 case 1060: | |
2567 case 2030: | |
2568 case 9010: | |
2569 { | |
2570 //v9 = 0; | |
2571 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2)) | |
2572 return 1; | |
2573 if (PID_TYPE(a2) != 2) | |
2574 { | |
2575 sub_43A97E(uLayingItemID, a2); | |
2576 ++pSpriteObjects[uLayingItemID].uType; | |
2577 v95 = 0; | |
2578 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2579 { | |
2580 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2581 v95 = v52; | |
2582 } | |
2583 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2584 if (!v95) | |
2585 SpriteObject::OnInteraction(uLayingItemID); | |
2586 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2587 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2588 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2589 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2590 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2591 v97 = 0; | |
2592 else | |
2593 v97 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2594 v124 = 8 * uLayingItemID; | |
2595 LOBYTE(v124) = v124 | 2; | |
2596 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2597 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
2598 return 0; | |
2599 } | |
2600 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
2601 v121 = 0; | |
2602 for (v119 = 0; v119 < (signed int)pObjectList->uNumObjects; ++v119) | |
2603 { | |
2604 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v119].uObjectID) | |
2605 v121 = v119; | |
2606 } | |
2607 pSpriteObjects[uLayingItemID].uObjectDescID = v121; | |
2608 if (!v121) | |
2609 SpriteObject::OnInteraction(uLayingItemID); | |
2610 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2611 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2612 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2613 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2614 v13 = 8 * uLayingItemID; | |
2615 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2616 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2617 return 0; | |
2618 } | |
2619 | |
2620 | |
2621 case 500: | |
2622 case 505: | |
2623 case 510: | |
2624 case 515: | |
2625 case 520: | |
2626 case 525: | |
2627 case 530: | |
2628 case 535: | |
2629 case 540: | |
2630 { | |
2631 sub_43A97E(uLayingItemID, a2); | |
2632 ++pSpriteObjects[uLayingItemID].uType; | |
2633 v12 = 0; | |
2634 for (v10 = 0; v10 < (signed int)pObjectList->uNumObjects; ++v10) | |
2635 { | |
2636 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v10].uObjectID) | |
2637 v12 = v10; | |
2638 } | |
2639 pSpriteObjects[uLayingItemID].uObjectDescID = v12; | |
2640 if (!v12) | |
2641 SpriteObject::OnInteraction(uLayingItemID); | |
2642 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2643 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2644 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2645 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2646 if (pSpriteObjects[uLayingItemID].uType == 555) | |
2647 { | |
2648 v13 = 8 * uLayingItemID; | |
2649 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2650 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2651 } | |
2652 return 0; | |
2653 } | |
2654 | |
2655 case 545: | |
2656 case 550: | |
2657 { | |
2658 if (pSpriteObjects[uLayingItemID].stru_24.uItemID != 405 && pSpriteObjects[uLayingItemID].stru_24.uSpecEnchantmentType != 3) | |
2659 { | |
2660 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2661 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2662 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2663 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2664 sub_43A97E(uLayingItemID, a2); | |
2665 SpriteObject::OnInteraction(uLayingItemID); | |
2666 if (pSpriteObjects[uLayingItemID].uSoundID == 0) | |
2667 v16 = 0; | |
2668 else | |
2669 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2670 v124 = 8 * uLayingItemID; | |
2671 LOBYTE(v124) = v124 | 2; | |
2672 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id] + 1; | |
2673 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2674 return 0; | |
2675 } | |
2676 v18 = 0; | |
2677 pSpriteObjects[uLayingItemID].uType = 600; | |
2678 v22 = 0; | |
2679 for (v19 = 0; v19 < (signed int)pObjectList->uNumObjects; ++v19) | |
2680 { | |
2681 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v19].uObjectID) | |
2682 v22 = v19; | |
2683 } | |
2684 pSpriteObjects[uLayingItemID].uObjectDescID = v22; | |
2685 if (!v22) | |
2686 SpriteObject::OnInteraction(uLayingItemID); | |
2687 pSpriteObjects[uLayingItemID].vVelocity.z = v18; | |
2688 pSpriteObjects[uLayingItemID].vVelocity.y = v18; | |
2689 pSpriteObjects[uLayingItemID].vVelocity.x = v18; | |
2690 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; | |
2691 v12 = 0; | |
2692 for (v10; v10 < (signed int)v8; ++v10) | |
2693 { | |
2694 v11 += 56; | |
2695 if (pSpriteObjects[uLayingItemID].uType != *(short *)v11) | |
2696 v12 = v10; | |
2697 } | |
2698 pSpriteObjects[uLayingItemID].uObjectDescID = v12; | |
2699 if (!v12) | |
2700 SpriteObject::OnInteraction(uLayingItemID); | |
2701 v44 = pSpriteObjects[uLayingItemID].uType == 555; | |
2702 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2703 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2704 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2705 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2706 if (!v44) | |
2707 { | |
2708 v13 = 8 * uLayingItemID; | |
2709 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2710 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2711 return 0; | |
2712 } | |
2713 return 0; | |
2714 } | |
2715 | |
2716 case 600: | |
2717 { | |
2718 pSpriteObjects[uLayingItemID].uType = 601; | |
2719 v36 = 0; | |
2720 for (v34 = 0; v34 < (signed int)pObjectList->uNumObjects; ++v34) | |
2721 { | |
2722 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v34].uObjectID) | |
2723 v36 = v34; | |
2724 } | |
2725 pSpriteObjects[uLayingItemID].uObjectDescID = v36; | |
2726 if (!v36) | |
2727 SpriteObject::OnInteraction(uLayingItemID); | |
2728 v37 = pSpriteObjects[uLayingItemID].vPosition.z; | |
2729 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2730 v38 = 8 * uLayingItemID; | |
2731 v39 = pSpriteObjects[uLayingItemID].vPosition.y; | |
2732 LOBYTE(v38) = PID(OBJECT_Item, uLayingItemID); | |
2733 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2734 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2735 v40 = pSpriteObjects[uLayingItemID].vPosition.x; | |
2736 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2737 v147 = v38; | |
2738 AttackerInfo.Add(v38, 512, v40, v39, v37, 0, 0); | |
2739 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
2740 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
2741 pAudioPlayer->PlaySound(SOUND_8, v147, 0, -1, 0, 0, 0, 0); | |
2742 return 0; | |
2743 } | |
2744 | |
2745 case 1010: | |
2746 case 1100: | |
2747 case 2060: | |
2748 case 3010: | |
2749 case 3030: | |
2750 case 3060: | |
2751 case 4000: | |
2752 case 4030: | |
2753 case 4050: | |
2754 case 4100: | |
2755 case 6010: | |
2756 case 6090: | |
2757 { | |
2758 sub_43A97E(uLayingItemID, a2); | |
2759 ++pSpriteObjects[uLayingItemID].uType; | |
2760 v95 = 0; | |
2761 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2762 { | |
2763 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2764 v95 = v52; | |
2765 } | |
2766 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2767 if (!v95) | |
2768 SpriteObject::OnInteraction(uLayingItemID); | |
2769 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
2770 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2771 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2772 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2773 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2774 if (!v96) | |
2775 v97 = 0; | |
2776 else | |
2777 v97 = (signed __int16)v96 + 4; | |
2778 v124 = 8 * uLayingItemID; | |
2779 LOBYTE(v124) = v124 | 2; | |
2780 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2781 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
2782 return 0; | |
2783 } | |
2784 | |
2785 | |
2786 case 555: | |
2787 { | |
2788 sub_43A97E(uLayingItemID, a2); | |
2789 ++pSpriteObjects[uLayingItemID].uType; | |
2790 v18 = 0; | |
2791 v22 = 0; | |
2792 v25 = (char *)&pObjectList->pObjects->uObjectID; | |
2793 for (v24 = 0; v24 < (signed int)pObjectList->uNumObjects; ++v24) | |
2794 { | |
2795 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v24].uObjectID) | |
2796 v22 = v24; | |
2797 } | |
2798 pSpriteObjects[uLayingItemID].uObjectDescID = v22; | |
2799 if (v22 == v18) | |
2800 SpriteObject::OnInteraction(uLayingItemID); | |
2801 pSpriteObjects[uLayingItemID].vVelocity.z = v18; | |
2802 pSpriteObjects[uLayingItemID].vVelocity.y = v18; | |
2803 pSpriteObjects[uLayingItemID].vVelocity.x = v18; | |
2804 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; | |
2805 return 0; | |
2806 } | |
2807 | |
2808 case 3090: | |
2809 { | |
2810 //v9 = 0; | |
2811 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
2812 v63 = 0; | |
2813 for (v61 = 0; v61 < (signed int)pObjectList->uNumObjects; ++v61) | |
2814 { | |
2815 if (v59 == pObjectList->pObjects[v61].uObjectID) | |
2816 v63 = v61; | |
2817 } | |
2818 pSpriteObjects[uLayingItemID].uObjectDescID = v63; | |
2819 if (!v63) | |
2820 SpriteObject::OnInteraction(uLayingItemID); | |
2821 v64 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; | |
2822 v44 = pSpriteObjects[uLayingItemID].spell_skill == 4; | |
2823 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2824 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2825 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2826 v65 = 7; | |
2827 if (v44) | |
2828 v65 = 9; | |
2829 if (v65 > 0) | |
2830 { | |
2831 v141 = v65; | |
2832 do | |
2833 { | |
2834 v64 += (signed int)stru_5C6E00->uIntegerHalfPi / 2; | |
2835 pSpriteObjects[uLayingItemID].Create(v64, 0, 1000, 0); | |
2836 --v141; | |
2837 } while (v141); | |
2838 } | |
2839 SpriteObject::OnInteraction(uLayingItemID); | |
2840 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2841 v16 = 0; | |
2842 else | |
2843 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2844 v124 = 8 * uLayingItemID; | |
2845 LOBYTE(v124) = v124 | 2; | |
2846 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2847 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2848 return 0; | |
2849 } | |
2850 | |
2851 case 3092: | |
2852 { | |
2853 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType - 1; | |
2854 v58 = 0; | |
2855 for (v56 = 0; v56 < (signed int)pObjectList->uNumObjects; ++v56) | |
2856 { | |
2857 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v56].uObjectID) | |
2858 v58 = v56; | |
2859 } | |
2860 pSpriteObjects[uLayingItemID].uObjectDescID = v58; | |
2861 if (!v58) | |
2862 SpriteObject::OnInteraction(uLayingItemID); | |
2863 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2864 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2865 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2866 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2867 sub_43A97E(uLayingItemID, a2); | |
2868 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2869 v16 = 0; | |
2870 else | |
2871 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2872 v124 = 8 * uLayingItemID; | |
2873 LOBYTE(v124) = v124 | 2; | |
2874 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2875 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2876 return 0; | |
2877 } | |
2878 | |
2879 case 4070: | |
2880 { | |
2881 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2)) | |
2882 return 1; | |
2883 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
2884 v71 = 0; | |
2885 for (v69 = 0; v69 < (signed int)pObjectList->uNumObjects; ++v69) | |
2886 { | |
2887 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v69].uObjectID) | |
2888 v71 = v69; | |
2889 } | |
2890 pSpriteObjects[uLayingItemID].uObjectDescID = v71; | |
2891 if (!v71) | |
2892 SpriteObject::OnInteraction(uLayingItemID); | |
2893 v134 = 0; | |
2894 v72 = uLayingItemID; | |
2895 v132 = 0; | |
2896 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2897 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2898 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2899 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2900 AttackerInfo.Add(PID(OBJECT_Item, v72), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); | |
2901 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2902 v78 = 0; | |
2903 else | |
2904 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2905 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2906 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); | |
2907 return 0; | |
2908 } | |
2909 | |
2910 case 4090: | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2911 { |
2396 | 2912 //v9 = 0; |
2913 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
2914 v88 = 0; | |
2915 for (v86 = 0; v86 < (signed int)pObjectList->uNumObjects; ++v86) | |
2916 { | |
2917 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v86].uObjectID) | |
2918 v88 = v86; | |
2919 } | |
2920 pSpriteObjects[uLayingItemID].uObjectDescID = v88; | |
2921 if (!v88) | |
2922 SpriteObject::OnInteraction(uLayingItemID); | |
2923 v89 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; | |
2924 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2925 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2926 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2927 v142 = v89; | |
2928 v148 = 7; | |
2929 do | |
2930 { | |
2931 pRnd->SetRange(-128, 128); | |
2932 v90 = pRnd->GetInRange(); | |
2933 pRnd->SetRange(5, 500); | |
2934 v91 = pRnd->GetInRange(); | |
2935 v142 += (signed int)stru_5C6E00->uIntegerHalfPi >> 1; | |
2936 pSpriteObjects[uLayingItemID].Create(v90 + v142, 0, v91, 0); | |
2937 --v148; | |
2938 } while (v148); | |
2939 SpriteObject::OnInteraction(uLayingItemID); | |
2940 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2941 v16 = 0; | |
2942 else | |
2943 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2944 v124 = 8 * uLayingItemID; | |
2945 LOBYTE(v124) = v124 | 2; | |
2946 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2947 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2948 return 0; | |
2949 } | |
2950 | |
2951 case 4092: | |
2952 { | |
2953 pSpriteObjects[uLayingItemID].uType = 4091; | |
2954 v83 = 0; | |
2955 for (v81 = 0; v81 < (signed int)pObjectList->uNumObjects; ++v81) | |
2956 { | |
2957 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v81].uObjectID) | |
2958 v83 = v81; | |
2959 } | |
2960 pSpriteObjects[uLayingItemID].uObjectDescID = v83; | |
2961 if (!v83) | |
2962 SpriteObject::OnInteraction(uLayingItemID); | |
2963 v134 = 0; | |
2964 //v72 = uLayingItemID; | |
2965 v132 = pSpriteObjects[uLayingItemID].field_61; | |
2966 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2967 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2968 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2969 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2970 AttackerInfo.Add(PID(OBJECT_Item, uLayingItemID), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); | |
2971 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2972 v78 = 0; | |
2973 else | |
2974 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2975 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2976 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); | |
2977 return 0; | |
0 | 2978 } |
2396 | 2979 |
2980 case 8010: | |
2981 { | |
2982 if (PID_TYPE(a2) == 3 | |
2983 && MonsterStats::BelongsToSupertype(pActors[PID_ID(a2)].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD)) | |
2984 sub_43A97E(uLayingItemID, a2); | |
2985 ++pSpriteObjects[uLayingItemID].uType; | |
2986 //v9 = 0; | |
2987 v95 = 0; | |
2988 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2989 { | |
2990 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2991 v95 = v52; | |
2992 } | |
2993 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2994 if (!v95) | |
2995 SpriteObject::OnInteraction(uLayingItemID); | |
2996 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
2997 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2998 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2999 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3000 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3001 if (!v96) | |
3002 v97 = 0; | |
3003 else | |
3004 v97 = (signed __int16)v96 + 4; | |
3005 v92 = uLayingItemID; | |
3006 v124 = 8 * v92; | |
3007 LOBYTE(v124) = v124 | 2; | |
3008 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3009 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3010 return 0; | |
3011 } | |
3012 | |
3013 case 7030: | |
3014 case 7090: | |
3015 case 8000: | |
3016 case 8090: | |
3017 { | |
3018 sub_43A97E(uLayingItemID, a2); | |
3019 ++pSpriteObjects[uLayingItemID].uType; | |
3020 v95 = 0; | |
3021 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
3022 { | |
3023 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
3024 v95 = v52; | |
3025 } | |
3026 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3027 if (!v95) | |
3028 SpriteObject::OnInteraction(uLayingItemID); | |
3029 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
3030 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3031 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3032 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3033 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3034 if (!v96) | |
3035 v97 = 0; | |
3036 else | |
3037 v97 = (signed __int16)v96 + 4; | |
3038 v124 = 8 * uLayingItemID; | |
3039 LOBYTE(v124) = v124 | 2; | |
3040 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3041 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3042 return 0; | |
3043 } | |
3044 | |
3045 case 6040: | |
3046 case 8030: | |
3047 case 9030: | |
3048 { | |
3049 v143 = 17030; | |
3050 switch (pSpriteObjects[uLayingItemID].uType) | |
3051 { | |
3052 case 0x1798u: | |
3053 v143 = 15040; | |
3054 break; | |
3055 case 0xFAAu: | |
3056 v143 = 13010; | |
3057 break; | |
3058 case 0x2346u: | |
3059 v143 = 18030; | |
3060 break; | |
3061 } | |
3062 v138 = 1; | |
3063 if (PID_TYPE(a2) != OBJECT_Actor) | |
3064 { | |
3065 if (pSpriteObjects[uLayingItemID].uType != 9030 || pSpriteObjects[uLayingItemID].spell_skill != 4) | |
3066 { | |
3067 SpriteObject::OnInteraction(uLayingItemID); | |
3068 return 0; | |
3069 } | |
3070 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); | |
3071 if (!v138) | |
3072 { | |
3073 ++pSpriteObjects[uLayingItemID].uType; | |
3074 v112 = 0; | |
3075 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110) | |
3076 { | |
3077 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID) | |
3078 v112 = v110; | |
3079 } | |
3080 pSpriteObjects[uLayingItemID].uObjectDescID = v112; | |
3081 if (!v112) | |
3082 SpriteObject::OnInteraction(uLayingItemID); | |
3083 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3084 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3085 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3086 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3087 v113 = pSpriteObjects[uLayingItemID].uSoundID; | |
3088 if (v113) | |
3089 v114 = (signed __int16)v113 + 4; | |
3090 else | |
3091 v114 = 0; | |
3092 v115 = 8 * uLayingItemID; | |
3093 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID); | |
3094 v125 = v143 + 1; | |
3095 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0); | |
3096 } | |
3097 else | |
3098 SpriteObject::OnInteraction(uLayingItemID); | |
3099 return 0; | |
3100 } | |
3101 v106 = a2; | |
3102 v150 = 0; | |
3103 v139 = PID_ID(v106); | |
3104 v137 = pSpriteObjects[uLayingItemID].spell_level; | |
3105 v152 = pSpriteObjects[uLayingItemID].spell_skill; | |
3106 v136 = pSpriteObjects[uLayingItemID].spell_id; | |
3107 if (pSpriteObjects[uLayingItemID].uType == 9030) | |
3108 { | |
3109 v150 = 2; | |
3110 if (v152 == 2) | |
3111 { | |
3112 v150 = 3; | |
3113 } | |
3114 else | |
3115 { | |
3116 if (v152 >= 3) | |
3117 v150 = 4; | |
3118 } | |
3119 pActors[v139].uAttributes |= 0x80000; | |
3120 v107 = v135; | |
3121 } | |
3122 if (pSpriteObjects[uLayingItemID].uType == 6040) | |
3123 { | |
3124 v135 = 7; | |
3125 v107 = v135; | |
3126 } | |
3127 else | |
3128 { | |
3129 if (pSpriteObjects[uLayingItemID].uType == 8030) | |
3130 { | |
3131 v135 = 9; | |
3132 v107 = v135; | |
3133 } | |
3134 else | |
3135 { | |
3136 if (pSpriteObjects[uLayingItemID].uType != 9030) | |
3137 { | |
3138 v107 = v136; | |
3139 } | |
3140 if (pSpriteObjects[uLayingItemID].uType == 9030) | |
3141 { | |
3142 v135 = 10; | |
3143 v107 = v135; | |
3144 } | |
3145 } | |
3146 } | |
3147 if (pSpriteObjects[uLayingItemID].uType != 9030 || v152 != 4) | |
3148 { | |
3149 v108 = v139; | |
3150 if (pActors[v139].DoesDmgTypeDoDamage((DAMAGE_TYPE)v107)) | |
3151 { | |
3152 v138 = 0; | |
3153 if (pSpriteObjects[uLayingItemID].uType == 8030) | |
3154 { | |
3155 pActors[v108].uAIState = Standing; | |
3156 pActors[v108].UpdateAnimation(); | |
3157 } | |
3158 pActors[v108].pActorBuffs[v136].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v137 << 7) * 0.033333335), | |
3159 v152, v150, 0, 0); | |
3160 } | |
3161 } | |
3162 else | |
3163 { | |
3164 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); | |
3165 } | |
3166 pSpriteObjects[uLayingItemID].spell_level = 0; | |
3167 pSpriteObjects[uLayingItemID].spell_skill = 0; | |
3168 pSpriteObjects[uLayingItemID].spell_id = 0; | |
3169 if (!v138) | |
3170 { | |
3171 ++pSpriteObjects[uLayingItemID].uType; | |
3172 v112 = 0; | |
3173 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110) | |
3174 { | |
3175 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID) | |
3176 v112 = v110; | |
3177 } | |
3178 pSpriteObjects[uLayingItemID].uObjectDescID = v112; | |
3179 if (!v112) | |
3180 SpriteObject::OnInteraction(uLayingItemID); | |
3181 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3182 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3183 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3184 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3185 v113 = pSpriteObjects[uLayingItemID].uSoundID; | |
3186 if (v113) | |
3187 v114 = (signed __int16)v113 + 4; | |
3188 else | |
3189 v114 = 0; | |
3190 v115 = 8 * uLayingItemID; | |
3191 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID); | |
3192 v125 = v143 + 1; | |
3193 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0); | |
3194 } | |
3195 else | |
3196 SpriteObject::OnInteraction(uLayingItemID); | |
3197 return 0; | |
3198 } | |
3199 | |
3200 case 9040: | |
3201 { | |
3202 sub_43A97E(uLayingItemID, a2); | |
3203 ++pSpriteObjects[uLayingItemID].uType; | |
3204 v95 = 0; | |
3205 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
3206 { | |
3207 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
3208 v95 = v52; | |
3209 } | |
3210 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3211 if (!v95) | |
3212 SpriteObject::OnInteraction(uLayingItemID); | |
3213 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
3214 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3215 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3216 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3217 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3218 if (!v96) | |
3219 v97 = 0; | |
3220 else | |
3221 v97 = (signed __int16)v96 + 4; | |
3222 v124 = 8 * uLayingItemID; | |
3223 LOBYTE(v124) = v124 | 2; | |
3224 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3225 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3226 return 0; | |
3227 } | |
3228 | |
3229 /* | |
3230 case 1080: | |
3231 case 2100: | |
3232 { | |
3233 if (PID_TYPE(a2) != 3) | |
3234 { | |
3235 //v32 = 0; | |
3236 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
3237 v46 = 0; | |
3238 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146) | |
3239 { | |
3240 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID) | |
3241 v46 = v146; | |
3242 } | |
3243 pSpriteObjects[uLayingItemID].uObjectDescID = v46; | |
3244 if (!v46) | |
3245 SpriteObject::OnInteraction(uLayingItemID); | |
3246 v100 = pSpriteObjects[uLayingItemID].field_61; | |
3247 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3248 v102 = 8 * uLayingItemID; | |
3249 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
3250 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3251 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3252 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3253 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
3254 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
3255 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
3256 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
3257 v47 = 0; | |
3258 else | |
3259 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
3260 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3261 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
3262 return 0; | |
3263 } | |
3264 return 1; | |
3265 }*/ | |
3266 | |
3267 case 1080: | |
3268 case 2100: | |
3269 { | |
3270 if (PID_TYPE(a2) == 3) | |
3271 return 1; | |
3272 //else go to next case | |
3273 } | |
3274 | |
3275 case 1050: | |
3276 case 9080: | |
3277 { | |
3278 v95 = 0; | |
3279 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
3280 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146) | |
3281 { | |
3282 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID) | |
3283 v95 = v146; | |
3284 } | |
3285 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3286 if (!v95) | |
3287 SpriteObject::OnInteraction(uLayingItemID); | |
3288 v100 = pSpriteObjects[uLayingItemID].field_61; | |
3289 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3290 v102 = 8 * uLayingItemID; | |
3291 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
3292 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3293 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3294 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3295 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
3296 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
3297 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
3298 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
3299 v47 = 0; | |
3300 else | |
3301 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
3302 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3303 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
3304 return 0; | |
3305 } | |
3306 | |
3307 default: | |
3308 return 0; | |
0 | 3309 } |
2396 | 3310 |
0 | 3311 } |