Mercurial > mm7
annotate mm7_2.cpp @ 2448:7948957d9178
* sudden drop while flying fixed
* ~AudioPlayer
* free pSoundHeaders
author | zipi |
---|---|
date | Thu, 24 Jul 2014 18:14:26 +0100 |
parents | 45dcf81c5b1c |
children | 90349b8048a5 |
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 | |
2447 | 1462 pKeyActionMap = new KeyboardActionMapping; |
0 | 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 { |
1802 | 1760 pMouse->Initialize(window); |
0 | 1761 |
1762 pItemsTable = new ItemsTable; | |
1763 pItemsTable->Initialize(); | |
1764 | |
2154 | 1765 //pBitmaps_LOD->can_load_hardware_sprites = 1; |
2069 | 1766 //pBitmaps_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); |
1767 pBitmaps_LOD->SetupPalettes(5, 6, 5); | |
1768 //pIcons_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
1769 pIcons_LOD->SetupPalettes(5, 6, 5); | |
1770 //pPaletteManager->SetColorChannelInfo(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits); | |
1771 pPaletteManager->SetColorChannelInfo(5, 6, 5); | |
762 | 1772 |
1773 pPaletteManager->SetMistColor(128, 128, 128); | |
0 | 1774 pPaletteManager->RecalculateAll(); |
2154 | 1775 //pSprites_LOD->can_load_hardware_sprites = 1; |
0 | 1776 pObjectList->InitializeSprites(); |
1777 pOverlayList->InitializeSprites(); | |
2412 | 1778 |
0 | 1779 if (!bNoSound) |
1780 pSoundList->Initialize(); | |
1781 | |
1782 | |
1783 for (uint i = 0; i < 4; ++i) | |
1784 { | |
2151 | 1785 static const char *pUIAnimNames[4] = |
1786 { | |
1787 "glow03", "glow05", | |
1788 "torchA", "wizeyeA" | |
1789 }; | |
1790 static unsigned short _4E98D0[4][4] = | |
1791 { | |
1792 {479, 0, 329, 0}, | |
1793 {585, 0, 332, 0}, | |
1794 {468, 0, 0, 0}, | |
1795 {606, 0, 0, 0} | |
1796 }; | |
1797 | |
0 | 1798 pUIAnims[i]->uIconID = pIconsFrameTable->FindIcon(pUIAnimNames[i]); |
1799 pIconsFrameTable->InitializeAnimation(pUIAnims[i]->uIconID); | |
1800 | |
1801 pUIAnims[i]->uAnimLength = 0; | |
1802 pUIAnims[i]->uAnimTime = 0; | |
1803 pUIAnims[i]->x = _4E98D0[i][0]; | |
1804 pUIAnims[i]->y = _4E98D0[i][2]; | |
1805 } | |
1806 | |
2151 | 1807 for (unsigned int i = 0; i < pObjectList->uNumObjects; ++i) |
0 | 1808 { |
2151 | 1809 pObjectList->pObjects[i].uParticleTrailColor = pObjectList->pObjects[i].uParticleTrailColorB | |
1810 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorG << 8) | | |
1811 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorR << 16); | |
0 | 1812 } |
2151 | 1813 |
0 | 1814 MainMenuUI_Create(); |
1815 pGame->pStru6Instance->LoadAnimations(); | |
1816 | |
1817 for (uint i = 0; i < 7; ++i) | |
1818 { | |
2151 | 1819 char container_name[64]; |
1820 sprintf(container_name, "HDWTR%03u", i); | |
1821 pRenderer->pHDWaterBitmapIDs[i] = pBitmaps_LOD->LoadTexture(container_name); | |
0 | 1822 } |
1823 | |
1824 pNPCStats = new NPCStats; | |
110 | 1825 memset(pNPCStats->pNPCData, 0, 0x94BCu); |
0 | 1826 pNPCStats->Initialize(); |
1827 | |
1828 Initialize_GlobalEVT(); | |
762 | 1829 pBitmaps_LOD->_inlined_sub0(); |
1830 pSprites_LOD->_inlined_sub0(); | |
0 | 1831 pPaletteManager->LockAll(); |
1832 | |
1833 _mkdir("Saves"); | |
1834 for (uint i = 0; i < 5; ++i) | |
1835 for (uint j = 0; j < 6; ++j) | |
1836 { | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
1837 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
|
1838 remove(pTmpBuf.data()); |
0 | 1839 } |
1840 | |
1841 Initialize_GamesLOD_NewLOD(); | |
1051 | 1842 _576E2C_current_minimap_zoom = 512; |
0 | 1843 dword_576E28 = 9; |
1844 } | |
1845 | |
522 | 1846 void IntegrityTest() |
1847 { | |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1848 static_assert(sizeof(MovieHeader) == 44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1849 static_assert(sizeof(SoundDesc_mm6) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1850 static_assert(sizeof(SoundDesc) == 120, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1851 static_assert(sizeof(OverlayDesc) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1852 static_assert(sizeof(ChestDesc) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1853 static_assert(sizeof(ObjectDesc_mm6) == 52, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1854 static_assert(sizeof(ObjectDesc) == 56, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1855 static_assert(sizeof(DecorationDesc) == 84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1856 static_assert(sizeof(IconFrame) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1857 static_assert(sizeof(PlayerFrame) == 10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1858 static_assert(sizeof(TextureFrame) == 20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1859 static_assert(sizeof(SpriteFrame) == 60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1860 static_assert(sizeof(RenderVertexSoft) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1861 static_assert(sizeof(RenderBillboard) == 0x34, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1862 static_assert(sizeof(Texture) == 0x48, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1863 static_assert(sizeof(RGBTexture) == 0x28, "Wrong type size"); |
2154 | 1864 //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
|
1865 static_assert(sizeof(AudioPlayer) == 0xC84, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1866 static_assert(sizeof(SoundDesc) == 0x78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1867 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
|
1868 //static_assert(sizeof(VideoPlayer) == 0x108 + 4, "Wrong type size"); |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1869 static_assert(sizeof(MovieHeader) == 0x2C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1870 static_assert(sizeof(DecorationDesc) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1871 static_assert(sizeof(ObjectDesc) == 0x38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1872 static_assert(sizeof(OverlayDesc) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1873 static_assert(sizeof(ChestDesc) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1874 static_assert(sizeof(TileDesc) == 0x1A, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1875 static_assert(sizeof(MonsterDesc_mm6) == 148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1876 static_assert(sizeof(MonsterDesc) == 152, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1877 static_assert(sizeof(Timer) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1878 static_assert(sizeof(OtherOverlay) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1879 static_assert(sizeof(ItemGen) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1880 static_assert(sizeof(SpriteObject) == 0x70, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1881 static_assert(sizeof(ItemDesc) == 0x30, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1882 static_assert(sizeof(ItemsTable) == 0x117A0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1883 static_assert(sizeof(Chest) == 0x14CC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1884 static_assert(sizeof(MapInfo) == 0x44, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1885 static_assert(sizeof(SpellInfo) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1886 static_assert(sizeof(SpellData) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1887 static_assert(sizeof(SpellBuff) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1888 static_assert(sizeof(AIDirection) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1889 static_assert(sizeof(ActorJob) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1890 static_assert(sizeof(Actor) == 0x344, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1891 static_assert(sizeof(LevelDecoration) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1892 static_assert(sizeof(KeyboardActionMapping) == 0x20C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1893 static_assert(sizeof(UIAnimation) == 0xD, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1894 static_assert(sizeof(SpawnPointMM7) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1895 static_assert(sizeof(ODMFace) == 0x134, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1896 static_assert(sizeof(BSPNode) == 0x8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1897 static_assert(sizeof(BSPModel) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1898 static_assert(sizeof(OutdoorLocation) == 0x1C28C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1899 static_assert(sizeof(BLVFace) == 0x60, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1900 static_assert(sizeof(BLVFaceExtra) == 0x24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1901 static_assert(sizeof(BLVSector) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1902 static_assert(sizeof(BLVLightMM7) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1903 static_assert(sizeof(BLVDoor) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1904 static_assert(sizeof(IndoorLocation) == 0x690, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1905 //static_assert(sizeof(ODMRenderParams) == 0x74, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1906 static_assert(sizeof(Mouse) == 0x114, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1907 static_assert(sizeof(Particle_sw) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1908 static_assert(sizeof(Particle) == 0x68, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1909 static_assert(sizeof(ParticleEngine) == 0xE430, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1910 static_assert(sizeof(Lightmap) == 0xC1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1911 static_assert(sizeof(LightmapBuilder) == 0x3CBC38, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1912 static_assert(sizeof(Vis_SelectionList) == 0x2008, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1913 static_assert(sizeof(Vis) == 0x20D0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1914 static_assert(sizeof(PlayerBuffAnim) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1915 static_assert(sizeof(ProjectileAnim) == 0x1C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1916 static_assert(sizeof(stru6) == 0x5F8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1917 static_assert(sizeof(IndoorCameraD3D_Vec3) == 0x10, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1918 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
|
1919 //static_assert(sizeof(IndoorCameraD3D) == 0x1A1384, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1920 static_assert(sizeof(StationaryLight) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1921 static_assert(sizeof(LightsStack_StationaryLight_) == 0x12C8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1922 static_assert(sizeof(MobileLight) == 0x12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1923 static_assert(sizeof(LightsStack_MobileLight_) == 0x1C28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1924 static_assert(sizeof(Game) == 0xE78, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1925 static_assert(sizeof(stru141_actor_collision_object) == 0xA8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1926 static_assert(sizeof(ActionQueue) == 0x7C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1927 static_assert(sizeof(NPCData) == 0x4C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1928 static_assert(sizeof(NPCStats) == 0x17FFC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1929 static_assert(sizeof(BspRenderer) == 0x53740, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1930 static_assert(sizeof(PaletteManager) == 0x267AF0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1931 static_assert(sizeof(ViewingParams) == 0x26C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1932 //static_assert(sizeof(IndoorCamera) == 0x50, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1933 static_assert(sizeof(Bloodsplat) == 0x28, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1934 static_assert(sizeof(BloodsplatContainer) == 0xA0C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1935 static_assert(sizeof(TrailParticle) == 0x18, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1936 static_assert(sizeof(EventIndex) == 0xC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1937 static_assert(sizeof(_2devent) == 0x34, "Wrong type size"); |
2386 | 1938 static_assert(sizeof(MapsLongTimer) == 0x20, "Wrong type size"); |
1869
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1939 static_assert(sizeof(SavegameHeader) == 0x64, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1940 static_assert(sizeof(SavegameList) == 0x3138, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1941 static_assert(sizeof(StorylineText) == 0x160, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1942 static_assert(sizeof(FactionTable) == 0x1EF1, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1943 static_assert(sizeof(Decal) == 0xC20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1944 static_assert(sizeof(DecalBuilder) == 0x30C038, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1945 static_assert(sizeof(MonsterInfo) == 0x58, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1946 static_assert(sizeof(MonsterStats) == 0x5BA0, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1947 static_assert(sizeof(RenderD3D) == 0x148, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1948 // static_assert(sizeof(Render) == 0x129844, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1949 static_assert(sizeof(Player) == 0x1B3C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1950 static_assert(sizeof(PartyTimeStruct) == 0x678, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1951 static_assert(sizeof(Party) == 0x16238, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1952 static_assert(sizeof(GUIButton) == 0xBC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1953 static_assert(sizeof(GUIWindow) == 0x54, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1954 static_assert(sizeof(GUIProgressBar) == 0x1B8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1955 static_assert(sizeof(GUIFont) == 0x1020, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1956 // static_assert(sizeof(stru262_TurnBased) == 0x40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1957 static_assert(sizeof(ArcomageGame) == 0xFB, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1958 static_assert(sizeof(CastSpellInfo) == 0x14, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1959 static_assert(sizeof(ArcomageCard) == 0x6C, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1960 static_assert(sizeof(stru320) == 0x3FC, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1961 static_assert(sizeof(TravelInfo) == 0x20, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1962 static_assert(sizeof(stru336) == 0x798, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1963 static_assert(sizeof(Vec3_short_) == 6, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1964 static_assert(sizeof(BLVFace) == 96, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1965 static_assert(sizeof(BLVFaceExtra) == 36, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1966 static_assert(sizeof(BLVSector) == 116, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1967 static_assert(sizeof(LevelDecoration) == 32, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1968 static_assert(sizeof(BLVLightMM7) == 16, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1969 static_assert(sizeof(BSPNode) == 8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1970 static_assert(sizeof(SpawnPointMM7) == 24, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1971 static_assert(sizeof(DDM_DLV_Header) == 40, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1972 static_assert(sizeof(Actor) == 836, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1973 static_assert(sizeof(SpriteObject) == 112, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1974 static_assert(sizeof(Chest) == 5324, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1975 static_assert(sizeof(stru123) == 0xC8, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1976 static_assert(sizeof(BLVMapOutline) == 12, "Wrong type size"); |
bc7a6ee34316
IntegrityTest size tests changed to static_asserts
Grumpy7
parents:
1861
diff
changeset
|
1977 static_assert(sizeof(LODSprite) == 0x28, "Wrong type size"); |
522 | 1978 } |
1979 | |
2277 | 1980 bool new_sky = false; //íîâîå íåáî(òðåáóþòñÿ òåêñòóðêè) |
1981 int max_flight_height = 4000; //ìàêñèìàëüíàÿ âûñîòà ïîë¸òà | |
2034 | 1982 |
2037
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1983 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1984 |
7a9477135943
Renamed Math.h -> OurMath.h (file resolution was sometimes ambiguous)
Nomad
parents:
2035
diff
changeset
|
1985 |
0 | 1986 //----- (00462C94) -------------------------------------------------------- |
1987 bool MM_Main(const wchar_t *pCmdLine) | |
1988 { | |
522 | 1989 IntegrityTest(); |
1706 | 1990 |
246 | 1991 char test[1024]; |
522 | 1992 sprintfex(test, "^Pi[%s]: çíàõàð^R[ü;êà;]", "Çîëòàí"); |
1993 | |
2052 | 1994 lua = new LuaVM; |
1995 lua->Initialize(); | |
2031 | 1996 |
1052 | 1997 bool bNoMargareth = false; |
0 | 1998 if (pCmdLine && *pCmdLine) |
1999 { | |
2061 | 2000 //if (wcsstr(pCmdLine, L"-usedefs")) |
2001 // bDebugResouces = 1; | |
0 | 2002 if (wcsstr(pCmdLine, L"-window")) |
2061 | 2003 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 2004 |
2005 if (wcsstr(pCmdLine, L"-nointro")) | |
2006 bNoIntro = true;//dword_6BE364_game_settings_1 |= 4; | |
2007 if (wcsstr(pCmdLine, L"-nologo")) | |
2008 bNoLogo = true;//dword_6BE364_game_settings_1 |= 8; | |
2009 if (wcsstr(pCmdLine, L"-nosound")) | |
2010 bNoSound = true; //dword_6BE364_game_settings_1 |= 0x10; | |
2011 | |
2012 bWalkSound = ReadWindowsRegistryInt("WalkSound", 1) != 0; | |
2013 if (wcsstr(pCmdLine, L"-nowalksound")) | |
2014 bWalkSound = false;//dword_6BE364_game_settings_1 |= 0x20; | |
256 | 2015 if (wcsstr(pCmdLine, L"-novideo")) |
0 | 2016 { |
2061 | 2017 dword_6BE364_game_settings_1 |= GAME_SETTINGS_NO_HOUSE_ANIM; |
0 | 2018 bNoVideo = true; |
2019 } | |
2020 if (wcsstr(pCmdLine, L"-nocd")) | |
2021 bNoCD = true; | |
168 | 2022 if (wcsstr(pCmdLine, L"-new_sky")) |
2023 new_sky = true; | |
1052 | 2024 if (wcsstr(pCmdLine, L"-nomarg")) |
2025 bNoMargareth = true; | |
0 | 2026 } |
2027 | |
731 | 2028 /*v8 = _4AC1C9_get_cpu_speed(0, (Vec4_int_ *)a2); |
0 | 2029 Rect.left = *(int *)v8; |
2030 Rect.top = *(int *)(v8 + 4); | |
2031 Rect.right = *(int *)(v8 + 8); | |
2032 Rect.bottom = *(int *)(v8 + 12); | |
731 | 2033 uCPUSpeed = Rect.bottom;*/ |
2034 uCPUSpeed = 2048; // about 2GHz | |
4 | 2035 |
2416 | 2036 //_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF );//Ritor1: for memory test(äëÿ ïðîâåðêè ïàìÿòè) |
2447 | 2037 |
2215
e9625ad08541
fog fix and change 640,480 - window->GetWidth(), window->GetHeight()
Ritor1
parents:
2212
diff
changeset
|
2038 if (!MM7_Initialize(640, 480))//çàäà¸òñÿ ðàçìåð îêíà |
734 | 2039 { |
2040 Log::Warning(L"MM init: failed"); | |
2041 pGame->Deinitialize(); | |
2042 return 1; | |
2043 } | |
0 | 2044 |
2216 | 2045 pEventTimer->Pause(); |
2046 | |
2047 SetUserInterface(PartyAlignment_Neutral, false); | |
2290 | 2048 ShowLogoVideo(); |
2049 //ShowIntroVideo_and_LoadingScreen(); | |
2216 | 2050 WriteWindowsRegistryInt("Ran once", 1); |
2051 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000; | |
2052 pGame->InitializeGammaController(); | |
2053 SecondaryInitialization(); | |
2054 pRenderer->SetRasterClipRect(0, 0, window->GetWidth() - 1, window->GetHeight() - 1); | |
2055 FinalInitialization(); | |
2279 | 2056 |
2057 //Ritor1: include | |
2278 | 2058 MMT_MainMenu_Loop(); |
2279 | 2059 |
2394 | 2060 Log::Warning(L"MM: entering main loop"); |
2216 | 2061 while ( 1 ) |
2062 { | |
2063 MainMenuWindow* main_menu_window = MainMenuWindow::Create(); | |
2064 window->AddControl(main_menu_window); | |
2065 MainMenu_Loop(); | |
2066 uGameState = GAME_STATE_PLAYING; | |
0 | 2067 while ( 1 ) |
2068 { | |
2216 | 2069 if (uGameState == GAME_FINISHED || GetCurrentMenuID() == MENU_EXIT_GAME) |
2070 { | |
2071 pGame->Deinitialize(); | |
2072 return true; | |
2073 } | |
2074 | |
2075 if (GetCurrentMenuID() == MENU_NEWGAME) | |
0 | 2076 { |
2216 | 2077 if ( pAudioPlayer->hAILRedbook ) |
2078 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2079 pParty->Reset(); | |
2080 pOtherOverlayList->Reset(); | |
2081 strcpy(pCurrentMapName, pStartingMapName); | |
2082 pParty->CreateDefaultParty(0); | |
2083 PlayerCreationUI_Initialize(); | |
2084 if ( PlayerCreationUI_Loop() ) | |
982 | 2085 { |
0 | 2086 DeleteCCharFont(); |
2216 | 2087 break; |
2 | 2088 } |
2216 | 2089 DeleteCCharFont(); |
2090 bFlashQuestBook = true; | |
2091 PlayFullscreenMovie(MOVIE_Emerald); | |
2092 //pGame->pCShow->PlayMovie(MOVIE_Emerald, 0); | |
2093 SaveNewGame(); | |
2094 if (bNoMargareth) | |
2095 _449B7E_toggle_bit(pParty->_quest_bits, PARTY_QUEST_EMERALD_MARGARETH_OFF, 1); | |
2096 pGame->Loop(); | |
2097 if (uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU) | |
101 | 2098 { |
2099 SetCurrentMenuID(MENU_NEWGAME); | |
982 | 2100 uGameState = GAME_STATE_PLAYING; |
0 | 2101 continue; |
101 | 2102 } |
2216 | 2103 else if (uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU) |
2104 break; | |
2105 assert(false && "Invalid game state"); | |
2106 } | |
2107 if (GetCurrentMenuID() == MENU_CREDITS) | |
2108 { | |
2109 if ( pAudioPlayer->hAILRedbook ) | |
2110 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2111 MainMenuUI_Credits_Loop(); | |
2112 break; | |
2113 } | |
2114 if (GetCurrentMenuID() == MENU_5 || GetCurrentMenuID() == MENU_LoadingProcInMainMenu) | |
2115 { | |
2116 uGameState = GAME_STATE_PLAYING; | |
2117 pGame->Loop(); | |
2118 } | |
2119 else | |
2120 { | |
2121 if (GetCurrentMenuID() == MENU_DebugBLVLevel) | |
907 | 2122 { |
2216 | 2123 pMouse->ChangeActivation(0); |
2124 pParty->Reset(); | |
2125 pParty->CreateDefaultParty(1); | |
2126 | |
2127 __debugbreak(); | |
2128 /*extern void CreateDefaultBLVLevel(); | |
2129 CreateDefaultBLVLevel(); | |
2130 | |
2131 OPENFILENAMEA ofn; | |
2132 if ( !GetOpenFileNameA((LPOPENFILENAMEA)&ofn) ) | |
2133 { | |
2134 pMouse->ChangeActivation(1); | |
2135 break; | |
2136 } | |
2137 _chdir("..\\"); | |
2138 strcpy(pCurrentMapName, ofn.lpstrFileTitle);*/ | |
2139 pMouse->ChangeActivation(1); | |
2140 pGame->Loop(); | |
907 | 2141 } |
0 | 2142 } |
2216 | 2143 if ( uGameState == GAME_STATE_LOADING_GAME ) |
2144 { | |
2145 SetCurrentMenuID(MENU_5); | |
2146 uGameState = GAME_STATE_PLAYING; | |
2147 continue; | |
2148 } | |
2149 if ( uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU ) | |
0 | 2150 { |
2216 | 2151 SetCurrentMenuID(MENU_NEWGAME); |
2152 uGameState = GAME_STATE_PLAYING; | |
2153 continue; | |
2154 } | |
2155 if ( uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU)// from the loaded game | |
2156 { | |
2157 pAudioPlayer->StopChannels(-1, -1); | |
2158 uGameState = GAME_STATE_PLAYING; | |
2159 break; | |
0 | 2160 } |
2161 } | |
2216 | 2162 if (!bNoSound && pAudioPlayer->hAILRedbook) |
2163 { | |
2164 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f); | |
2165 AIL_redbook_stop(pAudioPlayer->hAILRedbook); | |
2166 unsigned int startms, end_ms; | |
2167 AIL_redbook_track_info(pAudioPlayer->hAILRedbook, 14, &startms, &end_ms); | |
2168 AIL_redbook_play(pAudioPlayer->hAILRedbook, startms + 1, end_ms); | |
2169 } | |
2170 } | |
2050 | 2171 //lua_close(L); |
0 | 2172 pGame->Deinitialize(); |
734 | 2173 return 1; |
0 | 2174 } |
2175 | |
2176 | |
2177 //----- (00466082) -------------------------------------------------------- | |
2178 void MM6_Initialize(const wchar_t *pIniFilename) | |
2179 { | |
2180 //int v0; // eax@1 | |
2151 | 2181 //UINT v1; // eax@18 |
0 | 2182 size_t v2; // eax@31 |
2183 size_t v3; // ebx@32 | |
2184 size_t v4; // edi@36 | |
2185 //char v5[120]; // [sp+Ch] [bp-17Ch]@1 | |
2186 //char String[120]; // [sp+84h] [bp-104h]@32 | |
2187 char pDefaultGroundTexture[16]; // [sp+FCh] [bp-8Ch]@32 | |
2188 //char pIniFilename[120]; // [sp+10Ch] [bp-7Ch]@1 | |
2189 unsigned int v9; // [sp+184h] [bp-4h]@28 | |
2190 | |
2191 //_getcwd(v5, 120); | |
2192 //sprintfex(pIniFilename, "%s\\mm6.ini", v5); | |
2193 viewparams = new ViewingParams; | |
819 | 2194 game_viewport_x = viewparams->uScreen_topL_X = GetPrivateProfileIntW(L"screen", L"vx1", 8, pIniFilename); |
2195 game_viewport_y = viewparams->uScreen_topL_Y = GetPrivateProfileIntW(L"screen", L"vy1", 8, pIniFilename); | |
2196 game_viewport_z = viewparams->uScreen_BttmR_X = GetPrivateProfileIntW(L"screen", L"vx2", 468, pIniFilename); | |
2197 game_viewport_w = viewparams->uScreen_BttmR_Y = GetPrivateProfileIntW(L"screen", L"vy2", 351, pIniFilename); | |
2198 game_viewport_width = game_viewport_z - game_viewport_x; | |
2199 game_viewport_height = game_viewport_w - game_viewport_y + 1; | |
0 | 2200 |
2201 | |
2202 pAudioPlayer = new AudioPlayer; | |
2203 pAudioPlayer->uMixerChannels = GetPrivateProfileIntW(L"settings", L"mixerchannels", 16, pIniFilename); | |
2204 if ( pAudioPlayer->uMixerChannels > 16 ) | |
2205 pAudioPlayer->uMixerChannels = 16; | |
2206 | |
2207 | |
2208 if (GetPrivateProfileIntW(L"debug", L"nomonster", 0, pIniFilename)) | |
2061 | 2209 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_ACTORS; |
2151 | 2210 if (ReadWindowsRegistryInt("startinwindow", 0)) |
2061 | 2211 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW; |
0 | 2212 if (GetPrivateProfileIntW(L"debug", L"showFR", 0, pIniFilename)) |
2061 | 2213 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_0002_SHOW_FR; |
0 | 2214 if (GetPrivateProfileIntW(L"debug", L"nodamage", 0, pIniFilename)) |
2061 | 2215 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DAMAGE; |
0 | 2216 if (GetPrivateProfileIntW(L"debug", L"nodecoration", 0, pIniFilename)) |
2061 | 2217 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DECORATIONS; |
0 | 2218 |
2219 wchar_t pStartingMapNameW[1024]; | |
2220 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
|
2221 sprintf(pStartingMapName, "%S", pStartingMapNameW); |
0 | 2222 |
2223 v9 = 0; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2224 if ( strlen(pStartingMapName) ) |
0 | 2225 { |
2226 do | |
2227 { | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2228 if ( pStartingMapName[v9] == ' ' ) |
0 | 2229 pStartingMapName[v9] = 0; |
2230 ++v9; | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1467
diff
changeset
|
2231 v2 = strlen(pStartingMapName); |
0 | 2232 } |
2233 while ( v9 < v2 ); | |
2234 } | |
2235 | |
1637 | 2236 pODMRenderParams = new ODMRenderParams; |
2237 pODMRenderParams->outdoor_no_mist = GetPrivateProfileIntW(L"debug", L"noMist", 0, pIniFilename); | |
2238 pODMRenderParams->bNoSky = GetPrivateProfileIntW(L"outdoor", L"nosky", 0, pIniFilename); | |
2239 pODMRenderParams->bDoNotRenderDecorations = GetPrivateProfileIntW(L"render", L"nodecorations", 0, pIniFilename); | |
2240 pODMRenderParams->outdoor_no_wavy_water = GetPrivateProfileIntW(L"outdoor", L"nowavywater", 0, pIniFilename); | |
0 | 2241 outdoor_grid_band_1 = GetPrivateProfileIntW(L"outdoor", L"gridband1", 10, pIniFilename); |
2242 outdoor_grid_band_2 = GetPrivateProfileIntW(L"outdoor", L"gridband2", 15, pIniFilename); | |
2243 outdoor_grid_band_3 = GetPrivateProfileIntW(L"outdoor", L"gridband3", 25, pIniFilename); | |
1637 | 2244 pODMRenderParams->terrain_gamma = GetPrivateProfileIntW(L"outdoor", L"ter_gamma", 0, pIniFilename); |
2245 pODMRenderParams->building_gamme = GetPrivateProfileIntW(L"outdoor", L"bld_gamma", 0, pIniFilename); | |
2246 pODMRenderParams->shading_dist_shade = GetPrivateProfileIntW(L"shading", L"dist_shade", 2048, pIniFilename); | |
2247 pODMRenderParams->shading_dist_shademist = GetPrivateProfileIntW(L"shading", L"dist_shademist", 4096, pIniFilename); | |
1765 | 2248 |
2277 | 2249 //int dist = 0x2000; |
2250 | |
2251 //if ( new_draw_object_dist ) | |
2252 //dist = 0x6000; | |
2253 pODMRenderParams->shading_dist_mist = GetPrivateProfileIntW(L"shading", L"dist_mist", 0x2000, pIniFilename);//äàëüíîñòü îòðèñîâêè 0x2000 | |
0 | 2254 |
2255 wchar_t pDefaultSkyTextureW[1024]; | |
2256 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
|
2257 sprintf(pDefaultSkyTexture.data(), "%S", pDefaultSkyTextureW); |
0 | 2258 |
2259 wchar_t pDefaultGroundTextureW[1024]; | |
2260 GetPrivateProfileStringW(L"textures", L"default", L"dirt", pDefaultGroundTextureW, 0x10u, pIniFilename); | |
2261 sprintf(pDefaultGroundTexture, "%S", pDefaultGroundTextureW); | |
2262 | |
2263 wchar_t pFloat[1024]; | |
2264 GetPrivateProfileStringW(L"debug", L"recmod1", L"1.0", pFloat, 0x10u, pIniFilename); | |
2265 swscanf(pFloat, L"%f", &flt_6BE3A4_debug_recmod1); | |
2266 | |
2267 GetPrivateProfileStringW(L"debug", L"recmod2", L"1.0", pFloat, 0x10u, pIniFilename); | |
2268 swscanf(pFloat, L"%f", &flt_6BE3A8_debug_recmod2); | |
2269 | |
2270 flt_6BE3AC_debug_recmod1_x_1_6 = flt_6BE3A4_debug_recmod1 * 1.666666666666667; | |
2271 | |
2272 v3 = 0; | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
2273 if ( strlen(pDefaultSkyTexture.data()) ) |
0 | 2274 { |
2275 do | |
2276 { | |
2277 if ( pDefaultSkyTexture[v3] == ' ' ) | |
2278 pDefaultSkyTexture[v3] = 0; | |
2279 ++v3; | |
2280 } | |
1205
8c02e6f74b29
arrays to std::arrays phase 2 - mm7_data.h converted
Grumpy7
parents:
1203
diff
changeset
|
2281 while ( v3 < strlen(pDefaultSkyTexture.data()) ); |
0 | 2282 } |
2283 v4 = 0; | |
2284 if ( strlen(pDefaultGroundTexture) ) | |
2285 { | |
2286 do | |
2287 { | |
2288 if ( pDefaultGroundTexture[v4] == ' ' ) | |
2289 pDefaultGroundTexture[v4] = 0; | |
2290 ++v4; | |
2291 } | |
2292 while ( v4 < strlen(pDefaultGroundTexture) ); | |
2293 } | |
2294 | |
2295 MM7Initialization(); | |
2296 } | |
2297 | |
2298 //----- (004666D5) -------------------------------------------------------- | |
2151 | 2299 void MM7Initialization() |
0 | 2300 { |
2301 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) | |
2302 { | |
2151 | 2303 /*if (byte_6BE388_graphicsmode == 0) |
0 | 2304 { |
2305 outdoor_grid_band_1 = 10; | |
2306 outdoor_grid_band_2 = 15; | |
2307 outdoor_grid_band_3 = 20; | |
1637 | 2308 pODMRenderParams->shading_dist_mist = 8192; |
2309 pODMRenderParams->bNoSky = false; | |
0 | 2310 LOBYTE(viewparams->field_20) = 0; |
2151 | 2311 }*/ |
1637 | 2312 pODMRenderParams->shading_dist_shade = 2048; |
2313 pODMRenderParams->terrain_gamma = 0; | |
2314 pODMRenderParams->building_gamme = 0; | |
2315 pODMRenderParams->shading_dist_shademist = 4096; | |
2316 pODMRenderParams->outdoor_no_wavy_water = 0; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
2317 //_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
|
2318 { |
1637 | 2319 pODMRenderParams->outdoor_grid_band_3 = outdoor_grid_band_3; |
2320 pODMRenderParams->uPickDepth = outdoor_grid_band_3 * 512; | |
1410
38df78aba732
deleted stru220.h and stru220 (bezier terrain stuff)
Nomad
parents:
1409
diff
changeset
|
2321 } |
0 | 2322 } |
2323 else | |
2324 LOBYTE(viewparams->field_20) = 0; | |
2101 | 2325 pParty->uFlags |= 2; |
692 | 2326 viewparams->uSomeY = viewparams->uScreen_topL_Y; |
2327 viewparams->uSomeX = viewparams->uScreen_topL_X; | |
2328 viewparams->uSomeZ = viewparams->uScreen_BttmR_X; | |
2329 viewparams->uSomeW = viewparams->uScreen_BttmR_Y; | |
2330 | |
2331 pViewport->SetScreen(viewparams->uScreen_topL_X, viewparams->uScreen_topL_Y, viewparams->uScreen_BttmR_X, viewparams->uScreen_BttmR_Y); | |
0 | 2332 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor ) |
1637 | 2333 pODMRenderParams->Initialize(); |
0 | 2334 } |
2335 | |
2336 //----- (00466C40) -------------------------------------------------------- | |
2337 const wchar_t *MENU_STATE_to_string(MENU_STATE m) | |
2338 { | |
2339 switch (m) | |
2340 { | |
982 | 2341 case -1: return L"-1"; |
2342 case MENU_MAIN: return L"MENU_MAIN"; | |
2343 case MENU_NEWGAME: return L"MENU_NEWGAME"; | |
2344 case MENU_CREDITS: return L"MENU_CREDITS"; | |
2345 case MENU_SAVELOAD: return L"MENU_SAVELOAD"; | |
2346 case MENU_EXIT_GAME: return L"MENU_EXIT_GAME"; | |
2347 case MENU_5: return L"MENU_5"; | |
2348 case MENU_CREATEPARTY: return L"MENU_CREATEPARTY"; | |
165 | 2349 case MENU_NAMEPANELESC: return L"MENU_NAMEPANELESC"; |
982 | 2350 case MENU_CREDITSPROC: return L"MENU_CREDITSPROC"; |
961 | 2351 case MENU_LoadingProcInMainMenu: return L"MENU_LoadingProcInMainMenu"; |
1458 | 2352 case MENU_DebugBLVLevel: return L"MENU_DebugBLVLevel"; |
165 | 2353 case MENU_CREDITSCLOSE: return L"MENU_CREDITSCLOSE"; |
2278 | 2354 case MENU_MMT_MAIN_MENU: return L"MENU_MMT_MAIN_MENU"; |
982 | 2355 default: return L"unk"; |
0 | 2356 }; |
2357 }; | |
2358 void SetCurrentMenuID(MENU_STATE uMenu) | |
2359 { | |
2006 | 2360 sCurrentMenuID = uMenu; |
0 | 2361 |
2393 | 2362 Log::Warning(L"CurrentMenu = %s \n", MENU_STATE_to_string(uMenu)); |
0 | 2363 } |
2364 | |
2365 //----- (00466CA0) -------------------------------------------------------- | |
2366 MENU_STATE GetCurrentMenuID() | |
2367 { | |
2006 | 2368 return sCurrentMenuID; |
0 | 2369 } |
2370 | |
2371 | |
2372 //----- (0046BDA8) -------------------------------------------------------- | |
1458 | 2373 unsigned int GetGravityStrength() |
0 | 2374 { |
2375 int v0; // eax@1 | |
2376 | |
2377 v0 = ~LOBYTE(pGame->uFlags2) & 8; | |
2378 LOBYTE(v0) = v0 | 2; | |
2379 return (unsigned int)v0 >> 1; | |
2380 } | |
2381 | |
2382 //----- (0046BDC0) -------------------------------------------------------- | |
1458 | 2383 void UpdateUserInput_and_MapSpecificStuff() |
0 | 2384 { |
2061 | 2385 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME) |
0 | 2386 { |
2061 | 2387 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME; |
2388 return; | |
0 | 2389 } |
2061 | 2390 |
630 | 2391 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) |
0 | 2392 BLV_UpdateUserInputAndOther(); |
630 | 2393 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor) |
0 | 2394 ODM_UpdateUserInputAndOther(); |
630 | 2395 |
783 | 2396 area_of_effect__damage_evaluate(); |
0 | 2397 } |
2398 | |
2399 //----- (0046BFFA) -------------------------------------------------------- | |
2400 bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2) | |
2401 { | |
2101 | 2402 ObjectDesc *object; // ebx@1 |
0 | 2403 unsigned int v8; // eax@19 |
2404 signed int v10; // ebx@19 | |
2405 char *v11; // edx@20 | |
2406 unsigned __int16 v12; // ax@23 | |
2407 int v13; // eax@27 | |
2334 | 2408 // unsigned int v14; // ebx@33 |
0 | 2409 int v16; // eax@36 |
2334 | 2410 // unsigned int v17; // eax@37 |
0 | 2411 __int16 v18; // di@37 |
2412 signed int v19; // edx@37 | |
2334 | 2413 // unsigned __int8 v20; // sf@37 |
2414 // char *v21; // ecx@38 | |
0 | 2415 unsigned __int16 v22; // ax@41 |
2334 | 2416 // unsigned int v23; // eax@46 |
0 | 2417 signed int v24; // ebx@46 |
2418 char *v25; // edx@47 | |
2425 | 2419 // int v26; // edx@54 |
2420 // int v27; // edx@55 | |
2421 // int v28; // edx@56 | |
2422 // int v29; // edx@57 | |
2334 | 2423 // unsigned __int16 v30; // ax@60 |
2424 // unsigned int v31; // ecx@60 | |
2425 // int v32; // edi@60 | |
2426 // unsigned int v33; // eax@65 | |
0 | 2427 signed int v34; // edx@65 |
2334 | 2428 // char *v35; // ecx@66 |
0 | 2429 unsigned __int16 v36; // ax@69 |
2430 int v37; // ST14_4@72 | |
2431 int v38; // eax@72 | |
2432 int v39; // ST10_4@72 | |
2433 int v40; // ST0C_4@72 | |
2425 | 2434 //int v41; // edx@76 |
2435 // int v42; // edx@77 | |
2436 // int v43; // edx@78 | |
0 | 2437 unsigned __int8 v44; // zf@79 |
2425 | 2438 // int v45; // edx@79 |
2439 // unsigned __int16 v46; // ax@80 | |
0 | 2440 int v47; // eax@81 |
2425 | 2441 // int v48; // edx@87 |
2442 // int v49; // edx@88 | |
2443 // int v50; // edx@89 | |
0 | 2444 signed int v52; // ebx@93 |
2334 | 2445 // char *v53; // edx@94 |
2446 // unsigned __int16 v54; // ax@98 | |
2447 // unsigned int v55; // ecx@98 | |
0 | 2448 signed int v56; // ebx@98 |
2334 | 2449 // char *v57; // edx@99 |
0 | 2450 unsigned __int16 v58; // ax@102 |
2451 unsigned __int16 v59; // ax@107 | |
2334 | 2452 // unsigned int v60; // ecx@107 |
0 | 2453 signed int v61; // ebx@107 |
2334 | 2454 // char *v62; // edx@108 |
0 | 2455 unsigned __int16 v63; // ax@111 |
2456 int v64; // ebx@114 | |
2457 signed int v65; // eax@114 | |
2334 | 2458 // unsigned int v66; // edi@123 |
2459 // unsigned __int16 v67; // ax@124 | |
2460 // unsigned int v68; // ecx@124 | |
0 | 2461 signed int v69; // ebx@124 |
2334 | 2462 // char *v70; // edx@125 |
0 | 2463 unsigned __int16 v71; // ax@128 |
2464 unsigned int v72; // ebx@131 | |
2465 int v78; // eax@133 | |
2425 | 2466 // char v79; // zf@139 |
2334 | 2467 // unsigned int v80; // eax@140 |
0 | 2468 signed int v81; // edx@140 |
2334 | 2469 // char *v82; // ecx@141 |
0 | 2470 unsigned __int16 v83; // ax@144 |
2334 | 2471 // unsigned __int16 v84; // ax@151 |
2472 // unsigned int v85; // ecx@151 | |
0 | 2473 signed int v86; // ebx@151 |
2334 | 2474 // char *v87; // edx@152 |
0 | 2475 unsigned __int16 v88; // ax@155 |
2476 unsigned int v89; // eax@158 | |
2477 int v90; // ST34_4@159 | |
2478 int v91; // eax@159 | |
2479 unsigned int v92; // eax@163 | |
2334 | 2480 // unsigned int v93; // eax@177 |
2481 // char *v94; // ecx@178 | |
0 | 2482 unsigned __int16 v95; // ax@181 |
2483 unsigned __int16 v96; // ax@184 | |
2484 int v97; // eax@185 | |
2334 | 2485 // unsigned __int16 v98; // ax@191 |
0 | 2486 char v100; // ST18_1@198 |
2487 int v102; // eax@198 | |
2488 signed int v106; // eax@208 | |
2489 unsigned int v107; // edx@220 | |
2490 signed int v108; // ebx@225 | |
2334 | 2491 // unsigned int v109; // eax@234 |
0 | 2492 signed int v110; // ebx@234 |
2334 | 2493 // char *v111; // ecx@235 |
0 | 2494 unsigned __int16 v112; // ax@238 |
2495 unsigned __int16 v113; // si@241 | |
2496 int v114; // eax@242 | |
2497 int v115; // eax@245 | |
2334 | 2498 // unsigned __int16 v117; // ax@251 |
2499 // unsigned int v118; // ecx@251 | |
0 | 2500 signed int v119; // ebx@251 |
2334 | 2501 // char *v120; // edx@252 |
0 | 2502 unsigned __int16 v121; // ax@255 |
2334 | 2503 // unsigned int v122; // eax@260 |
2504 // char *v123; // edx@261 | |
0 | 2505 int v124; // eax@267 |
2506 int v125; // [sp-20h] [bp-4Ch]@28 | |
2507 char v132; // [sp-8h] [bp-34h]@131 | |
2508 char v134; // [sp-4h] [bp-30h]@131 | |
2509 signed int v135; // [sp-4h] [bp-30h]@217 | |
2510 int v136; // [sp+Ch] [bp-20h]@208 | |
2511 int v137; // [sp+10h] [bp-1Ch]@208 | |
2512 signed int v138; // [sp+14h] [bp-18h]@207 | |
2513 signed int v139; // [sp+18h] [bp-14h]@208 | |
2334 | 2514 // char *v140; // [sp+1Ch] [bp-10h]@61 |
0 | 2515 signed int v141; // [sp+1Ch] [bp-10h]@117 |
2516 unsigned int v142; // [sp+1Ch] [bp-10h]@158 | |
2517 signed int v143; // [sp+1Ch] [bp-10h]@172 | |
2334 | 2518 // char *v144; // [sp+1Ch] [bp-10h]@192 |
0 | 2519 signed int v146; // [sp+20h] [bp-Ch]@60 |
2520 int v147; // [sp+20h] [bp-Ch]@72 | |
2521 signed int v148; // [sp+20h] [bp-Ch]@158 | |
2522 unsigned __int16 v150; // [sp+20h] [bp-Ch]@208 | |
2523 signed int v152; // [sp+24h] [bp-8h]@208 | |
2101 | 2524 |
2525 //ïðèìåíåíèå: ôàåðáîëò â õðàìå ëóíû | |
2526 object = &pObjectList->pObjects[pSpriteObjects[uLayingItemID].uObjectDescID]; | |
2527 //v151 = PID_TYPE(a2); | |
848 | 2528 if ( PID_TYPE(a2) == OBJECT_Actor) |
2529 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2530 if ( PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Actor |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2531 && !pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].GetActorsRelation(&pActors[PID_ID(a2)]) ) |
0 | 2532 return 1; |
2533 } | |
2534 else | |
2535 { | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2536 if ( PID_TYPE(a2) == OBJECT_Player && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) == OBJECT_Player) |
0 | 2537 return 1; |
2538 } | |
2539 if ( pParty->bTurnBasedModeOn == 1 ) | |
2540 { | |
2101 | 2541 if ( pSpriteObjects[uLayingItemID].uAttributes & 4 ) |
0 | 2542 { |
1450 | 2543 --pTurnEngine->pending_actions; |
2101 | 2544 pSpriteObjects[uLayingItemID].uAttributes &= 0xFFFB; |
0 | 2545 } |
2546 } | |
2101 | 2547 if ( PID_TYPE(a2) == OBJECT_BModel && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) != OBJECT_Player) |
1280 | 2548 { |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2549 if (PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid) < 500) //bugfix PID_ID(v2->spell_caster_pid)==1000 |
2166 | 2550 pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].uAttributes |= 0x40000; |
1280 | 2551 } |
2552 | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2553 //v6 = v2->uType; |
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2554 //v7 = v2->uType; |
2396 | 2555 |
2556 switch (pSpriteObjects[uLayingItemID].uType) | |
2557 { | |
2558 | |
2559 case 1060: | |
2560 case 2030: | |
2561 case 9010: | |
2562 { | |
2563 //v9 = 0; | |
2564 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2)) | |
2565 return 1; | |
2566 if (PID_TYPE(a2) != 2) | |
2567 { | |
2568 sub_43A97E(uLayingItemID, a2); | |
2569 ++pSpriteObjects[uLayingItemID].uType; | |
2570 v95 = 0; | |
2571 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2572 { | |
2573 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2574 v95 = v52; | |
2575 } | |
2576 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2577 if (!v95) | |
2578 SpriteObject::OnInteraction(uLayingItemID); | |
2579 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2580 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2581 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2582 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2583 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2584 v97 = 0; | |
2585 else | |
2586 v97 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2587 v124 = 8 * uLayingItemID; | |
2588 LOBYTE(v124) = v124 | 2; | |
2589 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2590 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
2591 return 0; | |
2592 } | |
2593 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
2594 v121 = 0; | |
2595 for (v119 = 0; v119 < (signed int)pObjectList->uNumObjects; ++v119) | |
2596 { | |
2597 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v119].uObjectID) | |
2598 v121 = v119; | |
2599 } | |
2600 pSpriteObjects[uLayingItemID].uObjectDescID = v121; | |
2601 if (!v121) | |
2602 SpriteObject::OnInteraction(uLayingItemID); | |
2603 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2604 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2605 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2606 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2607 v13 = 8 * uLayingItemID; | |
2608 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2609 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2610 return 0; | |
2611 } | |
2612 | |
2613 | |
2614 case 500: | |
2615 case 505: | |
2616 case 510: | |
2617 case 515: | |
2618 case 520: | |
2619 case 525: | |
2620 case 530: | |
2621 case 535: | |
2622 case 540: | |
2623 { | |
2624 sub_43A97E(uLayingItemID, a2); | |
2625 ++pSpriteObjects[uLayingItemID].uType; | |
2626 v12 = 0; | |
2627 for (v10 = 0; v10 < (signed int)pObjectList->uNumObjects; ++v10) | |
2628 { | |
2629 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v10].uObjectID) | |
2630 v12 = v10; | |
2631 } | |
2632 pSpriteObjects[uLayingItemID].uObjectDescID = v12; | |
2633 if (!v12) | |
2634 SpriteObject::OnInteraction(uLayingItemID); | |
2635 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2636 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2637 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2638 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2639 if (pSpriteObjects[uLayingItemID].uType == 555) | |
2640 { | |
2641 v13 = 8 * uLayingItemID; | |
2642 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2643 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2644 } | |
2645 return 0; | |
2646 } | |
2647 | |
2648 case 545: | |
2649 case 550: | |
2650 { | |
2651 if (pSpriteObjects[uLayingItemID].stru_24.uItemID != 405 && pSpriteObjects[uLayingItemID].stru_24.uSpecEnchantmentType != 3) | |
2652 { | |
2653 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2654 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2655 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2656 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2657 sub_43A97E(uLayingItemID, a2); | |
2658 SpriteObject::OnInteraction(uLayingItemID); | |
2659 if (pSpriteObjects[uLayingItemID].uSoundID == 0) | |
2660 v16 = 0; | |
2661 else | |
2662 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2663 v124 = 8 * uLayingItemID; | |
2664 LOBYTE(v124) = v124 | 2; | |
2665 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id] + 1; | |
2666 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2667 return 0; | |
2668 } | |
2669 v18 = 0; | |
2670 pSpriteObjects[uLayingItemID].uType = 600; | |
2671 v22 = 0; | |
2672 for (v19 = 0; v19 < (signed int)pObjectList->uNumObjects; ++v19) | |
2673 { | |
2674 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v19].uObjectID) | |
2675 v22 = v19; | |
2676 } | |
2677 pSpriteObjects[uLayingItemID].uObjectDescID = v22; | |
2678 if (!v22) | |
2679 SpriteObject::OnInteraction(uLayingItemID); | |
2680 pSpriteObjects[uLayingItemID].vVelocity.z = v18; | |
2681 pSpriteObjects[uLayingItemID].vVelocity.y = v18; | |
2682 pSpriteObjects[uLayingItemID].vVelocity.x = v18; | |
2683 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; | |
2684 v12 = 0; | |
2685 for (v10; v10 < (signed int)v8; ++v10) | |
2686 { | |
2687 v11 += 56; | |
2688 if (pSpriteObjects[uLayingItemID].uType != *(short *)v11) | |
2689 v12 = v10; | |
2690 } | |
2691 pSpriteObjects[uLayingItemID].uObjectDescID = v12; | |
2692 if (!v12) | |
2693 SpriteObject::OnInteraction(uLayingItemID); | |
2694 v44 = pSpriteObjects[uLayingItemID].uType == 555; | |
2695 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2696 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2697 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2698 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2699 if (!v44) | |
2700 { | |
2701 v13 = 8 * uLayingItemID; | |
2702 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID); | |
2703 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0); | |
2704 return 0; | |
2705 } | |
2706 return 0; | |
2707 } | |
2708 | |
2709 case 600: | |
2710 { | |
2711 pSpriteObjects[uLayingItemID].uType = 601; | |
2712 v36 = 0; | |
2713 for (v34 = 0; v34 < (signed int)pObjectList->uNumObjects; ++v34) | |
2714 { | |
2715 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v34].uObjectID) | |
2716 v36 = v34; | |
2717 } | |
2718 pSpriteObjects[uLayingItemID].uObjectDescID = v36; | |
2719 if (!v36) | |
2720 SpriteObject::OnInteraction(uLayingItemID); | |
2721 v37 = pSpriteObjects[uLayingItemID].vPosition.z; | |
2722 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2723 v38 = 8 * uLayingItemID; | |
2724 v39 = pSpriteObjects[uLayingItemID].vPosition.y; | |
2725 LOBYTE(v38) = PID(OBJECT_Item, uLayingItemID); | |
2726 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2727 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2728 v40 = pSpriteObjects[uLayingItemID].vPosition.x; | |
2729 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2730 v147 = v38; | |
2731 AttackerInfo.Add(v38, 512, v40, v39, v37, 0, 0); | |
2732 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
2733 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
2734 pAudioPlayer->PlaySound(SOUND_8, v147, 0, -1, 0, 0, 0, 0); | |
2735 return 0; | |
2736 } | |
2737 | |
2738 case 1010: | |
2739 case 1100: | |
2740 case 2060: | |
2741 case 3010: | |
2742 case 3030: | |
2743 case 3060: | |
2744 case 4000: | |
2745 case 4030: | |
2746 case 4050: | |
2747 case 4100: | |
2748 case 6010: | |
2749 case 6090: | |
2750 { | |
2751 sub_43A97E(uLayingItemID, a2); | |
2752 ++pSpriteObjects[uLayingItemID].uType; | |
2753 v95 = 0; | |
2754 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2755 { | |
2756 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2757 v95 = v52; | |
2758 } | |
2759 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2760 if (!v95) | |
2761 SpriteObject::OnInteraction(uLayingItemID); | |
2762 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
2763 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2764 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2765 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2766 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2767 if (!v96) | |
2768 v97 = 0; | |
2769 else | |
2770 v97 = (signed __int16)v96 + 4; | |
2771 v124 = 8 * uLayingItemID; | |
2772 LOBYTE(v124) = v124 | 2; | |
2773 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2774 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
2775 return 0; | |
2776 } | |
2777 | |
2778 | |
2779 case 555: | |
2780 { | |
2781 sub_43A97E(uLayingItemID, a2); | |
2782 ++pSpriteObjects[uLayingItemID].uType; | |
2783 v18 = 0; | |
2784 v22 = 0; | |
2785 v25 = (char *)&pObjectList->pObjects->uObjectID; | |
2786 for (v24 = 0; v24 < (signed int)pObjectList->uNumObjects; ++v24) | |
2787 { | |
2788 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v24].uObjectID) | |
2789 v22 = v24; | |
2790 } | |
2791 pSpriteObjects[uLayingItemID].uObjectDescID = v22; | |
2792 if (v22 == v18) | |
2793 SpriteObject::OnInteraction(uLayingItemID); | |
2794 pSpriteObjects[uLayingItemID].vVelocity.z = v18; | |
2795 pSpriteObjects[uLayingItemID].vVelocity.y = v18; | |
2796 pSpriteObjects[uLayingItemID].vVelocity.x = v18; | |
2797 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18; | |
2798 return 0; | |
2799 } | |
2800 | |
2801 case 3090: | |
2802 { | |
2803 //v9 = 0; | |
2804 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
2805 v63 = 0; | |
2806 for (v61 = 0; v61 < (signed int)pObjectList->uNumObjects; ++v61) | |
2807 { | |
2808 if (v59 == pObjectList->pObjects[v61].uObjectID) | |
2809 v63 = v61; | |
2810 } | |
2811 pSpriteObjects[uLayingItemID].uObjectDescID = v63; | |
2812 if (!v63) | |
2813 SpriteObject::OnInteraction(uLayingItemID); | |
2814 v64 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; | |
2815 v44 = pSpriteObjects[uLayingItemID].spell_skill == 4; | |
2816 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2817 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2818 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2819 v65 = 7; | |
2820 if (v44) | |
2821 v65 = 9; | |
2822 if (v65 > 0) | |
2823 { | |
2824 v141 = v65; | |
2825 do | |
2826 { | |
2827 v64 += (signed int)stru_5C6E00->uIntegerHalfPi / 2; | |
2828 pSpriteObjects[uLayingItemID].Create(v64, 0, 1000, 0); | |
2829 --v141; | |
2830 } while (v141); | |
2831 } | |
2832 SpriteObject::OnInteraction(uLayingItemID); | |
2833 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2834 v16 = 0; | |
2835 else | |
2836 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2837 v124 = 8 * uLayingItemID; | |
2838 LOBYTE(v124) = v124 | 2; | |
2839 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2840 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2841 return 0; | |
2842 } | |
2843 | |
2844 case 3092: | |
2845 { | |
2846 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType - 1; | |
2847 v58 = 0; | |
2848 for (v56 = 0; v56 < (signed int)pObjectList->uNumObjects; ++v56) | |
2849 { | |
2850 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v56].uObjectID) | |
2851 v58 = v56; | |
2852 } | |
2853 pSpriteObjects[uLayingItemID].uObjectDescID = v58; | |
2854 if (!v58) | |
2855 SpriteObject::OnInteraction(uLayingItemID); | |
2856 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2857 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2858 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2859 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2860 sub_43A97E(uLayingItemID, a2); | |
2861 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2862 v16 = 0; | |
2863 else | |
2864 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2865 v124 = 8 * uLayingItemID; | |
2866 LOBYTE(v124) = v124 | 2; | |
2867 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2868 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2869 return 0; | |
2870 } | |
2871 | |
2872 case 4070: | |
2873 { | |
2874 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2)) | |
2875 return 1; | |
2876 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
2877 v71 = 0; | |
2878 for (v69 = 0; v69 < (signed int)pObjectList->uNumObjects; ++v69) | |
2879 { | |
2880 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v69].uObjectID) | |
2881 v71 = v69; | |
2882 } | |
2883 pSpriteObjects[uLayingItemID].uObjectDescID = v71; | |
2884 if (!v71) | |
2885 SpriteObject::OnInteraction(uLayingItemID); | |
2886 v134 = 0; | |
2887 v72 = uLayingItemID; | |
2888 v132 = 0; | |
2889 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2890 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2891 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2892 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2893 AttackerInfo.Add(PID(OBJECT_Item, v72), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); | |
2894 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2895 v78 = 0; | |
2896 else | |
2897 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2898 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2899 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); | |
2900 return 0; | |
2901 } | |
2902 | |
2903 case 4090: | |
1429
c7489dd19f88
BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents:
1417
diff
changeset
|
2904 { |
2396 | 2905 //v9 = 0; |
2906 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2; | |
2907 v88 = 0; | |
2908 for (v86 = 0; v86 < (signed int)pObjectList->uNumObjects; ++v86) | |
2909 { | |
2910 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v86].uObjectID) | |
2911 v88 = v86; | |
2912 } | |
2913 pSpriteObjects[uLayingItemID].uObjectDescID = v88; | |
2914 if (!v88) | |
2915 SpriteObject::OnInteraction(uLayingItemID); | |
2916 v89 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi; | |
2917 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2918 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2919 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2920 v142 = v89; | |
2921 v148 = 7; | |
2922 do | |
2923 { | |
2924 pRnd->SetRange(-128, 128); | |
2925 v90 = pRnd->GetInRange(); | |
2926 pRnd->SetRange(5, 500); | |
2927 v91 = pRnd->GetInRange(); | |
2928 v142 += (signed int)stru_5C6E00->uIntegerHalfPi >> 1; | |
2929 pSpriteObjects[uLayingItemID].Create(v90 + v142, 0, v91, 0); | |
2930 --v148; | |
2931 } while (v148); | |
2932 SpriteObject::OnInteraction(uLayingItemID); | |
2933 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2934 v16 = 0; | |
2935 else | |
2936 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2937 v124 = 8 * uLayingItemID; | |
2938 LOBYTE(v124) = v124 | 2; | |
2939 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2940 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); | |
2941 return 0; | |
2942 } | |
2943 | |
2944 case 4092: | |
2945 { | |
2946 pSpriteObjects[uLayingItemID].uType = 4091; | |
2947 v83 = 0; | |
2948 for (v81 = 0; v81 < (signed int)pObjectList->uNumObjects; ++v81) | |
2949 { | |
2950 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v81].uObjectID) | |
2951 v83 = v81; | |
2952 } | |
2953 pSpriteObjects[uLayingItemID].uObjectDescID = v83; | |
2954 if (!v83) | |
2955 SpriteObject::OnInteraction(uLayingItemID); | |
2956 v134 = 0; | |
2957 //v72 = uLayingItemID; | |
2958 v132 = pSpriteObjects[uLayingItemID].field_61; | |
2959 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2960 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2961 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2962 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2963 AttackerInfo.Add(PID(OBJECT_Item, uLayingItemID), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134); | |
2964 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
2965 v78 = 0; | |
2966 else | |
2967 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
2968 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
2969 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0); | |
2970 return 0; | |
0 | 2971 } |
2396 | 2972 |
2973 case 8010: | |
2974 { | |
2975 if (PID_TYPE(a2) == 3 | |
2976 && MonsterStats::BelongsToSupertype(pActors[PID_ID(a2)].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD)) | |
2977 sub_43A97E(uLayingItemID, a2); | |
2978 ++pSpriteObjects[uLayingItemID].uType; | |
2979 //v9 = 0; | |
2980 v95 = 0; | |
2981 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
2982 { | |
2983 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
2984 v95 = v52; | |
2985 } | |
2986 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
2987 if (!v95) | |
2988 SpriteObject::OnInteraction(uLayingItemID); | |
2989 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
2990 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
2991 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
2992 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
2993 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
2994 if (!v96) | |
2995 v97 = 0; | |
2996 else | |
2997 v97 = (signed __int16)v96 + 4; | |
2998 v92 = uLayingItemID; | |
2999 v124 = 8 * v92; | |
3000 LOBYTE(v124) = v124 | 2; | |
3001 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3002 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3003 return 0; | |
3004 } | |
3005 | |
3006 case 7030: | |
3007 case 7090: | |
3008 case 8000: | |
3009 case 8090: | |
3010 { | |
3011 sub_43A97E(uLayingItemID, a2); | |
3012 ++pSpriteObjects[uLayingItemID].uType; | |
3013 v95 = 0; | |
3014 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
3015 { | |
3016 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
3017 v95 = v52; | |
3018 } | |
3019 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3020 if (!v95) | |
3021 SpriteObject::OnInteraction(uLayingItemID); | |
3022 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
3023 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3024 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3025 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3026 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3027 if (!v96) | |
3028 v97 = 0; | |
3029 else | |
3030 v97 = (signed __int16)v96 + 4; | |
3031 v124 = 8 * uLayingItemID; | |
3032 LOBYTE(v124) = v124 | 2; | |
3033 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3034 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3035 return 0; | |
3036 } | |
3037 | |
3038 case 6040: | |
3039 case 8030: | |
3040 case 9030: | |
3041 { | |
3042 v143 = 17030; | |
3043 switch (pSpriteObjects[uLayingItemID].uType) | |
3044 { | |
3045 case 0x1798u: | |
3046 v143 = 15040; | |
3047 break; | |
3048 case 0xFAAu: | |
3049 v143 = 13010; | |
3050 break; | |
3051 case 0x2346u: | |
3052 v143 = 18030; | |
3053 break; | |
3054 } | |
3055 v138 = 1; | |
3056 if (PID_TYPE(a2) != OBJECT_Actor) | |
3057 { | |
3058 if (pSpriteObjects[uLayingItemID].uType != 9030 || pSpriteObjects[uLayingItemID].spell_skill != 4) | |
3059 { | |
3060 SpriteObject::OnInteraction(uLayingItemID); | |
3061 return 0; | |
3062 } | |
3063 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); | |
3064 if (!v138) | |
3065 { | |
3066 ++pSpriteObjects[uLayingItemID].uType; | |
3067 v112 = 0; | |
3068 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110) | |
3069 { | |
3070 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID) | |
3071 v112 = v110; | |
3072 } | |
3073 pSpriteObjects[uLayingItemID].uObjectDescID = v112; | |
3074 if (!v112) | |
3075 SpriteObject::OnInteraction(uLayingItemID); | |
3076 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3077 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3078 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3079 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3080 v113 = pSpriteObjects[uLayingItemID].uSoundID; | |
3081 if (v113) | |
3082 v114 = (signed __int16)v113 + 4; | |
3083 else | |
3084 v114 = 0; | |
3085 v115 = 8 * uLayingItemID; | |
3086 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID); | |
3087 v125 = v143 + 1; | |
3088 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0); | |
3089 } | |
3090 else | |
3091 SpriteObject::OnInteraction(uLayingItemID); | |
3092 return 0; | |
3093 } | |
3094 v106 = a2; | |
3095 v150 = 0; | |
3096 v139 = PID_ID(v106); | |
3097 v137 = pSpriteObjects[uLayingItemID].spell_level; | |
3098 v152 = pSpriteObjects[uLayingItemID].spell_skill; | |
3099 v136 = pSpriteObjects[uLayingItemID].spell_id; | |
3100 if (pSpriteObjects[uLayingItemID].uType == 9030) | |
3101 { | |
3102 v150 = 2; | |
3103 if (v152 == 2) | |
3104 { | |
3105 v150 = 3; | |
3106 } | |
3107 else | |
3108 { | |
3109 if (v152 >= 3) | |
3110 v150 = 4; | |
3111 } | |
3112 pActors[v139].uAttributes |= 0x80000; | |
3113 v107 = v135; | |
3114 } | |
3115 if (pSpriteObjects[uLayingItemID].uType == 6040) | |
3116 { | |
3117 v135 = 7; | |
3118 v107 = v135; | |
3119 } | |
3120 else | |
3121 { | |
3122 if (pSpriteObjects[uLayingItemID].uType == 8030) | |
3123 { | |
3124 v135 = 9; | |
3125 v107 = v135; | |
3126 } | |
3127 else | |
3128 { | |
3129 if (pSpriteObjects[uLayingItemID].uType != 9030) | |
3130 { | |
3131 v107 = v136; | |
3132 } | |
3133 if (pSpriteObjects[uLayingItemID].uType == 9030) | |
3134 { | |
3135 v135 = 10; | |
3136 v107 = v135; | |
3137 } | |
3138 } | |
3139 } | |
3140 if (pSpriteObjects[uLayingItemID].uType != 9030 || v152 != 4) | |
3141 { | |
3142 v108 = v139; | |
3143 if (pActors[v139].DoesDmgTypeDoDamage((DAMAGE_TYPE)v107)) | |
3144 { | |
3145 v138 = 0; | |
3146 if (pSpriteObjects[uLayingItemID].uType == 8030) | |
3147 { | |
3148 pActors[v108].uAIState = Standing; | |
3149 pActors[v108].UpdateAnimation(); | |
3150 } | |
3151 pActors[v108].pActorBuffs[v136].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v137 << 7) * 0.033333335), | |
3152 v152, v150, 0, 0); | |
3153 } | |
3154 } | |
3155 else | |
3156 { | |
3157 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe(); | |
3158 } | |
3159 pSpriteObjects[uLayingItemID].spell_level = 0; | |
3160 pSpriteObjects[uLayingItemID].spell_skill = 0; | |
3161 pSpriteObjects[uLayingItemID].spell_id = 0; | |
3162 if (!v138) | |
3163 { | |
3164 ++pSpriteObjects[uLayingItemID].uType; | |
3165 v112 = 0; | |
3166 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110) | |
3167 { | |
3168 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID) | |
3169 v112 = v110; | |
3170 } | |
3171 pSpriteObjects[uLayingItemID].uObjectDescID = v112; | |
3172 if (!v112) | |
3173 SpriteObject::OnInteraction(uLayingItemID); | |
3174 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3175 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3176 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3177 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3178 v113 = pSpriteObjects[uLayingItemID].uSoundID; | |
3179 if (v113) | |
3180 v114 = (signed __int16)v113 + 4; | |
3181 else | |
3182 v114 = 0; | |
3183 v115 = 8 * uLayingItemID; | |
3184 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID); | |
3185 v125 = v143 + 1; | |
3186 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0); | |
3187 } | |
3188 else | |
3189 SpriteObject::OnInteraction(uLayingItemID); | |
3190 return 0; | |
3191 } | |
3192 | |
3193 case 9040: | |
3194 { | |
3195 sub_43A97E(uLayingItemID, a2); | |
3196 ++pSpriteObjects[uLayingItemID].uType; | |
3197 v95 = 0; | |
3198 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52) | |
3199 { | |
3200 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID) | |
3201 v95 = v52; | |
3202 } | |
3203 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3204 if (!v95) | |
3205 SpriteObject::OnInteraction(uLayingItemID); | |
3206 v96 = pSpriteObjects[uLayingItemID].uSoundID; | |
3207 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3208 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3209 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3210 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3211 if (!v96) | |
3212 v97 = 0; | |
3213 else | |
3214 v97 = (signed __int16)v96 + 4; | |
3215 v124 = 8 * uLayingItemID; | |
3216 LOBYTE(v124) = v124 | 2; | |
3217 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3218 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0); | |
3219 return 0; | |
3220 } | |
3221 | |
3222 /* | |
3223 case 1080: | |
3224 case 2100: | |
3225 { | |
3226 if (PID_TYPE(a2) != 3) | |
3227 { | |
3228 //v32 = 0; | |
3229 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
3230 v46 = 0; | |
3231 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146) | |
3232 { | |
3233 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID) | |
3234 v46 = v146; | |
3235 } | |
3236 pSpriteObjects[uLayingItemID].uObjectDescID = v46; | |
3237 if (!v46) | |
3238 SpriteObject::OnInteraction(uLayingItemID); | |
3239 v100 = pSpriteObjects[uLayingItemID].field_61; | |
3240 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3241 v102 = 8 * uLayingItemID; | |
3242 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
3243 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3244 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3245 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3246 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
3247 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
3248 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
3249 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
3250 v47 = 0; | |
3251 else | |
3252 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
3253 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3254 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
3255 return 0; | |
3256 } | |
3257 return 1; | |
3258 }*/ | |
3259 | |
3260 case 1080: | |
3261 case 2100: | |
3262 { | |
3263 if (PID_TYPE(a2) == 3) | |
3264 return 1; | |
3265 //else go to next case | |
3266 } | |
3267 | |
3268 case 1050: | |
3269 case 9080: | |
3270 { | |
3271 v95 = 0; | |
3272 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1; | |
3273 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146) | |
3274 { | |
3275 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID) | |
3276 v95 = v146; | |
3277 } | |
3278 pSpriteObjects[uLayingItemID].uObjectDescID = v95; | |
3279 if (!v95) | |
3280 SpriteObject::OnInteraction(uLayingItemID); | |
3281 v100 = pSpriteObjects[uLayingItemID].field_61; | |
3282 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0; | |
3283 v102 = 8 * uLayingItemID; | |
3284 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID); | |
3285 pSpriteObjects[uLayingItemID].vVelocity.x = 0; | |
3286 pSpriteObjects[uLayingItemID].vVelocity.y = 0; | |
3287 pSpriteObjects[uLayingItemID].vVelocity.z = 0; | |
3288 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0); | |
3289 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE) | |
3290 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor); | |
3291 if (!pSpriteObjects[uLayingItemID].uSoundID) | |
3292 v47 = 0; | |
3293 else | |
3294 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; | |
3295 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; | |
3296 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0); | |
3297 return 0; | |
3298 } | |
3299 | |
3300 default: | |
3301 return 0; | |
0 | 3302 } |
2396 | 3303 |
0 | 3304 } |