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
f4af3b203f65 LOD.cpp cleaned and search memory corrupt
Ritor1
parents: 2412
diff changeset
1 #define _CRTDBG_MAP_ALLOC
f4af3b203f65 LOD.cpp cleaned and search memory corrupt
Ritor1
parents: 2412
diff changeset
2 #include <stdlib.h>
f4af3b203f65 LOD.cpp cleaned and search memory corrupt
Ritor1
parents: 2412
diff changeset
3 #include <crtdbg.h>
f4af3b203f65 LOD.cpp cleaned and search memory corrupt
Ritor1
parents: 2412
diff changeset
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
Ritor1
parents:
diff changeset
6 #include <io.h>
Ritor1
parents:
diff changeset
7 #include <direct.h>
2336
d6887ee81068 header file include cleanup
Grumpy7
parents: 2334
diff changeset
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
d6887ee81068 header file include cleanup
Grumpy7
parents: 2334
diff changeset
11
d6887ee81068 header file include cleanup
Grumpy7
parents: 2334
diff changeset
12
1262
0aeac0b9ca30 included header cleanup
Grumpy7
parents: 1254
diff changeset
13 #include "mm7_data.h"
1016
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
14 #include "Sprites.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
15
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
16 #include "LightmapBuilder.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
17 #include "DecalBuilder.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
18 #include "ParticleEngine.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
19 #include "Mouse.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
20 #include "Keyboard.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
21 #include "CShow.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
22 #include "GammaControl.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
23 #include "stru6.h"
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
24
c45d51b3f4f4 Included header files cleanup
Grumpy7
parents: 994
diff changeset
25 #include "Vis.h"
0
Ritor1
parents:
diff changeset
26 #include "MapInfo.h"
Ritor1
parents:
diff changeset
27 #include "Game.h"
Ritor1
parents:
diff changeset
28 #include "GUIWindow.h"
Ritor1
parents:
diff changeset
29 #include "GUIFont.h"
Ritor1
parents:
diff changeset
30 #include "Party.h"
Ritor1
parents:
diff changeset
31 #include "AudioPlayer.h"
Ritor1
parents:
diff changeset
32 #include "Outdoor.h"
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
33 #include "Outdoor_stuff.h"
0
Ritor1
parents:
diff changeset
34 #include "Overlays.h"
Ritor1
parents:
diff changeset
35 #include "Arcomage.h"
Ritor1
parents:
diff changeset
36 #include "LOD.h"
2337
d04017f3d2fa LightsStack_StationaryLight_::AddLight moved to LightStack.cpp
Grumpy7
parents: 2336
diff changeset
37 #include "Log.h"
0
Ritor1
parents:
diff changeset
38 #include "Actor.h"
Ritor1
parents:
diff changeset
39 #include "Events.h"
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
43 #include "ObjectList.h"
Ritor1
parents:
diff changeset
44 #include "Chest.h"
Ritor1
parents:
diff changeset
45 #include "PaletteManager.h"
Ritor1
parents:
diff changeset
46 #include "DecorationList.h"
Ritor1
parents:
diff changeset
47 #include "SaveLoad.h"
Ritor1
parents:
diff changeset
48 #include "stru123.h"
2386
41c36ecc9f32 MapsLongTimer.h
Ritor1
parents: 2374
diff changeset
49 #include "MapsLongTimer.h"
2044
28cb79ae2f6f Time.h rename
Ritor1
parents: 2043
diff changeset
50 #include "Timer.h"
0
Ritor1
parents:
diff changeset
51 #include "IconFrameTable.h"
Ritor1
parents:
diff changeset
52 #include "GUIProgressBar.h"
Ritor1
parents:
diff changeset
53 #include "Bink_Smacker.h"
Ritor1
parents:
diff changeset
54 #include "PlayerFrameTable.h"
Ritor1
parents:
diff changeset
55 #include "TurnEngine.h"
Ritor1
parents:
diff changeset
56 #include "FactionTable.h"
Ritor1
parents:
diff changeset
57 #include "StorylineTextTable.h"
Ritor1
parents:
diff changeset
58 #include "Random.h"
924
a78f08dbeb88 CastSpellInfo
Ritor1
parents: 920
diff changeset
59 #include "CastSpellInfo.h"
0
Ritor1
parents:
diff changeset
60 #include "stru298.h"
1299
8c2f689b5f0b folder UI
Ritor1
parents: 1297
diff changeset
61 #include "UI\UIHouses.h"
189
038a4d09406f new texts file, fix text rendender error
Gloval
parents: 184
diff changeset
62 #include "texts.h"
522
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
63 #include "MM7.h"
1262
0aeac0b9ca30 included header cleanup
Grumpy7
parents: 1254
diff changeset
64 #include "Lights.h"
1815
bd899dfd976c MainMenuWindow
Nomad
parents: 1803
diff changeset
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
71a814f4482a Moved implementation to cpp
Nomad
parents: 2050
diff changeset
67 #include "LuaVM.h"
2290
d65414f65bd4 add MMT.cpp and MMT.h
Ritor1
parents: 2281
diff changeset
68 #include "MMT.h"
2341
d6407efaa4ea Moving registry access stuff to Registry.h/cpp
Grumpy7
parents: 2340
diff changeset
69 #include "Registry.h"
2052
71a814f4482a Moved implementation to cpp
Nomad
parents: 2050
diff changeset
70
1913
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
71 int __stdcall aWinProc(HWND hWnd, UINT Msg, WPARAM wParam, unsigned int lParam);
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
72 int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4);
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
73 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive);
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
74 bool __fastcall Initialize(HINSTANCE hInst, char *pCmdLine);
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
75
ab1c03cc2219 mm7_1.cpp remove
Ritor1
parents: 1902
diff changeset
76
0
Ritor1
parents:
diff changeset
77 //----- (004BBA85) --------------------------------------------------------
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
78 void CheckBountyRespawnAndAward()
0
Ritor1
parents:
diff changeset
79 {
Ritor1
parents:
diff changeset
80 int i; // eax@2
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
81 int rand_monster_id; // edx@3
0
Ritor1
parents:
diff changeset
82
Ritor1
parents:
diff changeset
83 uDialogueType = 83;
Ritor1
parents:
diff changeset
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
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
86 pBtn_ExitCancel = pDialogueWindow->CreateButton(471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[34],// "Cancel"
945
0d96349d8c87 Restoring inlined methods
Nomad
parents: 940
diff changeset
87 pIcons_LOD->GetTexture(uExitCancelTextureId), 0);
832
dfd683c4f538 Hotkeys fixed
Nomad
parents: 831
diff changeset
88 pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_BuyInShop_Identify_Repair, 0, 0, "", 0);
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
89 pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_0, 83, 0, "", 0);
972
c8a0f6d89c70 Some inqury on selecting Knight bug.
Nomad
parents: 970
diff changeset
90 pDialogueWindow->_41D08F_set_keyboard_control_group(1, 1, 0, 2);
747
585490c29945 House dialogue ids appended
Nomad
parents: 736
diff changeset
91 dialog_menu_id = HOUSE_DIALOGUE_OTHER;
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
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
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
94 {
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
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
Ritor1
parents:
diff changeset
97 for ( i = rand(); ; i = rand() )
Ritor1
parents:
diff changeset
98 {
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
99 rand_monster_id = i % 258 + 1;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
100 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = rand_monster_id;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
101 if ( (unsigned __int16)rand_monster_id < 0x73u || (unsigned __int16)rand_monster_id > 0x84u )
0
Ritor1
parents:
diff changeset
102 {
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
103 if ( ((unsigned __int16)rand_monster_id < 0xEBu || (unsigned __int16)rand_monster_id > 0xFCu)
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
104 && ((unsigned __int16)rand_monster_id < 0x85u || (unsigned __int16)rand_monster_id > 0x96u)
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
105 && ((unsigned __int16)rand_monster_id < 0x97u || (unsigned __int16)rand_monster_id > 0xBAu)
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
106 && ((unsigned __int16)rand_monster_id < 0xC4u || (unsigned __int16)rand_monster_id > 0xC6u) )
0
Ritor1
parents:
diff changeset
107 break;
Ritor1
parents:
diff changeset
108 }
Ritor1
parents:
diff changeset
109 }
Ritor1
parents:
diff changeset
110 }
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
111 bountyHunting_monster_id_for_hunting = pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)];
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
112 if ( !pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] )
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
113 {
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
114 bountyHunting_text = pNPCTopics[351].pText;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
115 if ( !pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] )
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
116 bountyHunting_text = pNPCTopics[353].pText;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
117 }
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
118 else//get prize
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
119 {
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
120 if ( pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] )
0
Ritor1
parents:
diff changeset
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
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
123 for ( uint i = 0; i < 4; ++i )
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
124 pParty->pPlayers[i].SetVariable(VAR_Award, 86);
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
125 pParty->uNumBountiesCollected += 100 * pMonsterStats->pInfos[pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)]].uLevel;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
126 pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = 0;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
127 pParty->monster_for_hunting_killed[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false;
0
Ritor1
parents:
diff changeset
128 }
1529
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
129 bountyHunting_text = pNPCTopics[352].pText;
61458df2cb4f bountyHunting fix
Ritor1
parents: 1517
diff changeset
130 }
0
Ritor1
parents:
diff changeset
131 }
Ritor1
parents:
diff changeset
132
Ritor1
parents:
diff changeset
133 //----- (004BF91E) --------------------------------------------------------
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
134 unsigned int GameOverMenu(void *ecx0)
0
Ritor1
parents:
diff changeset
135 {
1838
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
136 const char *v1; // eax@2
0
Ritor1
parents:
diff changeset
137 unsigned int result; // eax@3
1838
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
138 const char *v6; // eax@10
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
139 const char *v7; // edx@10
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
140 const char *v8; // ecx@12
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
141 const char *v9; // eax@14
0
Ritor1
parents:
diff changeset
142 unsigned int v10; // eax@25
Ritor1
parents:
diff changeset
143 GUIWindow pWindow; // [sp+34h] [bp-9Ch]@1
Ritor1
parents:
diff changeset
144 unsigned int v14; // [sp+A4h] [bp-2Ch]@5
Ritor1
parents:
diff changeset
145 void *v15; // [sp+A8h] [bp-28h]@1
1838
211dfe2d8db1 changing global char* vars to const char* vars
Grumpy7
parents: 1828
diff changeset
146 const char *pInString; // [sp+ACh] [bp-24h]@5
0
Ritor1
parents:
diff changeset
147 unsigned int v17; // [sp+B0h] [bp-20h]@5
Ritor1
parents:
diff changeset
148 unsigned int v18; // [sp+B4h] [bp-1Ch]@5
Ritor1
parents:
diff changeset
149 unsigned int v19; // [sp+B8h] [bp-18h]@5
Ritor1
parents:
diff changeset
150 int v20; // [sp+BCh] [bp-14h]@7
Ritor1
parents:
diff changeset
151 GUIFont *pFont; // [sp+C4h] [bp-Ch]@1
Ritor1
parents:
diff changeset
152 unsigned __int64 v23; // [sp+C8h] [bp-8h]@5
Ritor1
parents:
diff changeset
153
Ritor1
parents:
diff changeset
154 v15 = ecx0;
Ritor1
parents:
diff changeset
155
Ritor1
parents:
diff changeset
156 RGBTexture _this; // [sp+Ch] [bp-C4h]@1
Ritor1
parents:
diff changeset
157 //RGBTexture::RGBTexture(&this);
Ritor1
parents:
diff changeset
158
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
159 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_4000;
0
Ritor1
parents:
diff changeset
160 bGameoverLoop = 1;
Ritor1
parents:
diff changeset
161 pVideoPlayer->bStopBeforeSchedule = 0;
Ritor1
parents:
diff changeset
162 pAudioPlayer->StopChannels(-1, -1);
Ritor1
parents:
diff changeset
163 pRenderer->BeginScene();
Ritor1
parents:
diff changeset
164 pRenderer->ClearBlack();
Ritor1
parents:
diff changeset
165 pRenderer->EndScene();
Ritor1
parents:
diff changeset
166 pRenderer->Present();
165
Ritor1
parents: 162
diff changeset
167 pVideoPlayer->pResetflag = 0;
484
4bd56919f075 avard quest guild bits
Gloval
parents: 481
diff changeset
168 _449B57_test_bit(pParty->_quest_bits, 99);
0
Ritor1
parents:
diff changeset
169 _this.Load("winbg.pcx", 2);
Ritor1
parents:
diff changeset
170 pRenderer->BeginScene();
Ritor1
parents:
diff changeset
171 pRenderer->DrawTextureRGB(0, 0, &_this);
Ritor1
parents:
diff changeset
172 pRenderer->EndScene();
Ritor1
parents:
diff changeset
173 free(_this.pPixels);
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
176 pWindow.uFrameX = 75;
Ritor1
parents:
diff changeset
177 pWindow.uFrameY = 60;
Ritor1
parents:
diff changeset
178 pWindow.uFrameWidth = 469;
Ritor1
parents:
diff changeset
179 pWindow.uFrameHeight = 338;
Ritor1
parents:
diff changeset
180 pWindow.uFrameZ = 543;
Ritor1
parents:
diff changeset
181 pWindow.uFrameW = 397;
180
c5bd7a825ef2 come back
Ritor1
parents: 178
diff changeset
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
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
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
Ritor1
parents:
diff changeset
185 else
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
188 if ( !(short)result )
Ritor1
parents:
diff changeset
189 return result;
2133
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
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
Ritor1
parents:
diff changeset
191 }
Ritor1
parents:
diff changeset
192 pInString = v1;
Ritor1
parents:
diff changeset
193 v23 = pParty->uTimePlayed - 138240;
2373
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
194 v19 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24;
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
195 v14 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24 / 0x1C / 0xC;
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
196 v18 = (unsigned int)((signed __int64)((double)(pParty->uTimePlayed - 138240) * 0.234375) / 60 / 60) / 24 / 0x1C % 0xC;
0
Ritor1
parents:
diff changeset
197 v17 = v19 % 0x1C;
Ritor1
parents:
diff changeset
198 if ( !v19 )
Ritor1
parents:
diff changeset
199 v19 = 1;
Ritor1
parents:
diff changeset
200 pRenderer->BeginScene();
2133
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
201 pWindow.DrawTitleText(pFont, 1, 0x23, 1, pGlobalTXT_LocalizationStrings[9], 3);//Congratulations!
0
Ritor1
parents:
diff changeset
202 v23 = 0i64;
Ritor1
parents:
diff changeset
203 v20 = 0;
2133
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
204 for ( uint i = 0; i < 4; i++ )
89
98cd93e14777 pointer fixes
zipi
parents: 82
diff changeset
205 {
2133
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
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
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
207 pWindow.DrawTitleText(pFont, 1, i * (LOBYTE(pFont->uFontHeight) - 2) + LOBYTE(pFont->uFontHeight) + 46, 1, pTmpBuf.data(), 3);
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
208 v23 += pParty->pPlayers[i].uExperience;//__PAIR__(*(int *)(i - 4), *(int *)(i - 8));
0
Ritor1
parents:
diff changeset
209 }
Ritor1
parents:
diff changeset
210 v23 = (signed __int64)v23 / v19;
2133
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
211 v6 = FitTextInAWindow(pInString, pFont, &pWindow, 0xC, 0);
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
212 pWindow.DrawTitleText(pFont, 1, 5 * (LOBYTE(pFont->uFontHeight) + 11), 1, v6, 0);
e378232bfd36 screenshot
Ritor1
parents: 2128
diff changeset
213 strcpy(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[37]);//Total Time:
2373
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
214
0
Ritor1
parents:
diff changeset
215 v7 = pGlobalTXT_LocalizationStrings[56];
Ritor1
parents:
diff changeset
216 if ( v17 != 1 )
Ritor1
parents:
diff changeset
217 v7 = pGlobalTXT_LocalizationStrings[57];
2373
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
218
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
219 v8 = pGlobalTXT_LocalizationStrings[146];//Month, Ìåñÿö
0
Ritor1
parents:
diff changeset
220 if ( v18 != 1 )
2373
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
221 v8 = pGlobalTXT_LocalizationStrings[148];//Months,Ìåñÿöåâ
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
222
0
Ritor1
parents:
diff changeset
223 v9 = pGlobalTXT_LocalizationStrings[245];
Ritor1
parents:
diff changeset
224 if ( v14 != 1 )
Ritor1
parents:
diff changeset
225 v9 = pGlobalTXT_LocalizationStrings[132];
2373
b4a79e3ef2f0 Arena dialogue and other
Ritor1
parents: 2369
diff changeset
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
41c36ecc9f32 MapsLongTimer.h
Ritor1
parents: 2374
diff changeset
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
41c36ecc9f32 MapsLongTimer.h
Ritor1
parents: 2374
diff changeset
231 pWindow.DrawTitleText(pFont, 1, pWindow.uFrameHeight, 1, pTmpBuf.data(), 3);
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
232 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000;
0
Ritor1
parents:
diff changeset
233 pRenderer->EndScene();
Ritor1
parents:
diff changeset
234 pRenderer->Present();
2153
d28d3c006077 Some Render decoupling.
Nomad
parents: 2152
diff changeset
235 //if ( pRenderer->pRenderD3D )
0
Ritor1
parents:
diff changeset
236 pRenderer->pBeforePresentFunction();
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
237 pRenderer->SaveWinnersCertificate("MM7_Win.Pcx");
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
238 free(pFont);
336
ea55d6414029 Event_proceccor preliminary
Gloval
parents: 328
diff changeset
239 window_SpeakInHouse->Release();
ea55d6414029 Event_proceccor preliminary
Gloval
parents: 328
diff changeset
240 window_SpeakInHouse = 0;
0
Ritor1
parents:
diff changeset
241 if ( v15 == (void *)2 )
Ritor1
parents:
diff changeset
242 {
Ritor1
parents:
diff changeset
243 result = pMessageQueue_50CBD0->uNumMessages;
Ritor1
parents:
diff changeset
244 }
Ritor1
parents:
diff changeset
245 else
Ritor1
parents:
diff changeset
246 {
Ritor1
parents:
diff changeset
247 LODWORD(v23) = GetTickCount() + 5000;
Ritor1
parents:
diff changeset
248 while ( (unsigned int)v23 > GetTickCount() )
Ritor1
parents:
diff changeset
249 ;
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
250 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);)
0
Ritor1
parents:
diff changeset
251 {
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
252 if (msg.message == WM_QUIT)
0
Ritor1
parents:
diff changeset
253 Game_DeinitializeAndTerminate(0);
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
254 TranslateMessage(&msg);
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
255 DispatchMessage(&msg);
0
Ritor1
parents:
diff changeset
256 }
Ritor1
parents:
diff changeset
257 if ( pMessageQueue_50CBD0->uNumMessages )
Ritor1
parents:
diff changeset
258 {
Ritor1
parents:
diff changeset
259 LOBYTE(v10) = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
Ritor1
parents:
diff changeset
260 pMessageQueue_50CBD0->uNumMessages = v10;
Ritor1
parents:
diff changeset
261 }
Ritor1
parents:
diff changeset
262 pKeyActionMap->ResetKeys();
Ritor1
parents:
diff changeset
263 pKeyActionMap->uLastKeyPressed = 0;
Ritor1
parents:
diff changeset
264 do
Ritor1
parents:
diff changeset
265 {
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
266 for (MSG msg; PeekMessage(&msg, 0, 0, 0, PM_REMOVE);)
0
Ritor1
parents:
diff changeset
267 {
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
268 if (msg.message == WM_QUIT)
0
Ritor1
parents:
diff changeset
269 Game_DeinitializeAndTerminate(0);
1532
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
270 TranslateMessage(&msg);
3c33f3e44f71 Fix and clean aWinProc and related
yoctozepto
parents: 1529
diff changeset
271 DispatchMessage(&msg);
0
Ritor1
parents:
diff changeset
272 }
Ritor1
parents:
diff changeset
273 }
Ritor1
parents:
diff changeset
274 while ( !pKeyActionMap->uLastKeyPressed );
Ritor1
parents:
diff changeset
275 result = pMessageQueue_50CBD0->uNumMessages;
Ritor1
parents:
diff changeset
276 if ( pMessageQueue_50CBD0->uNumMessages )
Ritor1
parents:
diff changeset
277 {
Ritor1
parents:
diff changeset
278 result = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
Ritor1
parents:
diff changeset
279 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
Ritor1
parents:
diff changeset
280 }
Ritor1
parents:
diff changeset
281 }
Ritor1
parents:
diff changeset
282 if ( v15 )
Ritor1
parents:
diff changeset
283 {
437
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
284 /*if ( (signed int)result < 40 )
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
285 {
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
286 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_Quit;
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
287 }*/
2402
8cee51ce4382 included directx 11
Ritor1
parents: 2396
diff changeset
288 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Quit, 1, 0);
0
Ritor1
parents:
diff changeset
289 }
Ritor1
parents:
diff changeset
290 else
Ritor1
parents:
diff changeset
291 {
2402
8cee51ce4382 included directx 11
Ritor1
parents: 2396
diff changeset
292 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_ShowFinalWindow, 1, 0);
437
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
293 /*if ( (signed int)result < 40 )
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
294 {
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
295 pMessageQueue_50CBD0->pMessages[result].eType = UIMSG_C5;
0
Ritor1
parents:
diff changeset
296 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1;
Ritor1
parents:
diff changeset
297 result = 3 * pMessageQueue_50CBD0->uNumMessages + 3;
Ritor1
parents:
diff changeset
298 *(&pMessageQueue_50CBD0->uNumMessages + result) = 0;
Ritor1
parents:
diff changeset
299 ++pMessageQueue_50CBD0->uNumMessages;
437
0a1ea44b4a0a ui mesages & spellcasting
Nomad
parents: 434
diff changeset
300 }*/
0
Ritor1
parents:
diff changeset
301 }
Ritor1
parents:
diff changeset
302 bGameoverLoop = 0;
Ritor1
parents:
diff changeset
303 return result;
Ritor1
parents:
diff changeset
304 }
Ritor1
parents:
diff changeset
305
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
308 unsigned short *pDst, int dstWidth, int dstHeight, int dstPitch,
Ritor1
parents:
diff changeset
309 int a10, int a11)
Ritor1
parents:
diff changeset
310 {
Ritor1
parents:
diff changeset
311 int result; // eax@1
Ritor1
parents:
diff changeset
312 float v17; // ST3C_4@12
Ritor1
parents:
diff changeset
313 float v18; // ST38_4@12
Ritor1
parents:
diff changeset
314 unsigned int v19; // esi@12
Ritor1
parents:
diff changeset
315 int v21; // eax@18
Ritor1
parents:
diff changeset
316 unsigned int v22; // ecx@25
Ritor1
parents:
diff changeset
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
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
322 // int v160; // [sp+3Ch] [bp-4Ch]@13
0
Ritor1
parents:
diff changeset
323 unsigned __int16 *v175; // [sp+4Ch] [bp-3Ch]@13
Ritor1
parents:
diff changeset
324 unsigned __int16 *v193; // [sp+5Ch] [bp-2Ch]@7
2314
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
325 //signed int v231; // [sp+78h] [bp-10h]@7
0
Ritor1
parents:
diff changeset
326 __int64 v240; // [sp+7Ch] [bp-Ch]@12
Ritor1
parents:
diff changeset
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
e18200fcfb50 LoadTextureFromLOD
Ritor1
parents: 2208
diff changeset
365 //do
2314
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
374
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
389 //int ratioDiff = widthRatioPlusOne - widthRatio;
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
395 v21 = _450FB1(((_WORD*)v175)[ratioDiff]);
1901
Ritor1
parents: 1861
diff changeset
396 else if (field0value == 8)
2314
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
Ritor1
parents: 1861
diff changeset
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
Ritor1
parents: 1861
diff changeset
405 else if (field0value == 16)
2314
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
406 v175 += srcPitch;
1901
Ritor1
parents: 1861
diff changeset
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
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
0313c761d203 memory problems, Mouse
Ritor1
parents: 2416
diff changeset
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
e18200fcfb50 LoadTextureFromLOD
Ritor1
parents: 2208
diff changeset
425 //++v231;
2314
8e9be4fa33a8 for Bloodsplat
Ritor1
parents: 2306
diff changeset
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
e18200fcfb50 LoadTextureFromLOD
Ritor1
parents: 2208
diff changeset
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
Ritor1
parents:
diff changeset
430 }
Ritor1
parents:
diff changeset
431
Ritor1
parents:
diff changeset
432
Ritor1
parents:
diff changeset
433 //----- (00450DDE) --------------------------------------------------------
Ritor1
parents:
diff changeset
434 stru350 *stru350::_450DDE()
Ritor1
parents:
diff changeset
435 {
Ritor1
parents:
diff changeset
436 _450DF1(&stru_4E82A4, &stru_4E82A4);
Ritor1
parents:
diff changeset
437 return this;
Ritor1
parents:
diff changeset
438 }
Ritor1
parents:
diff changeset
439
Ritor1
parents:
diff changeset
440 //----- (00450DF1) --------------------------------------------------------
Ritor1
parents:
diff changeset
441 bool stru350::_450DF1(const stru355 *p1, const stru355 *p2)
Ritor1
parents:
diff changeset
442 {
Ritor1
parents:
diff changeset
443 //stru350 *v3; // esi@1
Ritor1
parents:
diff changeset
444 //void *result; // eax@1
Ritor1
parents:
diff changeset
445 unsigned int v5; // ecx@2
Ritor1
parents:
diff changeset
446 int v6; // edi@2
Ritor1
parents:
diff changeset
447 int v7; // edx@2
Ritor1
parents:
diff changeset
448 unsigned int v8; // ecx@8
Ritor1
parents:
diff changeset
449 int v9; // edi@8
Ritor1
parents:
diff changeset
450 int v10; // edx@8
Ritor1
parents:
diff changeset
451 int v11; // ecx@12
Ritor1
parents:
diff changeset
452 int v12; // edi@12
Ritor1
parents:
diff changeset
453 unsigned int v13; // ecx@12
Ritor1
parents:
diff changeset
454 int v14; // edx@12
Ritor1
parents:
diff changeset
455 int v15; // ecx@16
Ritor1
parents:
diff changeset
456 unsigned int v16; // edx@16
Ritor1
parents:
diff changeset
457 int v17; // ecx@16
Ritor1
parents:
diff changeset
458 int v18; // edi@16
Ritor1
parents:
diff changeset
459 char v19; // zf@20
Ritor1
parents:
diff changeset
460 unsigned int v20; // ecx@21
Ritor1
parents:
diff changeset
461 int v21; // edi@21
Ritor1
parents:
diff changeset
462 int v22; // edx@21
Ritor1
parents:
diff changeset
463 unsigned int v23; // ecx@27
Ritor1
parents:
diff changeset
464 int v24; // edi@27
Ritor1
parents:
diff changeset
465 int v25; // edx@27
Ritor1
parents:
diff changeset
466 int v26; // ecx@31
Ritor1
parents:
diff changeset
467 int v27; // edi@31
Ritor1
parents:
diff changeset
468 unsigned int v28; // ecx@31
Ritor1
parents:
diff changeset
469 int v29; // edx@31
Ritor1
parents:
diff changeset
470 int v30; // ebx@35
Ritor1
parents:
diff changeset
471 int v31; // ecx@35
Ritor1
parents:
diff changeset
472 int v32; // edi@35
Ritor1
parents:
diff changeset
473 int v33; // edx@35
Ritor1
parents:
diff changeset
474 unsigned int i; // ecx@35
Ritor1
parents:
diff changeset
475 int v35; // ecx@39
Ritor1
parents:
diff changeset
476 unsigned int v36; // edx@39
Ritor1
parents:
diff changeset
477 int v37; // ecx@39
Ritor1
parents:
diff changeset
478 int v38; // ebx@39
Ritor1
parents:
diff changeset
479
Ritor1
parents:
diff changeset
480 //v3 = this;
Ritor1
parents:
diff changeset
481 memcpy(&field_0, p1, sizeof(stru355));
Ritor1
parents:
diff changeset
482 memcpy(&field_20, p2, sizeof(stru355));
Ritor1
parents:
diff changeset
483 //result = memcpy(&v3->field_20, p2, 0x20u);
Ritor1
parents:
diff changeset
484 //LOBYTE(result) = 1;
Ritor1
parents:
diff changeset
485 if (field_0.field_4 & 1)
Ritor1
parents:
diff changeset
486 {
Ritor1
parents:
diff changeset
487 v5 = field_0.field_1C;
Ritor1
parents:
diff changeset
488 v6 = 0;
Ritor1
parents:
diff changeset
489 v7 = 0;
Ritor1
parents:
diff changeset
490 while ( !(v5 & 1) )
Ritor1
parents:
diff changeset
491 {
Ritor1
parents:
diff changeset
492 ++v6;
Ritor1
parents:
diff changeset
493 v5 >>= 1;
Ritor1
parents:
diff changeset
494 }
Ritor1
parents:
diff changeset
495 do
Ritor1
parents:
diff changeset
496 {
Ritor1
parents:
diff changeset
497 v5 >>= 1;
Ritor1
parents:
diff changeset
498 ++v7;
Ritor1
parents:
diff changeset
499 }
Ritor1
parents:
diff changeset
500 while ( v5 & 1 );
Ritor1
parents:
diff changeset
501 field_40 = 32 - v7 - v6;
Ritor1
parents:
diff changeset
502 }
Ritor1
parents:
diff changeset
503 else
Ritor1
parents:
diff changeset
504 {
Ritor1
parents:
diff changeset
505 field_40 = 0;
Ritor1
parents:
diff changeset
506 }
Ritor1
parents:
diff changeset
507 v8 = field_0.field_10;
Ritor1
parents:
diff changeset
508 v9 = 0;
Ritor1
parents:
diff changeset
509 v10 = 0;
Ritor1
parents:
diff changeset
510 while ( !(v8 & 1) )
Ritor1
parents:
diff changeset
511 {
Ritor1
parents:
diff changeset
512 ++v9;
Ritor1
parents:
diff changeset
513 v8 >>= 1;
Ritor1
parents:
diff changeset
514 }
Ritor1
parents:
diff changeset
515 do
Ritor1
parents:
diff changeset
516 {
Ritor1
parents:
diff changeset
517 v8 >>= 1;
Ritor1
parents:
diff changeset
518 ++v10;
Ritor1
parents:
diff changeset
519 }
Ritor1
parents:
diff changeset
520 while ( v8 & 1 );
Ritor1
parents:
diff changeset
521 v11 = 24 - v10 - v9;
Ritor1
parents:
diff changeset
522 v12 = 0;
Ritor1
parents:
diff changeset
523 field_48 = v11;
Ritor1
parents:
diff changeset
524 v13 = field_0.field_14;
Ritor1
parents:
diff changeset
525 v14 = 0;
Ritor1
parents:
diff changeset
526 while ( !(v13 & 1) )
Ritor1
parents:
diff changeset
527 {
Ritor1
parents:
diff changeset
528 ++v12;
Ritor1
parents:
diff changeset
529 v13 >>= 1;
Ritor1
parents:
diff changeset
530 }
Ritor1
parents:
diff changeset
531 do
Ritor1
parents:
diff changeset
532 {
Ritor1
parents:
diff changeset
533 v13 >>= 1;
Ritor1
parents:
diff changeset
534 ++v14;
Ritor1
parents:
diff changeset
535 }
Ritor1
parents:
diff changeset
536 while ( v13 & 1 );
Ritor1
parents:
diff changeset
537 v15 = 16 - v14;
Ritor1
parents:
diff changeset
538 v16 = field_0.field_18;
Ritor1
parents:
diff changeset
539 field_50 = v15 - v12;
Ritor1
parents:
diff changeset
540 v17 = 0;
Ritor1
parents:
diff changeset
541 v18 = 0;
Ritor1
parents:
diff changeset
542 while ( !(v16 & 1) )
Ritor1
parents:
diff changeset
543 {
Ritor1
parents:
diff changeset
544 ++v17;
Ritor1
parents:
diff changeset
545 v16 >>= 1;
Ritor1
parents:
diff changeset
546 }
Ritor1
parents:
diff changeset
547 do
Ritor1
parents:
diff changeset
548 {
Ritor1
parents:
diff changeset
549 v16 >>= 1;
Ritor1
parents:
diff changeset
550 ++v18;
Ritor1
parents:
diff changeset
551 }
Ritor1
parents:
diff changeset
552 while ( v16 & 1 );
Ritor1
parents:
diff changeset
553 v19 = (field_20.field_4 & 1) == 0;
Ritor1
parents:
diff changeset
554 field_58 = v17 - v18 + 8;
Ritor1
parents:
diff changeset
555 if ( v19 )
Ritor1
parents:
diff changeset
556 {
Ritor1
parents:
diff changeset
557 field_44 = 0;
Ritor1
parents:
diff changeset
558 }
Ritor1
parents:
diff changeset
559 else
Ritor1
parents:
diff changeset
560 {
Ritor1
parents:
diff changeset
561 v20 = field_20.field_1C;
Ritor1
parents:
diff changeset
562 v21 = 0;
Ritor1
parents:
diff changeset
563 v22 = 0;
Ritor1
parents:
diff changeset
564 while ( !(v20 & 1) )
Ritor1
parents:
diff changeset
565 {
Ritor1
parents:
diff changeset
566 ++v21;
Ritor1
parents:
diff changeset
567 v20 >>= 1;
Ritor1
parents:
diff changeset
568 }
Ritor1
parents:
diff changeset
569 do
Ritor1
parents:
diff changeset
570 {
Ritor1
parents:
diff changeset
571 v20 >>= 1;
Ritor1
parents:
diff changeset
572 ++v22;
Ritor1
parents:
diff changeset
573 }
Ritor1
parents:
diff changeset
574 while ( v20 & 1 );
Ritor1
parents:
diff changeset
575 field_44 = 32 - v22 - v21;
Ritor1
parents:
diff changeset
576 }
Ritor1
parents:
diff changeset
577 v23 = field_20.field_10;
Ritor1
parents:
diff changeset
578 v24 = 0;
Ritor1
parents:
diff changeset
579 v25 = 0;
Ritor1
parents:
diff changeset
580 while ( !(v23 & 1) )
Ritor1
parents:
diff changeset
581 {
Ritor1
parents:
diff changeset
582 ++v24;
Ritor1
parents:
diff changeset
583 v23 >>= 1;
Ritor1
parents:
diff changeset
584 }
Ritor1
parents:
diff changeset
585 do
Ritor1
parents:
diff changeset
586 {
Ritor1
parents:
diff changeset
587 v23 >>= 1;
Ritor1
parents:
diff changeset
588 ++v25;
Ritor1
parents:
diff changeset
589 }
Ritor1
parents:
diff changeset
590 while ( v23 & 1 );
Ritor1
parents:
diff changeset
591 v26 = 24 - v25 - v24;
Ritor1
parents:
diff changeset
592 v27 = 0;
Ritor1
parents:
diff changeset
593 field_4C = v26;
Ritor1
parents:
diff changeset
594 v28 = field_20.field_14;
Ritor1
parents:
diff changeset
595 v29 = 0;
Ritor1
parents:
diff changeset
596 while ( !(v28 & 1) )
Ritor1
parents:
diff changeset
597 {
Ritor1
parents:
diff changeset
598 ++v27;
Ritor1
parents:
diff changeset
599 v28 >>= 1;
Ritor1
parents:
diff changeset
600 }
Ritor1
parents:
diff changeset
601 do
Ritor1
parents:
diff changeset
602 {
Ritor1
parents:
diff changeset
603 v28 >>= 1;
Ritor1
parents:
diff changeset
604 ++v29;
Ritor1
parents:
diff changeset
605 }
Ritor1
parents:
diff changeset
606 while ( v28 & 1 );
Ritor1
parents:
diff changeset
607 v30 = 0;
Ritor1
parents:
diff changeset
608 v31 = 16 - v29 - v27;
Ritor1
parents:
diff changeset
609 v32 = field_20.field_18;
Ritor1
parents:
diff changeset
610 field_54 = v31;
Ritor1
parents:
diff changeset
611 v33 = 0;
Ritor1
parents:
diff changeset
612 for ( i = v32; !(i & 1); i >>= 1 )
Ritor1
parents:
diff changeset
613 ++v30;
Ritor1
parents:
diff changeset
614 do
Ritor1
parents:
diff changeset
615 {
Ritor1
parents:
diff changeset
616 i >>= 1;
Ritor1
parents:
diff changeset
617 ++v33;
Ritor1
parents:
diff changeset
618 }
Ritor1
parents:
diff changeset
619 while ( i & 1 );
Ritor1
parents:
diff changeset
620 v35 = 32 - v33;
Ritor1
parents:
diff changeset
621 v36 = v32;
Ritor1
parents:
diff changeset
622 field_5C = v35 - v30;
Ritor1
parents:
diff changeset
623 v37 = 0;
Ritor1
parents:
diff changeset
624 v38 = 0;
Ritor1
parents:
diff changeset
625 while ( !(v36 & 1) )
Ritor1
parents:
diff changeset
626 {
Ritor1
parents:
diff changeset
627 ++v37;
Ritor1
parents:
diff changeset
628 v36 >>= 1;
Ritor1
parents:
diff changeset
629 }
Ritor1
parents:
diff changeset
630 do
Ritor1
parents:
diff changeset
631 {
Ritor1
parents:
diff changeset
632 v36 >>= 1;
Ritor1
parents:
diff changeset
633 ++v38;
Ritor1
parents:
diff changeset
634 }
Ritor1
parents:
diff changeset
635 while ( v36 & 1 );
Ritor1
parents:
diff changeset
636 field_5C = v37 - v38 + 8;
Ritor1
parents:
diff changeset
637 return true;
Ritor1
parents:
diff changeset
638 }
Ritor1
parents:
diff changeset
639
Ritor1
parents:
diff changeset
640 //----- (00450F55) --------------------------------------------------------
Ritor1
parents:
diff changeset
641 unsigned int stru350::_450F55(int a2)
Ritor1
parents:
diff changeset
642 {
Ritor1
parents:
diff changeset
643 int v2 = a2 & stru_4E82A4.field_1C;
Ritor1
parents:
diff changeset
644 if (field_20.field_4 & 1)
Ritor1
parents:
diff changeset
645 v2 = (unsigned int)v2 >> this->field_44;
Ritor1
parents:
diff changeset
646 return v2 & field_20.field_1C |
Ritor1
parents:
diff changeset
647 field_20.field_10 & ((a2 & (unsigned int)stru_4E82A4.field_10) >> field_4C) |
Ritor1
parents:
diff changeset
648 field_20.field_14 & ((a2 & (unsigned int)stru_4E82A4.field_14) >> field_54) |
Ritor1
parents:
diff changeset
649 field_20.field_18 & ((a2 & (unsigned int)stru_4E82A4.field_18) >> field_5C);
Ritor1
parents:
diff changeset
650 }
Ritor1
parents:
diff changeset
651
Ritor1
parents:
diff changeset
652 //----- (00450FB1) --------------------------------------------------------
Ritor1
parents:
diff changeset
653 int stru350::_450FB1(int a2)
Ritor1
parents:
diff changeset
654 {
Ritor1
parents:
diff changeset
655 int v2 = 0;
Ritor1
parents:
diff changeset
656 int v4 = field_0.field_4 & 1;
Ritor1
parents:
diff changeset
657 if ( v4 )
Ritor1
parents:
diff changeset
658 v2 = a2 & field_0.field_1C;
Ritor1
parents:
diff changeset
659 if ( v4 )
Ritor1
parents:
diff changeset
660 v2 <<= field_40;
Ritor1
parents:
diff changeset
661 return v2 | ((a2 & field_0.field_10) << field_48) | ((a2 & field_0.field_14) << field_50) | ((a2 & field_0.field_18) << field_58);
Ritor1
parents:
diff changeset
662 }
Ritor1
parents:
diff changeset
663
Ritor1
parents:
diff changeset
664 //----- (00452442) --------------------------------------------------------
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
665 unsigned int __fastcall _452442_color_cvt(unsigned __int16 a1, unsigned __int16 a2, int a3, int a4)
0
Ritor1
parents:
diff changeset
666 {
Ritor1
parents:
diff changeset
667 int v4; // ebx@0
Ritor1
parents:
diff changeset
668 __int16 v5; // ST14_2@1
Ritor1
parents:
diff changeset
669 __int16 v6; // dx@1
Ritor1
parents:
diff changeset
670 int v7; // ecx@1
Ritor1
parents:
diff changeset
671 __int16 v8; // ST10_2@1
Ritor1
parents:
diff changeset
672 int v9; // edi@1
Ritor1
parents:
diff changeset
673 unsigned __int16 v10; // dh@1@1
Ritor1
parents:
diff changeset
674 int v11; // ebx@1
Ritor1
parents:
diff changeset
675 int v12; // ebx@1
Ritor1
parents:
diff changeset
676 __int16 a3a; // [sp+1Ch] [bp+8h]@1
Ritor1
parents:
diff changeset
677
Ritor1
parents:
diff changeset
678 v5 = a2 >> 2;
Ritor1
parents:
diff changeset
679 v6 = (unsigned __int16)a4 >> 2;
Ritor1
parents:
diff changeset
680 v8 = a1 >> 2;
Ritor1
parents:
diff changeset
681 a3a = (unsigned __int16)a3 >> 2;
Ritor1
parents:
diff changeset
682 LOWORD(v7) = a3a;
Ritor1
parents:
diff changeset
683 v9 = v7;
Ritor1
parents:
diff changeset
684 LOWORD(v4) = ((unsigned __int16)a4 >> 2) & 0xE0;
Ritor1
parents:
diff changeset
685 LOWORD(v7) = a3a & 0xE0;
Ritor1
parents:
diff changeset
686 LOWORD(v9) = v9 & 0x1C00;
Ritor1
parents:
diff changeset
687 v11 = v7 + v4;
Ritor1
parents:
diff changeset
688 LOWORD(v7) = v5 & 0xE0;
Ritor1
parents:
diff changeset
689 v12 = v7 + v11;
Ritor1
parents:
diff changeset
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
ceef50611567 * AI fixed (temporary)
zipi
parents: 838
diff changeset
692 return (PID_TYPE(v8) + PID_TYPE(v5) + PID_TYPE(a3a) + PID_TYPE(v6)) | (v7 + v12) | ((v8 & 0x1C00)
0
Ritor1
parents:
diff changeset
693 + (v5 & 0x1C00)
Ritor1
parents:
diff changeset
694 + v9
Ritor1
parents:
diff changeset
695 + (__PAIR__(v10, (unsigned __int16)a4 >> 2) & 0x1C00));
Ritor1
parents:
diff changeset
696 }
Ritor1
parents:
diff changeset
697
Ritor1
parents:
diff changeset
698 //----- (004547E4) --------------------------------------------------------
Ritor1
parents:
diff changeset
699 void FactionTable::Initialize()
Ritor1
parents:
diff changeset
700 {
237
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
701 int i;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
702 char* test_string;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
703 unsigned char c;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
704 bool break_loop;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
705 unsigned int temp_str_len;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
706 char* tmp_pos;
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
707 int decode_step;
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
708 // int item_counter;
237
2799737f8a74 more text parsers refactor
Gloval
parents: 234
diff changeset
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
Ritor1
parents:
diff changeset
711 pHostileTXT_Raw = (char *)pEvents_LOD->LoadRaw("hostile.txt", 0);
Ritor1
parents:
diff changeset
712 strtok(pHostileTXT_Raw, "\r");
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
713 for ( i=0; i < 89; ++i )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
714 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
715 test_string = strtok(NULL, "\r") + 1;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
716 break_loop = false;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
717 decode_step=0;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
718 do
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
719 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
720 c = *(unsigned char*)test_string;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
721 temp_str_len = 0;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
722 while((c!='\t') && (c > 0))
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
723 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
724 ++temp_str_len;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
725 c = test_string[temp_str_len];
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
726 }
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
727 tmp_pos=test_string+temp_str_len;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
728 if (*tmp_pos == 0)
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
729 break_loop = true;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
730 *tmp_pos = 0;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
731 if (temp_str_len)
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
732 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
733 if ( decode_step >= 1 && decode_step < 90 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
734 relations[decode_step-1][i] = atoi(test_string);
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
735 }
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
736 else
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
737 break_loop = true;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
738 ++decode_step;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
739 test_string=tmp_pos+1;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
740 }
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
741 while ((decode_step < 92) && !break_loop );
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
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
Ritor1
parents:
diff changeset
745 }
Ritor1
parents:
diff changeset
746
Ritor1
parents:
diff changeset
747 //----- (004610AA) --------------------------------------------------------
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
748 void __fastcall PrepareToLoadODM(unsigned int bLoading, ODMRenderParams *a2)
0
Ritor1
parents:
diff changeset
749 {
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
750 pGameLoadingUI_ProgressBar->Reset(27);
0
Ritor1
parents:
diff changeset
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
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
753 ODM_LoadAndInitialize(pCurrentMapName, a2);
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
754 if ( !bLoading )
0
Ritor1
parents:
diff changeset
755 TeleportToStartingPoint(uLevel_StartingPointType);
Ritor1
parents:
diff changeset
756 viewparams->_443365();
Ritor1
parents:
diff changeset
757 PlayLevelMusic();
Ritor1
parents:
diff changeset
758 }
Ritor1
parents:
diff changeset
759 // 6BE35C: using guessed type int uLevel_StartingPointType;
Ritor1
parents:
diff changeset
760
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
763 {
Ritor1
parents:
diff changeset
764 int v4; // edx@8
Ritor1
parents:
diff changeset
765 signed int v6; // esi@14
Ritor1
parents:
diff changeset
766 signed int v8; // ecx@16
Ritor1
parents:
diff changeset
767 int v12; // esi@25
Ritor1
parents:
diff changeset
768 int v13; // eax@26
Ritor1
parents:
diff changeset
769 __int16 v14; // ax@41
Ritor1
parents:
diff changeset
770 signed int v17; // [sp+14h] [bp-48h]@3
Ritor1
parents:
diff changeset
771 signed int v18; // [sp+14h] [bp-48h]@23
Ritor1
parents:
diff changeset
772 int v19; // [sp+18h] [bp-44h]@1
Ritor1
parents:
diff changeset
773 signed int v20; // [sp+18h] [bp-44h]@14
Ritor1
parents:
diff changeset
774 int v21[16]; // [sp+1Ch] [bp-40h]@17
Ritor1
parents:
diff changeset
775
598
f8a4a2e0b4c9 fixed random iten generator, chest generator
Gloval
parents: 569
diff changeset
776 GenerateItemsInChest();
0
Ritor1
parents:
diff changeset
777 pGameLoadingUI_ProgressBar->Progress();
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
778 pParty->uFlags |= 2;
0
Ritor1
parents:
diff changeset
779 pParty->field_7B5_in_arena_quest = 0;
Ritor1
parents:
diff changeset
780 dword_5C6DF8 = 1;
291
0ea5fbd16edb NPC mostly done
Gloval
parents: 271
diff changeset
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
Ritor1
parents:
diff changeset
783
Ritor1
parents:
diff changeset
784 //v15 = 0;
Ritor1
parents:
diff changeset
785 for (uint i = 0; i < uNumActors; ++i)
Ritor1
parents:
diff changeset
786 //if ( (signed int)uNumActors > 0 )
Ritor1
parents:
diff changeset
787 {
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
788 //Actor* pActor = &pActors[i];
0
Ritor1
parents:
diff changeset
789 //v2 = (char *)&pActors[0].uNPC_ID;
Ritor1
parents:
diff changeset
790 //do
Ritor1
parents:
diff changeset
791 //{
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
792 //v3 = pActors[i].pMonsterInfo.uID;
0
Ritor1
parents:
diff changeset
793 v17 = 0;
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
794 if ( pActors[i].pMonsterInfo.uID >= 115 && pActors[i].pMonsterInfo.uID <= 186
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
795 || pActors[i].pMonsterInfo.uID >= 232 && pActors[i].pMonsterInfo.uID <= 249 )
0
Ritor1
parents:
diff changeset
796 v17 = 1;
Ritor1
parents:
diff changeset
797 //v1 = 0;
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
798 v4 = (pActors[i].pMonsterInfo.uID - 1) % 3;
0
Ritor1
parents:
diff changeset
799 if ( 2 == v4 )
Ritor1
parents:
diff changeset
800 {
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
801 if ( pActors[i].sNPC_ID && pActors[i].sNPC_ID < 5000 )
0
Ritor1
parents:
diff changeset
802 continue;
Ritor1
parents:
diff changeset
803 }
Ritor1
parents:
diff changeset
804 else
Ritor1
parents:
diff changeset
805 {
Ritor1
parents:
diff changeset
806 if ( v4 != 1 )
Ritor1
parents:
diff changeset
807 {
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
808 if ( v4 == 0 && pActors[i].sNPC_ID == 0 )
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
809 pActors[i].sNPC_ID = 0;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
810 continue;
0
Ritor1
parents:
diff changeset
811 }
Ritor1
parents:
diff changeset
812 }
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
813 if ( pActors[i].sNPC_ID > 0 && pActors[i].sNPC_ID < 5000 )
0
Ritor1
parents:
diff changeset
814 continue;
Ritor1
parents:
diff changeset
815 if ( v17 )
Ritor1
parents:
diff changeset
816 {
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
817 pNPCStats->InitializeAdditionalNPCs(&pNPCStats->pAdditionalNPC[pNPCStats->uNewlNPCBufPos], pActors[i].pMonsterInfo.uID, 0, v19);
291
0ea5fbd16edb NPC mostly done
Gloval
parents: 271
diff changeset
818 v14 = LOWORD(pNPCStats->uNewlNPCBufPos) + 5000;
0ea5fbd16edb NPC mostly done
Gloval
parents: 271
diff changeset
819 ++pNPCStats->uNewlNPCBufPos;
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
820 pActors[i].sNPC_ID = v14;
0
Ritor1
parents:
diff changeset
821 continue;
Ritor1
parents:
diff changeset
822 }
2099
7edf389d49fc pCurrentPosActiveItem
Ritor1
parents: 2098
diff changeset
823 pActors[i].sNPC_ID = 0;
0
Ritor1
parents:
diff changeset
824 //++v15;
Ritor1
parents:
diff changeset
825 //v2 += 836;
Ritor1
parents:
diff changeset
826 //}
Ritor1
parents:
diff changeset
827 //while ( v15 < (signed int)uNumActors );
Ritor1
parents:
diff changeset
828 }
Ritor1
parents:
diff changeset
829
Ritor1
parents:
diff changeset
830 pGameLoadingUI_ProgressBar->Progress();
Ritor1
parents:
diff changeset
831
Ritor1
parents:
diff changeset
832 //v5 = uNumActors;
Ritor1
parents:
diff changeset
833 v6 = 0;
Ritor1
parents:
diff changeset
834 v20 = 0;
Ritor1
parents:
diff changeset
835 //v16 = v1;
Ritor1
parents:
diff changeset
836
Ritor1
parents:
diff changeset
837 for (uint i = 0; i < uNumActors; ++i)
Ritor1
parents:
diff changeset
838 {
Ritor1
parents:
diff changeset
839 //v7 = (char *)&pActors[0].pMonsterInfo;
Ritor1
parents:
diff changeset
840 //do
Ritor1
parents:
diff changeset
841 //{
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
842 for ( v8 = 0; v8 < v6; ++v8 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
843 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
844 if ( v21[v8] == pActors[i].pMonsterInfo.uID - 1 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
845 break;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
846 }
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
847
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
848 if ( v8 == v6 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
849 {
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
850 v21[v6++] = pActors[i].pMonsterInfo.uID - 1;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
851 v20 = v6;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
852 if ( v6 == 16 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
853 break;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
854 }
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
855 //++v16;
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
856 //v7 += 836;
0
Ritor1
parents:
diff changeset
857 //}
Ritor1
parents:
diff changeset
858 //while ( v16 < (signed int)v5 );
Ritor1
parents:
diff changeset
859 }
Ritor1
parents:
diff changeset
860
Ritor1
parents:
diff changeset
861 pGameLoadingUI_ProgressBar->Progress();
Ritor1
parents:
diff changeset
862
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
863 for ( int _v0 = 0; _v0 < v6; ++_v0 )
0
Ritor1
parents:
diff changeset
864 {
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
865 for ( v18 = 4; v18; --v18 )
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
866 pSoundList->LoadSound(pMonsterList->pMonsters[v21[_v0]].pSoundSampleIDs[4 - v18], 0);
0
Ritor1
parents:
diff changeset
867 v12 = 0;
Ritor1
parents:
diff changeset
868 do
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
869 v13 = pSoundList->LoadSound(v12++ + word_4EE088_sound_ids[pMonsterStats->pInfos[v21[_v0] + 1].uSpell1ID], 1);
0
Ritor1
parents:
diff changeset
870 while ( v13 );
Ritor1
parents:
diff changeset
871 }
Ritor1
parents:
diff changeset
872 //v0 = pGameLoadingUI_ProgressBar;
Ritor1
parents:
diff changeset
873 //v1 = 0;
Ritor1
parents:
diff changeset
874
Ritor1
parents:
diff changeset
875 pGameLoadingUI_ProgressBar->Progress();
Ritor1
parents:
diff changeset
876
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
877 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_ACTORS)
0
Ritor1
parents:
diff changeset
878 uNumActors = 0;
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
879 if ( dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_NO_DECORATIONS)
0
Ritor1
parents:
diff changeset
880 uNumLevelDecorations = 0;
1459
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
881 init_event_triggers();
0
Ritor1
parents:
diff changeset
882
Ritor1
parents:
diff changeset
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
b27dd658ea77 Taveling by foot fixed.
Nomad
parents: 775
diff changeset
891 uLevel_StartingPointType = MapStartPoint_Party;
0
Ritor1
parents:
diff changeset
892 pSprites_LOD->_461397();
Ritor1
parents:
diff changeset
893 pPaletteManager->LockTestAll();
Ritor1
parents:
diff changeset
894 if ( pParty->pPickedItem.uItemID != 0 )
Ritor1
parents:
diff changeset
895 pMouse->SetCursorBitmapFromItemID(pParty->pPickedItem.uItemID);
Ritor1
parents:
diff changeset
896 }
Ritor1
parents:
diff changeset
897
Ritor1
parents:
diff changeset
898 //----- (004613C4) --------------------------------------------------------
1459
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
899 void init_event_triggers()
0
Ritor1
parents:
diff changeset
900 {
1459
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
901 uint id = pDecorationList->GetDecorIdByName("Event Trigger");
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
902
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
903 num_event_triggers = 0;
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
904 for (uint i = 0; i < uNumLevelDecorations; ++i)
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
905 if (pLevelDecorations[i].uDecorationDescID == id)
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
906 event_triggers[num_event_triggers++] = i;
0
Ritor1
parents:
diff changeset
907 }
Ritor1
parents:
diff changeset
908
Ritor1
parents:
diff changeset
909 //----- (004627B7) --------------------------------------------------------
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
910 void MainMenu_Loop()
0
Ritor1
parents:
diff changeset
911 {
Ritor1
parents:
diff changeset
912 GUIButton *pButton; // eax@27
Ritor1
parents:
diff changeset
913 unsigned int pControlParam; // ecx@35
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
914 // int v10; // ecx@36
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
915 // int v11; // ecx@37
0
Ritor1
parents:
diff changeset
916 unsigned int pY; // [sp-18h] [bp-54h]@39
Ritor1
parents:
diff changeset
917 Texture *pTexture; // [sp-14h] [bp-50h]@39
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
918 // GUIButton *pButton2; // [sp+0h] [bp-3Ch]@27
0
Ritor1
parents:
diff changeset
919 GUIWindow *pWindow; // [sp+4h] [bp-38h]@11
Ritor1
parents:
diff changeset
920
151
9abdd40a107b pCurrentScreen
Ritor1
parents: 150
diff changeset
921 pCurrentScreen = SCREEN_GAME;
1038
39f42990698f Cleanings
Nomad
parents: 1033
diff changeset
922
0
Ritor1
parents:
diff changeset
923 pGUIWindow2 = 0;
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
924 pAudioPlayer->StopChannels(-1, -1);//îñòàíîâèòü/ïîäãîòîâèòü êàíàë
2219
e6771956e74a for mouse
Ritor1
parents: 2216
diff changeset
925 pMouse->RemoveHoldingItem();//èçáàâèòü êóðñîð îò âåùè
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
926
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
927 pIcons_LOD->_inlined_sub2();
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
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
c1c74df0a33e changing most of auto types to their actual types
Grumpy7
parents: 1948
diff changeset
930 Texture* pNew = pIcons_LOD->LoadTexturePtr("title_new", TEXTURE_16BIT_PALETTE);
c1c74df0a33e changing most of auto types to their actual types
Grumpy7
parents: 1948
diff changeset
931 Texture* pLoad = pIcons_LOD->LoadTexturePtr("title_load", TEXTURE_16BIT_PALETTE);
c1c74df0a33e changing most of auto types to their actual types
Grumpy7
parents: 1948
diff changeset
932 Texture* pCredits = pIcons_LOD->LoadTexturePtr("title_cred", TEXTURE_16BIT_PALETTE);
c1c74df0a33e changing most of auto types to their actual types
Grumpy7
parents: 1948
diff changeset
933 Texture* pExit = pIcons_LOD->LoadTexturePtr("title_exit", TEXTURE_16BIT_PALETTE);
948
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
934
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
935 pMainMenu_BtnNew = pWindow_MainMenu->CreateButton(495, 172, pNew->uTextureWidth, pNew->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowPartyCreationWnd, 0, 'N', "", pNew, 0);
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
936 pMainMenu_BtnLoad = pWindow_MainMenu->CreateButton(495, 227, pLoad->uTextureWidth, pLoad->uTextureHeight, 1, 0, UIMSG_MainMenu_ShowLoadWindow, 1, 'L', "", pLoad, 0);
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
937 pMainMenu_BtnCredits = pWindow_MainMenu->CreateButton(495, 282, pCredits->uTextureWidth, pCredits->uTextureHeight, 1, 0, UIMSG_ShowCredits, 2, 'C', "", pCredits, 0);
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
938 pMainMenu_BtnExit = pWindow_MainMenu->CreateButton(495, 337, pExit->uTextureWidth, pExit->uTextureHeight, 1, 0, UIMSG_ExitToWindows, 3, 0, "", pExit, 0);
5a2dbb00c399 Code cleaning.
Nomad
parents: 947
diff changeset
939
0
Ritor1
parents:
diff changeset
940 pTexture_PCX.Release();
Ritor1
parents:
diff changeset
941 pTexture_PCX.Load("title.pcx", 0);
Ritor1
parents:
diff changeset
942 SetCurrentMenuID(MENU_MAIN);
1984
b00f5bb7d930 Added back window position saving
zipi
parents: 1980
diff changeset
943 SetForegroundWindow(window->GetApiHandle());
b00f5bb7d930 Added back window position saving
zipi
parents: 1980
diff changeset
944 SendMessageW(window->GetApiHandle(), WM_ACTIVATEAPP, 1, 0);
0
Ritor1
parents:
diff changeset
945 while (GetCurrentMenuID() == MENU_MAIN || GetCurrentMenuID() == MENU_SAVELOAD)
Ritor1
parents:
diff changeset
946 {
Ritor1
parents:
diff changeset
947 POINT pt;
Ritor1
parents:
diff changeset
948 pMouse->GetCursorPos(&pt);
Ritor1
parents:
diff changeset
949 pWindow = pWindow_MainMenu;
165
Ritor1
parents: 162
diff changeset
950 if ( GetCurrentMenuID() == MENU_SAVELOAD)
0
Ritor1
parents:
diff changeset
951 {
151
9abdd40a107b pCurrentScreen
Ritor1
parents: 150
diff changeset
952 if ( pCurrentScreen != SCREEN_LOADGAME )
0
Ritor1
parents:
diff changeset
953 {
Ritor1
parents:
diff changeset
954 pTexture_PCX.Release();
Ritor1
parents:
diff changeset
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
9abdd40a107b pCurrentScreen
Ritor1
parents: 150
diff changeset
957 pCurrentScreen = SCREEN_LOADGAME;
1033
3a5c8df8381d * UI cleans and moves
Nomad
parents: 1031
diff changeset
958 LoadUI_Load(0);
0
Ritor1
parents:
diff changeset
959 }
Ritor1
parents:
diff changeset
960 pWindow = pGUIWindow_CurrentMenu;
Ritor1
parents:
diff changeset
961 }
Ritor1
parents:
diff changeset
962
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
963 for (MSG msg; PeekMessageW(&msg, 0, 0, 0, PM_REMOVE);)
0
Ritor1
parents:
diff changeset
964 {
Ritor1
parents:
diff changeset
965 if (msg.message == WM_QUIT)
Ritor1
parents:
diff changeset
966 Game_DeinitializeAndTerminate(0);
Ritor1
parents:
diff changeset
967 TranslateMessage(&msg);
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
968 DispatchMessageW(&msg);
0
Ritor1
parents:
diff changeset
969 }
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
970
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
971 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE)
0
Ritor1
parents:
diff changeset
972 {
Ritor1
parents:
diff changeset
973 WaitMessage();
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
974 continue;
0
Ritor1
parents:
diff changeset
975 }
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
976
0
Ritor1
parents:
diff changeset
977 pRenderer->BeginScene();
Ritor1
parents:
diff changeset
978 pRenderer->DrawTextureRGB(0, 0, &pTexture_PCX);
1038
39f42990698f Cleanings
Nomad
parents: 1033
diff changeset
979
165
Ritor1
parents: 162
diff changeset
980 GUI_MainMenuMessageProc();
0
Ritor1
parents:
diff changeset
981 GUI_UpdateWindows();
1038
39f42990698f Cleanings
Nomad
parents: 1033
diff changeset
982
165
Ritor1
parents: 162
diff changeset
983 if (GetCurrentMenuID() != MENU_MAIN)
Ritor1
parents: 162
diff changeset
984 {
961
5a12082c803d UIMSG and WINDOW_Type(continue)
Ritor1
parents: 957
diff changeset
985 if (GetCurrentMenuID() == MENU_LoadingProcInMainMenu)
0
Ritor1
parents:
diff changeset
986 {
1405
c0b273d33338 RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents: 1404
diff changeset
987 pIcons_LOD->RemoveTexturesPackFromTextureList();
0
Ritor1
parents:
diff changeset
988 pGUIWindow_CurrentMenu->Release();
Ritor1
parents:
diff changeset
989 pGUIWindow_CurrentMenu = 0;
151
9abdd40a107b pCurrentScreen
Ritor1
parents: 150
diff changeset
990 pCurrentScreen = SCREEN_GAME;
0
Ritor1
parents:
diff changeset
991 viewparams->bRedrawGameUI = 1;
Ritor1
parents:
diff changeset
992 }
Ritor1
parents:
diff changeset
993 }
Ritor1
parents:
diff changeset
994 else
Ritor1
parents:
diff changeset
995 {
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
996 if ( !pModalWindow )// ???
0
Ritor1
parents:
diff changeset
997 {
Ritor1
parents:
diff changeset
998 pButton = pWindow->pControlsHead;
Ritor1
parents:
diff changeset
999 for ( pButton = pWindow->pControlsHead; pButton; pButton = pButton->pNext )
Ritor1
parents:
diff changeset
1000 {
Ritor1
parents:
diff changeset
1001 if ( pt.x >= (signed int)pButton->uX && pt.x <= (signed int)pButton->uZ
Ritor1
parents:
diff changeset
1002 && pt.y >= (signed int)pButton->uY && pt.y <= (signed int)pButton->uW
Ritor1
parents:
diff changeset
1003 && pWindow == pWindow_MainMenu )
Ritor1
parents:
diff changeset
1004 {
832
dfd683c4f538 Hotkeys fixed
Nomad
parents: 831
diff changeset
1005 pControlParam = pButton->msg_param;
0
Ritor1
parents:
diff changeset
1006 switch (pControlParam) // ïîäñâåòêà êíîïîê
Ritor1
parents:
diff changeset
1007 {
Ritor1
parents:
diff changeset
1008 case 0:
Ritor1
parents:
diff changeset
1009 pTexture = pNew;
Ritor1
parents:
diff changeset
1010 pY = 172;
Ritor1
parents:
diff changeset
1011 break;
Ritor1
parents:
diff changeset
1012 case 1:
Ritor1
parents:
diff changeset
1013 pTexture = pLoad;
Ritor1
parents:
diff changeset
1014 pY = 227;
Ritor1
parents:
diff changeset
1015 break;
Ritor1
parents:
diff changeset
1016 case 2:
Ritor1
parents:
diff changeset
1017 pTexture = pCredits;
Ritor1
parents:
diff changeset
1018 pY = 282;
Ritor1
parents:
diff changeset
1019 break;
Ritor1
parents:
diff changeset
1020 case 3:
Ritor1
parents:
diff changeset
1021 pTexture = pExit;
Ritor1
parents:
diff changeset
1022 pY = 337;
Ritor1
parents:
diff changeset
1023 break;
Ritor1
parents:
diff changeset
1024 }
Ritor1
parents:
diff changeset
1025 pRenderer->DrawTextureIndexed(495, pY, pTexture); //ïîäñâåòêà êíîïîê
Ritor1
parents:
diff changeset
1026 }
Ritor1
parents:
diff changeset
1027 }
Ritor1
parents:
diff changeset
1028 }
Ritor1
parents:
diff changeset
1029 }
Ritor1
parents:
diff changeset
1030 pRenderer->EndScene();
Ritor1
parents:
diff changeset
1031 pRenderer->Present();
Ritor1
parents:
diff changeset
1032 }
970
e3123a1dea82 PlayerCreationUI_Draw little clean
Ritor1
parents: 966
diff changeset
1033 GUI_MainMenuMessageProc();
0
Ritor1
parents:
diff changeset
1034 pRenderer->BeginScene();
Ritor1
parents:
diff changeset
1035 GUI_UpdateWindows();
Ritor1
parents:
diff changeset
1036 pRenderer->EndScene();
Ritor1
parents:
diff changeset
1037 pRenderer->Present();
961
5a12082c803d UIMSG and WINDOW_Type(continue)
Ritor1
parents: 957
diff changeset
1038 pTexture_PCX.Release();
0
Ritor1
parents:
diff changeset
1039 if ( pGUIWindow2 )
Ritor1
parents:
diff changeset
1040 {
Ritor1
parents:
diff changeset
1041 pGUIWindow2->Release();
Ritor1
parents:
diff changeset
1042 pGUIWindow2 = 0;
Ritor1
parents:
diff changeset
1043 }
Ritor1
parents:
diff changeset
1044 pWindow_MainMenu->Release();
1405
c0b273d33338 RemoveTexturesPackFromTextureList and RemoveTexturesFromTextureList
Ritor1
parents: 1404
diff changeset
1045 pIcons_LOD->RemoveTexturesPackFromTextureList();
0
Ritor1
parents:
diff changeset
1046 }
Ritor1
parents:
diff changeset
1047
Ritor1
parents:
diff changeset
1048 //----- (00464479) --------------------------------------------------------
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1049 void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows()
0
Ritor1
parents:
diff changeset
1050 {
Ritor1
parents:
diff changeset
1051 int v0; // esi@9
Ritor1
parents:
diff changeset
1052
Ritor1
parents:
diff changeset
1053 if (pMouse)
Ritor1
parents:
diff changeset
1054 pMouse->SetCursorBitmap("MICON1");
Ritor1
parents:
diff changeset
1055
Ritor1
parents:
diff changeset
1056 pPaletteManager->ResetNonLocked();
Ritor1
parents:
diff changeset
1057 pBitmaps_LOD->ReleaseAll2();
Ritor1
parents:
diff changeset
1058 pSprites_LOD->DeleteSomeOtherSprites();
Ritor1
parents:
diff changeset
1059 pIcons_LOD->ReleaseAll2();
2152
d44b7775fc06 Removed DirectDraw2 compatibility.
Nomad
parents: 2151
diff changeset
1060
0
Ritor1
parents:
diff changeset
1061 if (uCurrentlyLoadedLevelType == LEVEL_Indoor)
Ritor1
parents:
diff changeset
1062 pIndoor->Release();
Ritor1
parents:
diff changeset
1063 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor)
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1064 pOutdoor->Release();
0
Ritor1
parents:
diff changeset
1065
Ritor1
parents:
diff changeset
1066 pAudioPlayer->StopChannels(-1, -1);
Ritor1
parents:
diff changeset
1067 pSoundList->_4A9D79(0);
Ritor1
parents:
diff changeset
1068 uCurrentlyLoadedLevelType = LEVEL_null;
Ritor1
parents:
diff changeset
1069 pSpriteFrameTable->ResetSomeSpriteFlags();
Ritor1
parents:
diff changeset
1070 v0 = uNumVisibleWindows;
349
672b83584b0f GetActorTintColor
Nomad
parents: 336
diff changeset
1071 pParty->armageddon_timer = 0;
0
Ritor1
parents:
diff changeset
1072 while ( v0 > 0 )
Ritor1
parents:
diff changeset
1073 pWindowList[pVisibleWindowsIdxs[v0--] - 1].Release();
Ritor1
parents:
diff changeset
1074 }
Ritor1
parents:
diff changeset
1075
Ritor1
parents:
diff changeset
1076 //----- (004646F0) --------------------------------------------------------
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
1077 void PrepareWorld(unsigned int _0_box_loading_1_fullscreen)
0
Ritor1
parents:
diff changeset
1078 {
2154
9bd7522cdbbb Render decoupling.
Nomad
parents: 2153
diff changeset
1079 //if ( pRenderer->pRenderD3D )
0
Ritor1
parents:
diff changeset
1080 pGame->pVisInstance->_4C1A02();
Ritor1
parents:
diff changeset
1081 pEventTimer->Pause();
Ritor1
parents:
diff changeset
1082 pMiscTimer->Pause();
Ritor1
parents:
diff changeset
1083 pParty->uFlags = 2;
1517
c3da3c2985b8 Clean CastSpellInfo. (1)
yoctozepto
parents: 1514
diff changeset
1084 CastSpellInfoHelpers::_427D48();
0
Ritor1
parents:
diff changeset
1085 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
1086 DoPrepareWorld(0, (_0_box_loading_1_fullscreen == 0) + 1);
0
Ritor1
parents:
diff changeset
1087 pMiscTimer->Resume();
Ritor1
parents:
diff changeset
1088 pEventTimer->Resume();
Ritor1
parents:
diff changeset
1089 }
Ritor1
parents:
diff changeset
1090
Ritor1
parents:
diff changeset
1091 //----- (00464761) --------------------------------------------------------
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1092 void Game_DeinitializeAndTerminate(int exitCode)
0
Ritor1
parents:
diff changeset
1093 {
1586
c24e91e9a108 Replace minor Windows constants.
yoctozepto
parents: 1583
diff changeset
1094 SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
0
Ritor1
parents:
diff changeset
1095 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
Ritor1
parents:
diff changeset
1096 pGame->Deinitialize();
2155
0a1438c16c2b Render decoupling.
Nomad
parents: 2154
diff changeset
1097 pRenderer->Release();
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1098 delete window;
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1099 //if ( !DestroyWindow(hWnd) )
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1100 // GetLastError();
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1101 exit(exitCode);
0
Ritor1
parents:
diff changeset
1102 }
Ritor1
parents:
diff changeset
1103
Ritor1
parents:
diff changeset
1104 //----- (004647AB) --------------------------------------------------------
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1105 void FinalInitialization()
0
Ritor1
parents:
diff changeset
1106 {
Ritor1
parents:
diff changeset
1107 pViewport->SetScreen(viewparams->uSomeX, viewparams->uSomeY, viewparams->uSomeZ, viewparams->uSomeW);
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1108 pViewport->SetFOV(flt_6BE3A0 * 65536.0f);
0
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1113
Ritor1
parents:
diff changeset
1114 InitializeTurnBasedAnimations(&stru_50C198);
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1115 pBitmaps_LOD->_inlined_sub1();
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1116 pSprites_LOD->_inlined_sub1();
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1117 pIcons_LOD->_inlined_sub1();
0
Ritor1
parents:
diff changeset
1118 }
Ritor1
parents:
diff changeset
1119 // 6BE3A0: using guessed type float flt_6BE3A0;
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1145 //----- (00464866) --------------------------------------------------------
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
1146 void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box)
0
Ritor1
parents:
diff changeset
1147 {
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
1148 //int v2; // esi@1
0
Ritor1
parents:
diff changeset
1149 char *v3; // eax@1
Ritor1
parents:
diff changeset
1150 //char *v4; // eax@1
Ritor1
parents:
diff changeset
1151 unsigned int v5; // eax@3
Ritor1
parents:
diff changeset
1152 //size_t v6; // ecx@10
Ritor1
parents:
diff changeset
1153 //char *v7; // eax@11
Ritor1
parents:
diff changeset
1154 char Str1[20]; // [sp+Ch] [bp-18h]@1
Ritor1
parents:
diff changeset
1155 unsigned int v9; // [sp+20h] [bp-4h]@1
Ritor1
parents:
diff changeset
1156
Ritor1
parents:
diff changeset
1157 v9 = bLoading;
Ritor1
parents:
diff changeset
1158 ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
Ritor1
parents:
diff changeset
1159 pDecalBuilder->Reset(0);
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
1160 pGameLoadingUI_ProgressBar->Initialize(_1_fullscreen_loading_2_box == 1 ? GUIProgressBar::TYPE_Fullscreen :
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
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
Ritor1
parents:
diff changeset
1163 v3 = strtok(Str1, ".");
Ritor1
parents:
diff changeset
1164 strcpy(Str1, v3);
Ritor1
parents:
diff changeset
1165 Level_LoadEvtAndStr(Str1);
Ritor1
parents:
diff changeset
1166 LoadLevel_InitializeLevelEvt();
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
1167 strcpy(Str1, pCurrentMapName);
0
Ritor1
parents:
diff changeset
1168 _strrev(Str1);
Ritor1
parents:
diff changeset
1169 strtok(Str1, ".");
Ritor1
parents:
diff changeset
1170 _strrev(Str1);
Ritor1
parents:
diff changeset
1171
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1174
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
1175 v5 = pMapStats->GetMapInfo(pCurrentMapName);
1541
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1176 bUnderwater = false;
0
Ritor1
parents:
diff changeset
1177 uLevelMapStatsID = v5;
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1180 {
1541
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1181 bUnderwater = true;
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1182 pGame->uFlags2 |= GAME_FLAGS_2_ALTER_GRAVITY;
0
Ritor1
parents:
diff changeset
1183 }
831
9c3f28b31b4a Party actions in blv
Nomad
parents: 827
diff changeset
1184 pParty->floor_face_pid = 0;
1104
5d5c78088274 strcmpi to stricmp conversion
Grumpy7
parents: 1067
diff changeset
1185 if ( _stricmp(Str1, "blv") )
0
Ritor1
parents:
diff changeset
1186 PrepareToLoadODM(v9, 0);
Ritor1
parents:
diff changeset
1187 else
Ritor1
parents:
diff changeset
1188 PrepareToLoadBLV(v9);
Ritor1
parents:
diff changeset
1189 pAudioPlayer->SetMapEAX();
1459
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
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
Ritor1
parents:
diff changeset
1192 {
1583
75fafd8ced59 Allocator (CMemory) bye-bye
Nomad
parents: 1546
diff changeset
1193 //spawning grounds & walls of mist - no loot & exp from monsters
0
Ritor1
parents:
diff changeset
1194
Ritor1
parents:
diff changeset
1195 for (uint i = 0; i < uNumActors; ++i)
Ritor1
parents:
diff changeset
1196 {
Ritor1
parents:
diff changeset
1197 pActors[i].pMonsterInfo.uTreasureType = 0;
Ritor1
parents:
diff changeset
1198 pActors[i].pMonsterInfo.uTreasureDiceRolls = 0;
Ritor1
parents:
diff changeset
1199 pActors[i].pMonsterInfo.uExp = 0;
Ritor1
parents:
diff changeset
1200 }
Ritor1
parents:
diff changeset
1201 }
Ritor1
parents:
diff changeset
1202 bDialogueUI_InitializeActor_NPC_ID = 0;
Ritor1
parents:
diff changeset
1203 OnMapLoad();
Ritor1
parents:
diff changeset
1204 pGameLoadingUI_ProgressBar->Progress();
1459
2ca62c9e7b3c Function names
Nomad
parents: 1458
diff changeset
1205 memset(&pRenderer->pBillboardRenderListD3D, 0, sizeof(pRenderer->pBillboardRenderListD3D));
0
Ritor1
parents:
diff changeset
1206 pGameLoadingUI_ProgressBar->Release();
Ritor1
parents:
diff changeset
1207 _flushall();
Ritor1
parents:
diff changeset
1208 }
Ritor1
parents:
diff changeset
1209
Ritor1
parents:
diff changeset
1210
Ritor1
parents:
diff changeset
1211 //----- (00464E17) --------------------------------------------------------
Ritor1
parents:
diff changeset
1212 bool __fastcall CheckMM7CD(char c)
Ritor1
parents:
diff changeset
1213 {
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1214 char DstBuf[256] = {0};
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1215 char strCommand[256] = {0}; // [sp+10Ch] [bp-118h]@1
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1216 char Filename[20] = {0}; // [sp+20Ch] [bp-18h]@1
0
Ritor1
parents:
diff changeset
1217
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1220 if (GetFileAttributesW(pMagicPath) == -1)
Ritor1
parents:
diff changeset
1221 return false;
Ritor1
parents:
diff changeset
1222
Ritor1
parents:
diff changeset
1223 wsprintfA(strCommand, "open %c: type cdaudio alias CD", c);
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1224 if (!mciSendStringA(strCommand, DstBuf, 255, 0))//Uninitialized memory access
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1225
0
Ritor1
parents:
diff changeset
1226 {
Ritor1
parents:
diff changeset
1227 wsprintfA(strCommand, "info CD UPC wait");
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1228 mciSendStringA(strCommand, DstBuf, 255, 0);
0
Ritor1
parents:
diff changeset
1229 wsprintfA(strCommand, "close CD");
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1230 mciSendStringA(strCommand, DstBuf, 255, 0);
0
Ritor1
parents:
diff changeset
1231 }
Ritor1
parents:
diff changeset
1232
Ritor1
parents:
diff changeset
1233 memcpy(Filename, "X:\\anims\\magic7.vid", sizeof(Filename));
Ritor1
parents:
diff changeset
1234 *Filename = c;
Ritor1
parents:
diff changeset
1235
1980
c1c74df0a33e changing most of auto types to their actual types
Grumpy7
parents: 1948
diff changeset
1236 FILE* f = fopen(Filename, "rb");
0
Ritor1
parents:
diff changeset
1237 if (!f)
Ritor1
parents:
diff changeset
1238 return false;
Ritor1
parents:
diff changeset
1239
Ritor1
parents:
diff changeset
1240 if (!fseek(f, 0, SEEK_END))
Ritor1
parents:
diff changeset
1241 {
Ritor1
parents:
diff changeset
1242 if (!fseek(f, -100, SEEK_CUR))
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
1243 fread(DstBuf, 1, 0x64u, f);
0
Ritor1
parents:
diff changeset
1244
Ritor1
parents:
diff changeset
1245 fclose(f);
Ritor1
parents:
diff changeset
1246 return true;
Ritor1
parents:
diff changeset
1247 }
Ritor1
parents:
diff changeset
1248 fclose(f);
Ritor1
parents:
diff changeset
1249 return false;
Ritor1
parents:
diff changeset
1250 }
Ritor1
parents:
diff changeset
1251
Ritor1
parents:
diff changeset
1252 //----- (00464F1B) --------------------------------------------------------
Ritor1
parents:
diff changeset
1253 signed int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4)
Ritor1
parents:
diff changeset
1254 {
Ritor1
parents:
diff changeset
1255 char v4; // zf@3
Ritor1
parents:
diff changeset
1256 int v6; // eax@10
Ritor1
parents:
diff changeset
1257 int v7; // eax@11
Ritor1
parents:
diff changeset
1258 int v8; // eax@12
Ritor1
parents:
diff changeset
1259 int v9; // eax@13
Ritor1
parents:
diff changeset
1260 BOOL (__stdcall *v10)(HWND, int, LPCSTR); // edi@15
Ritor1
parents:
diff changeset
1261 const CHAR *v11; // [sp-Ch] [bp-Ch]@15
Ritor1
parents:
diff changeset
1262 INT_PTR v12; // [sp-4h] [bp-4h]@5
Ritor1
parents:
diff changeset
1263
Ritor1
parents:
diff changeset
1264 if ( a2 == 272 )
Ritor1
parents:
diff changeset
1265 {
Ritor1
parents:
diff changeset
1266 hInsertCDWindow = hDlg;
Ritor1
parents:
diff changeset
1267 v6 = (GetUserDefaultLangID() & 0x3FF) - 7;
Ritor1
parents:
diff changeset
1268 if ( v6 )
Ritor1
parents:
diff changeset
1269 {
Ritor1
parents:
diff changeset
1270 v7 = v6 - 3;
Ritor1
parents:
diff changeset
1271 if ( v7 )
Ritor1
parents:
diff changeset
1272 {
Ritor1
parents:
diff changeset
1273 v8 = v7 - 2;
Ritor1
parents:
diff changeset
1274 if ( v8 )
Ritor1
parents:
diff changeset
1275 {
Ritor1
parents:
diff changeset
1276 v9 = v8 - 4;
Ritor1
parents:
diff changeset
1277 if ( v9 )
Ritor1
parents:
diff changeset
1278 {
Ritor1
parents:
diff changeset
1279 if ( v9 != 5 )
Ritor1
parents:
diff changeset
1280 return 0;
Ritor1
parents:
diff changeset
1281 SetWindowTextA(hDlg, "Wloz CD-ROM numer 2");
Ritor1
parents:
diff changeset
1282 v10 = SetDlgItemTextA;
Ritor1
parents:
diff changeset
1283 SetDlgItemTextA(hDlg, 1010, "Wloz CD-ROM numer 2 Might and Magic® VII.");
Ritor1
parents:
diff changeset
1284 v11 = "Odwolaj";
Ritor1
parents:
diff changeset
1285 }
Ritor1
parents:
diff changeset
1286 else
Ritor1
parents:
diff changeset
1287 {
Ritor1
parents:
diff changeset
1288 SetWindowTextA(hDlg, "Inserire il secondo CD");
Ritor1
parents:
diff changeset
1289 v10 = SetDlgItemTextA;
Ritor1
parents:
diff changeset
1290 SetDlgItemTextA(hDlg, 1010, "Inserire il secondo CD di Might and Magic® VII.");
Ritor1
parents:
diff changeset
1291 v11 = "Annulla";
Ritor1
parents:
diff changeset
1292 }
Ritor1
parents:
diff changeset
1293 }
Ritor1
parents:
diff changeset
1294 else
Ritor1
parents:
diff changeset
1295 {
Ritor1
parents:
diff changeset
1296 SetWindowTextA(hDlg, "Insérez le CD 2");
Ritor1
parents:
diff changeset
1297 v10 = SetDlgItemTextA;
Ritor1
parents:
diff changeset
1298 SetDlgItemTextA(hDlg, 1010, "Insérez Might & Magic® VII CD 2.");
Ritor1
parents:
diff changeset
1299 v11 = "Supprimer";
Ritor1
parents:
diff changeset
1300 }
Ritor1
parents:
diff changeset
1301 }
Ritor1
parents:
diff changeset
1302 else
Ritor1
parents:
diff changeset
1303 {
Ritor1
parents:
diff changeset
1304 SetWindowTextA(hDlg, "Por favor, inserte disco 2");
Ritor1
parents:
diff changeset
1305 v10 = SetDlgItemTextA;
Ritor1
parents:
diff changeset
1306 SetDlgItemTextA(hDlg, 1010, "Por favor, inserte disco 2 de Might & Magic® VII.");
Ritor1
parents:
diff changeset
1307 v11 = "Cancelar";
Ritor1
parents:
diff changeset
1308 }
Ritor1
parents:
diff changeset
1309 }
Ritor1
parents:
diff changeset
1310 else
Ritor1
parents:
diff changeset
1311 {
Ritor1
parents:
diff changeset
1312 SetWindowTextA(hDlg, "Bitte CD 2 einlegen");
Ritor1
parents:
diff changeset
1313 v10 = SetDlgItemTextA;
Ritor1
parents:
diff changeset
1314 SetDlgItemTextA(hDlg, 1010, "Bitte CD 2 von Might and Magic® VII einlegen.");
Ritor1
parents:
diff changeset
1315 v11 = "Abbrechen";
Ritor1
parents:
diff changeset
1316 }
Ritor1
parents:
diff changeset
1317 v10(hDlg, 2, v11);
Ritor1
parents:
diff changeset
1318 return 0;
Ritor1
parents:
diff changeset
1319 }
Ritor1
parents:
diff changeset
1320 if ( a2 == 273 )
Ritor1
parents:
diff changeset
1321 {
Ritor1
parents:
diff changeset
1322 if ( a3 == 2 )
Ritor1
parents:
diff changeset
1323 {
Ritor1
parents:
diff changeset
1324 v12 = 0;
Ritor1
parents:
diff changeset
1325 EndDialog(hDlg, v12);
Ritor1
parents:
diff changeset
1326 return 1;
Ritor1
parents:
diff changeset
1327 }
Ritor1
parents:
diff changeset
1328 v4 = a3 == 1;
Ritor1
parents:
diff changeset
1329 }
Ritor1
parents:
diff changeset
1330 else
Ritor1
parents:
diff changeset
1331 {
Ritor1
parents:
diff changeset
1332 v4 = a2 == 1025;
Ritor1
parents:
diff changeset
1333 }
Ritor1
parents:
diff changeset
1334 if ( v4 )
Ritor1
parents:
diff changeset
1335 {
Ritor1
parents:
diff changeset
1336 v12 = 1;
1416
b69805ffeb4b mm7_2.cpp cleaning
zipi
parents: 1415
diff changeset
1337 EndDialog(hDlg, v12);
b69805ffeb4b mm7_2.cpp cleaning
zipi
parents: 1415
diff changeset
1338 return 1;
0
Ritor1
parents:
diff changeset
1339 }
Ritor1
parents:
diff changeset
1340 return 0;
Ritor1
parents:
diff changeset
1341 }
Ritor1
parents:
diff changeset
1342
Ritor1
parents:
diff changeset
1343 //----- (00465061) --------------------------------------------------------
Ritor1
parents:
diff changeset
1344 bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive)
Ritor1
parents:
diff changeset
1345 {
Ritor1
parents:
diff changeset
1346 char drive[4] = {'X', ':', '\\', 0};
Ritor1
parents:
diff changeset
1347
Ritor1
parents:
diff changeset
1348 bool bGotCDFromRegistry = false;
Ritor1
parents:
diff changeset
1349
Ritor1
parents:
diff changeset
1350 HKEY hSoftware = nullptr,
Ritor1
parents:
diff changeset
1351 hNWC = nullptr,
Ritor1
parents:
diff changeset
1352 hMM7 = nullptr,
Ritor1
parents:
diff changeset
1353 hVersion = nullptr;
Ritor1
parents:
diff changeset
1354 if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, 0x2001Fu, &hSoftware))
Ritor1
parents:
diff changeset
1355 {
Ritor1
parents:
diff changeset
1356 if (!RegOpenKeyExA(hSoftware, "New World Computing", 0, 0x2001Fu, &hNWC))
Ritor1
parents:
diff changeset
1357 {
Ritor1
parents:
diff changeset
1358 if (!RegOpenKeyExA(hNWC, "Might and Magic VII", 0, 0x2001Fu, &hMM7))
Ritor1
parents:
diff changeset
1359 {
Ritor1
parents:
diff changeset
1360 if (!RegOpenKeyExA(hMM7, "1.0", 0, 0x2001Fu, &hVersion))
Ritor1
parents:
diff changeset
1361 {
Ritor1
parents:
diff changeset
1362 DWORD cbData = 3;
Ritor1
parents:
diff changeset
1363 if (!RegQueryValueExA(hVersion, "CDDrive", 0, 0, (BYTE *)drive, &cbData))
Ritor1
parents:
diff changeset
1364 bGotCDFromRegistry = true;
Ritor1
parents:
diff changeset
1365 }
Ritor1
parents:
diff changeset
1366 RegCloseKey(hVersion);
Ritor1
parents:
diff changeset
1367 }
Ritor1
parents:
diff changeset
1368 RegCloseKey(hMM7);
Ritor1
parents:
diff changeset
1369 }
Ritor1
parents:
diff changeset
1370 RegCloseKey(hNWC);
Ritor1
parents:
diff changeset
1371 }
Ritor1
parents:
diff changeset
1372 RegCloseKey(hSoftware);
Ritor1
parents:
diff changeset
1373
Ritor1
parents:
diff changeset
1374 if (bGotCDFromRegistry)
Ritor1
parents:
diff changeset
1375 if (CheckMM7CD(*drive))
Ritor1
parents:
diff changeset
1376 {
Ritor1
parents:
diff changeset
1377 cMM7GameCDDriveLetter = *drive;
Ritor1
parents:
diff changeset
1378 return true;
Ritor1
parents:
diff changeset
1379 }
Ritor1
parents:
diff changeset
1380
Ritor1
parents:
diff changeset
1381 while (true)
Ritor1
parents:
diff changeset
1382 {
Ritor1
parents:
diff changeset
1383 for (uint i = 0; i < 26; ++i)
Ritor1
parents:
diff changeset
1384 {
Ritor1
parents:
diff changeset
1385 drive[0] = 'A' + i;
Ritor1
parents:
diff changeset
1386
Ritor1
parents:
diff changeset
1387 if (GetDriveTypeA(drive) == DRIVE_CDROM)
Ritor1
parents:
diff changeset
1388 if (CheckMM7CD(*drive))
Ritor1
parents:
diff changeset
1389 {
Ritor1
parents:
diff changeset
1390 cMM7GameCDDriveLetter = *drive;
Ritor1
parents:
diff changeset
1391 WriteWindowsRegistryString("CDDrive", drive);
Ritor1
parents:
diff changeset
1392 return true;
Ritor1
parents:
diff changeset
1393 }
Ritor1
parents:
diff changeset
1394 }
Ritor1
parents:
diff changeset
1395
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1396 if (DialogBoxParamA(GetModuleHandleW(nullptr), "InsertCD", hWnd, (DLGPROC)InsertMM7CDDialogFunc, 0))
0
Ritor1
parents:
diff changeset
1397 continue;
Ritor1
parents:
diff changeset
1398 return false;
Ritor1
parents:
diff changeset
1399 }
Ritor1
parents:
diff changeset
1400 }
Ritor1
parents:
diff changeset
1401
Ritor1
parents:
diff changeset
1402 //----- (004651F4) --------------------------------------------------------
1655
a7eebb6ee7a2 Window Resize (change arguments to MM7_Initialize)
Nomad
parents: 1643
diff changeset
1403 bool MM7_Initialize(int game_width, int game_height)
0
Ritor1
parents:
diff changeset
1404 {
Ritor1
parents:
diff changeset
1405 wchar_t pCurrentDir[1024];
Ritor1
parents:
diff changeset
1406 _wgetcwd(pCurrentDir, 1024);
Ritor1
parents:
diff changeset
1407
Ritor1
parents:
diff changeset
1408 wchar_t pMM6IniFile[1024];
293
27670273a6ff little fix npc gen
Gloval
parents: 291
diff changeset
1409 wsprintfW(pMM6IniFile, L"%s\\mm6.ini", pCurrentDir);
0
Ritor1
parents:
diff changeset
1410
Ritor1
parents:
diff changeset
1411 bCanLoadFromCD = GetPrivateProfileIntW(L"settings", L"use_cd", 1, pMM6IniFile);
Ritor1
parents:
diff changeset
1412 if (bNoCD)
Ritor1
parents:
diff changeset
1413 bCanLoadFromCD = false;
Ritor1
parents:
diff changeset
1414 if (bCanLoadFromCD)
Ritor1
parents:
diff changeset
1415 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1416 Log::Warning(L"Checking for CD...");
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1417 if (!FindMM7CD(nullptr, &cMM7GameCDDriveLetter))
0
Ritor1
parents:
diff changeset
1418 return false;
2394
2fe8feb3dcd1 pMovie renamed to pMovie_Track and other
Ritor1
parents: 2393
diff changeset
1419 Log::Warning(L"...done.");
0
Ritor1
parents:
diff changeset
1420 }
Ritor1
parents:
diff changeset
1421
Ritor1
parents:
diff changeset
1422
Ritor1
parents:
diff changeset
1423 srand(GetTickCount());
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1424
2423
1b6bf88f561b fixing some memory access errors
Grumpy7
parents: 2420
diff changeset
1425 pEventTimer = Timer::Create();
1b6bf88f561b fixing some memory access errors
Grumpy7
parents: 2420
diff changeset
1426 pEventTimer->Initialize();
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1427 window = OSWindow::Create(L"Might and Magic® Trilogy", game_width, game_height);
0
Ritor1
parents:
diff changeset
1428
Ritor1
parents:
diff changeset
1429 pRenderer = Render::Create();
Ritor1
parents:
diff changeset
1430 if (!pRenderer)
Ritor1
parents:
diff changeset
1431 {
Ritor1
parents:
diff changeset
1432 Log::Warning(L"Render creation failed");
Ritor1
parents:
diff changeset
1433 return false;
Ritor1
parents:
diff changeset
1434 }
Ritor1
parents:
diff changeset
1435 else
Ritor1
parents:
diff changeset
1436 {
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1437 //bool bWindowMode = ReadWindowsRegistryInt("startinwindow", false);
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1438 //uint uDefaultDevice = ReadWindowsRegistryInt("D3D Device", 1);
0
Ritor1
parents:
diff changeset
1439 bool bColoredLights = ReadWindowsRegistryInt("Colored Lights", false);
Ritor1
parents:
diff changeset
1440 uint uLevelOfDetail = ReadWindowsRegistryInt("Detail Level", 1);
Ritor1
parents:
diff changeset
1441 uint bTinting = ReadWindowsRegistryInt("Tinting", 1) != 0;
Ritor1
parents:
diff changeset
1442
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1443 if (!pRenderer->Initialize(window, bColoredLights, uLevelOfDetail, bTinting))
0
Ritor1
parents:
diff changeset
1444 {
Ritor1
parents:
diff changeset
1445 Log::Warning(L"Render failed to initialize");
Ritor1
parents:
diff changeset
1446 return false;
Ritor1
parents:
diff changeset
1447 }
Ritor1
parents:
diff changeset
1448 }
492
Gloval
parents: 484
diff changeset
1449
351
5f36449527c6 stru351 -> summoned/spell-enchanted item
Nomad
parents: 350
diff changeset
1450 game_starting_year = 1168;
0
Ritor1
parents:
diff changeset
1451
Ritor1
parents:
diff changeset
1452 pParty = new Party;
147
c70fea5013aa 12.02.13
Ritor1
parents: 120
diff changeset
1453 memset(&pParty->pHirelings, 0, sizeof(pParty->pHirelings));
0
Ritor1
parents:
diff changeset
1454 pParty->uWalkSpeed = GetPrivateProfileIntW(L"debug", L"walkspeed", 384, pMM6IniFile);
Ritor1
parents:
diff changeset
1455 pParty->uDefaultEyelevel = GetPrivateProfileIntW(L"party", L"eyelevel", 160, pMM6IniFile);
Ritor1
parents:
diff changeset
1456 pParty->sEyelevel = pParty->uDefaultEyelevel;
Ritor1
parents:
diff changeset
1457 pParty->uDefaultPartyHeight = GetPrivateProfileIntW(L"party", L"height", 192, pMM6IniFile);
Ritor1
parents:
diff changeset
1458 pParty->uPartyHeight = pParty->uDefaultPartyHeight;
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1459
0
Ritor1
parents:
diff changeset
1460 MM6_Initialize(pMM6IniFile);
Ritor1
parents:
diff changeset
1461
2447
45dcf81c5b1c //pKeyActionMap = new KeyboardActionMapping;
Ritor1
parents: 2444
diff changeset
1462 pKeyActionMap = new KeyboardActionMapping;
0
Ritor1
parents:
diff changeset
1463
2415
f4af3b203f65 LOD.cpp cleaned and search memory corrupt
Ritor1
parents: 2412
diff changeset
1464 // _CrtDumpMemoryLeaks();
0
Ritor1
parents:
diff changeset
1465 OnTimer(1);
Ritor1
parents:
diff changeset
1466 GameUI_StatusBar_UpdateTimedString(1);
Ritor1
parents:
diff changeset
1467 pGame = Game::Create();
Ritor1
parents:
diff changeset
1468 pMouse = pGame->pMouseInstance;
1655
a7eebb6ee7a2 Window Resize (change arguments to MM7_Initialize)
Nomad
parents: 1643
diff changeset
1469
0
Ritor1
parents:
diff changeset
1470
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1473 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1474 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.",
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1475 L"Files Missing", MB_ICONEXCLAMATION);
0
Ritor1
parents:
diff changeset
1476 return false;
Ritor1
parents:
diff changeset
1477 }
Ritor1
parents:
diff changeset
1478 pIcons_LOD->dword_011BA4 = 0;
Ritor1
parents:
diff changeset
1479
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1482 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1483 MessageBoxW(nullptr, L"Some files are missing\n\nPlease Reinstall.",
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1484 L"Files Missing", MB_ICONEXCLAMATION);
0
Ritor1
parents:
diff changeset
1485 return false;
Ritor1
parents:
diff changeset
1486 }
Ritor1
parents:
diff changeset
1487
Ritor1
parents:
diff changeset
1488 InitializeGameText();
Ritor1
parents:
diff changeset
1489
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1492 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1493 MessageBoxA(nullptr, pGlobalTXT_LocalizationStrings[63],
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1494 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION);
0
Ritor1
parents:
diff changeset
1495 return false;
Ritor1
parents:
diff changeset
1496 }
Ritor1
parents:
diff changeset
1497
Ritor1
parents:
diff changeset
1498 pSprites_LOD = new LODFile_Sprites;
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1499 if (!pSprites_LOD->LoadSprites("data\\sprites.lod"))
0
Ritor1
parents:
diff changeset
1500 {
Ritor1
parents:
diff changeset
1501 MessageBoxA(nullptr,
Ritor1
parents:
diff changeset
1502 pGlobalTXT_LocalizationStrings[63],
Ritor1
parents:
diff changeset
1503 pGlobalTXT_LocalizationStrings[184], MB_ICONEXCLAMATION);
Ritor1
parents:
diff changeset
1504 return false;
Ritor1
parents:
diff changeset
1505 }
Ritor1
parents:
diff changeset
1506
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
1507
1543
Nomad
parents: 1542
diff changeset
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
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1551 if (_access("../mm8/data/icons.lod", 0) == 0)
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1552 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1553 pIcons_LOD_mm8 = new LODFile_IconsBitmaps;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1554 if (!pIcons_LOD_mm8->Load("../mm8/data/icons.lod", "icons"))
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1555 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1556 delete pIcons_LOD_mm8;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1557 pIcons_LOD_mm8 = nullptr;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1558 Log::Warning(L"Unable to load mm8:icons.lod");
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1559 }
0
Ritor1
parents:
diff changeset
1560 }
Ritor1
parents:
diff changeset
1561 else
1541
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1562 Log::Warning(L"Unable to find mm8:icons.lod");
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1563
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1564
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1565 if (_access("../mm8/data/bitmaps.lod", 0) == 0)
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1566 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1567 pBitmaps_LOD_mm8 = new LODFile_IconsBitmaps;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1568 if (!pBitmaps_LOD_mm8->Load("../mm8/data/bitmaps.lod", "bitmaps"))
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1569 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1570 delete pBitmaps_LOD_mm8;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1571 pBitmaps_LOD_mm8 = nullptr;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1572 Log::Warning(L"Unable to load mm8:bitmaps.lod");
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1573 }
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1574 }
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1575 else
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1576 Log::Warning(L"Unable to find mm8:bitmaps.lod");
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1577
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1578
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1579 if (_access("../mm8/data/sprites.lod", 0) == 0)
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1580 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1581 pSprites_LOD_mm8 = new LODFile_Sprites;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1582 if (!pSprites_LOD_mm8->LoadSprites("../mm8/data/sprites.lod"))
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1583 {
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1584 delete pSprites_LOD_mm8;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1585 pSprites_LOD_mm8 = nullptr;
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1586 Log::Warning(L"Unable to load mm8:sprites.lod");
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1587 }
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1588 }
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1589 else
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1590 Log::Warning(L"Unable to find mm8:sprites.lod");
1543
Nomad
parents: 1542
diff changeset
1591 #endif
1541
86cb7398d2a8 mm8 icons
Nomad
parents: 1477
diff changeset
1592
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1596 void *sft_mm7 = pEvents_LOD->LoadRaw("dsft.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1605 void *tft_mm7 = pEvents_LOD->LoadRaw("dtft.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1614 void *tiles_mm7 = pEvents_LOD->LoadRaw("dtile.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1623 void *pft_mm7 = pEvents_LOD->LoadRaw("dpft.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1632 void *ift_mm7 = pEvents_LOD->LoadRaw("dift.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1641 void *decs_mm7 = pEvents_LOD->LoadRaw("ddeclist.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1650 void *objs_mm7 = pEvents_LOD->LoadRaw("dobjlist.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1659 void *mons_mm7 = pEvents_LOD->LoadRaw("dmonlist.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1668 void *chests_mm7 = pEvents_LOD->LoadRaw("dchest.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1677 void *overlays_mm7 = pEvents_LOD->LoadRaw("doverlay.bin", 1);
0
Ritor1
parents:
diff changeset
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
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1686 void *sounds_mm7 = pEvents_LOD->LoadRaw("dsounds.bin", 1);
0
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1692 }
Ritor1
parents:
diff changeset
1693
Ritor1
parents:
diff changeset
1694
Ritor1
parents:
diff changeset
1695
492
Gloval
parents: 484
diff changeset
1696
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1697 if (dword_6BE368_debug_settings_2 & DEBUG_SETTINGS_RUN_IN_WIDOW)
0
Ritor1
parents:
diff changeset
1698 {
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1699 //window->SetWindowedMode(game_width, game_height);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1700 pRenderer->SwitchToWindow();
0
Ritor1
parents:
diff changeset
1701 }
Ritor1
parents:
diff changeset
1702 else
Ritor1
parents:
diff changeset
1703 {
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1704 __debugbreak(); // Nomad
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1705 window->SetFullscreenMode();
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1706 pRenderer->InitializeFullscreen();
0
Ritor1
parents:
diff changeset
1707 }
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1708
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1709 uSoundVolumeMultiplier = min(9, ReadWindowsRegistryInt("soundflag", 9));
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1710 uMusicVolimeMultiplier = min(9, ReadWindowsRegistryInt("musicflag", 9));
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1711 uVoicesVolumeMultiplier = min(9, ReadWindowsRegistryInt("CharVoices", 9));
0
Ritor1
parents:
diff changeset
1712 bShowDamage = ReadWindowsRegistryInt("ShowDamage", 1) != 0;
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1713
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1714 uGammaPos = min(4, ReadWindowsRegistryInt("GammaPos", 4));
0
Ritor1
parents:
diff changeset
1715 pGame->pGammaController->Initialize(uGammaPos * 0.1 + 0.6);
Ritor1
parents:
diff changeset
1716
Ritor1
parents:
diff changeset
1717 if ( ReadWindowsRegistryInt("Bloodsplats", 1) )
591
a463d7784d33 missed Merge
zipi
parents: 589
diff changeset
1718 pGame->uFlags2 |= GAME_FLAGS_2_DRAW_BLOODSPLATS;
0
Ritor1
parents:
diff changeset
1719 else
733
700b58aac975 MonsterPopup preview doll fixed
Nomad
parents: 731
diff changeset
1720 pGame->uFlags2 &= ~GAME_FLAGS_2_DRAW_BLOODSPLATS;
0
Ritor1
parents:
diff changeset
1721
2427
94393b73d333 * Some initialization stuff
a.parshin
parents: 2423
diff changeset
1722 uTurnSpeed = ReadWindowsRegistryInt("TurnDelta", 3);
0
Ritor1
parents:
diff changeset
1723
Ritor1
parents:
diff changeset
1724 if (!bNoSound)
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1725 pAudioPlayer->Initialize();
0
Ritor1
parents:
diff changeset
1726
1262
0aeac0b9ca30 included header cleanup
Grumpy7
parents: 1254
diff changeset
1727 pVideoPlayer = new VideoPlayer();
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1728 pVideoPlayer->Initialize(window);
0
Ritor1
parents:
diff changeset
1729
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
1730 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000;
0
Ritor1
parents:
diff changeset
1731
Ritor1
parents:
diff changeset
1732 switch ( uTurnSpeed )
Ritor1
parents:
diff changeset
1733 {
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1734 case 0: // undefined turn option
1067
a19cdcaa36fe merge error
zipi
parents: 1065
diff changeset
1735 __debugbreak(); // really shouldn't use this mode
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1736 uTurnSpeed = (unsigned int)uCPUSpeed < 199 ? 128 : 64; // adjust turn speed to estimated fps
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1737 break;
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1738
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1739 case 1u: // 16x
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1740 Log::Warning(L"x16 Turn Speed"); // really shouldn't use this mode
0
Ritor1
parents:
diff changeset
1741 uTurnSpeed = 128;
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1742 break;
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1743
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1744 case 2u: // 32x
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1745 Log::Warning(L"x32 Turn Speed"); // really shouldn't use this mode
0
Ritor1
parents:
diff changeset
1746 uTurnSpeed = 64;
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1747 break;
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1748
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1749 case 3u: // smooth
0
Ritor1
parents:
diff changeset
1750 uTurnSpeed = 0;
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1751 break;
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1752 }
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
1753
0
Ritor1
parents:
diff changeset
1754 return true;
Ritor1
parents:
diff changeset
1755 }
Ritor1
parents:
diff changeset
1756
Ritor1
parents:
diff changeset
1757 //----- (00465D0B) --------------------------------------------------------
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1758 void SecondaryInitialization()
0
Ritor1
parents:
diff changeset
1759 {
1802
633f81bb3ae7 HWND -> class OSWindow
Nomad
parents: 1747
diff changeset
1760 pMouse->Initialize(window);
0
Ritor1
parents:
diff changeset
1761
Ritor1
parents:
diff changeset
1762 pItemsTable = new ItemsTable;
Ritor1
parents:
diff changeset
1763 pItemsTable->Initialize();
Ritor1
parents:
diff changeset
1764
2154
9bd7522cdbbb Render decoupling.
Nomad
parents: 2153
diff changeset
1765 //pBitmaps_LOD->can_load_hardware_sprites = 1;
2069
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1766 //pBitmaps_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1767 pBitmaps_LOD->SetupPalettes(5, 6, 5);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1768 //pIcons_LOD->SetupPalettes(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1769 pIcons_LOD->SetupPalettes(5, 6, 5);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1770 //pPaletteManager->SetColorChannelInfo(pRenderer->uTargetRBits, pRenderer->uTargetGBits, pRenderer->uTargetBBits);
259df09dfb50 32bits almost there
Nomad
parents: 2061
diff changeset
1771 pPaletteManager->SetColorChannelInfo(5, 6, 5);
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1772
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1773 pPaletteManager->SetMistColor(128, 128, 128);
0
Ritor1
parents:
diff changeset
1774 pPaletteManager->RecalculateAll();
2154
9bd7522cdbbb Render decoupling.
Nomad
parents: 2153
diff changeset
1775 //pSprites_LOD->can_load_hardware_sprites = 1;
0
Ritor1
parents:
diff changeset
1776 pObjectList->InitializeSprites();
Ritor1
parents:
diff changeset
1777 pOverlayList->InitializeSprites();
2412
e7a551f458e1 LoadSound - cause of the crash exe file
Ritor1
parents: 2402
diff changeset
1778
0
Ritor1
parents:
diff changeset
1779 if (!bNoSound)
Ritor1
parents:
diff changeset
1780 pSoundList->Initialize();
Ritor1
parents:
diff changeset
1781
Ritor1
parents:
diff changeset
1782
Ritor1
parents:
diff changeset
1783 for (uint i = 0; i < 4; ++i)
Ritor1
parents:
diff changeset
1784 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1785 static const char *pUIAnimNames[4] =
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1786 {
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1787 "glow03", "glow05",
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1788 "torchA", "wizeyeA"
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1789 };
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1790 static unsigned short _4E98D0[4][4] =
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1791 {
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1792 {479, 0, 329, 0},
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1793 {585, 0, 332, 0},
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1794 {468, 0, 0, 0},
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1795 {606, 0, 0, 0}
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1796 };
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1797
0
Ritor1
parents:
diff changeset
1798 pUIAnims[i]->uIconID = pIconsFrameTable->FindIcon(pUIAnimNames[i]);
Ritor1
parents:
diff changeset
1799 pIconsFrameTable->InitializeAnimation(pUIAnims[i]->uIconID);
Ritor1
parents:
diff changeset
1800
Ritor1
parents:
diff changeset
1801 pUIAnims[i]->uAnimLength = 0;
Ritor1
parents:
diff changeset
1802 pUIAnims[i]->uAnimTime = 0;
Ritor1
parents:
diff changeset
1803 pUIAnims[i]->x = _4E98D0[i][0];
Ritor1
parents:
diff changeset
1804 pUIAnims[i]->y = _4E98D0[i][2];
Ritor1
parents:
diff changeset
1805 }
Ritor1
parents:
diff changeset
1806
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1807 for (unsigned int i = 0; i < pObjectList->uNumObjects; ++i)
0
Ritor1
parents:
diff changeset
1808 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1809 pObjectList->pObjects[i].uParticleTrailColor = pObjectList->pObjects[i].uParticleTrailColorB |
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1810 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorG << 8) |
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1811 ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorR << 16);
0
Ritor1
parents:
diff changeset
1812 }
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1813
0
Ritor1
parents:
diff changeset
1814 MainMenuUI_Create();
Ritor1
parents:
diff changeset
1815 pGame->pStru6Instance->LoadAnimations();
Ritor1
parents:
diff changeset
1816
Ritor1
parents:
diff changeset
1817 for (uint i = 0; i < 7; ++i)
Ritor1
parents:
diff changeset
1818 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1819 char container_name[64];
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1820 sprintf(container_name, "HDWTR%03u", i);
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
1821 pRenderer->pHDWaterBitmapIDs[i] = pBitmaps_LOD->LoadTexture(container_name);
0
Ritor1
parents:
diff changeset
1822 }
Ritor1
parents:
diff changeset
1823
Ritor1
parents:
diff changeset
1824 pNPCStats = new NPCStats;
110
aa9b34eb3da4 NPC(Margaret) fix
Ritor1
parents: 102
diff changeset
1825 memset(pNPCStats->pNPCData, 0, 0x94BCu);
0
Ritor1
parents:
diff changeset
1826 pNPCStats->Initialize();
Ritor1
parents:
diff changeset
1827
Ritor1
parents:
diff changeset
1828 Initialize_GlobalEVT();
762
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1829 pBitmaps_LOD->_inlined_sub0();
cf2fbac6edc9 Misc cleaning
Nomad
parents: 757
diff changeset
1830 pSprites_LOD->_inlined_sub0();
0
Ritor1
parents:
diff changeset
1831 pPaletteManager->LockAll();
Ritor1
parents:
diff changeset
1832
Ritor1
parents:
diff changeset
1833 _mkdir("Saves");
Ritor1
parents:
diff changeset
1834 for (uint i = 0; i < 5; ++i)
Ritor1
parents:
diff changeset
1835 for (uint j = 0; j < 6; ++j)
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
1839 }
Ritor1
parents:
diff changeset
1840
Ritor1
parents:
diff changeset
1841 Initialize_GamesLOD_NewLOD();
1051
05c62d166182 004C1D2B cleaned
Nomad
parents: 1038
diff changeset
1842 _576E2C_current_minimap_zoom = 512;
0
Ritor1
parents:
diff changeset
1843 dword_576E28 = 9;
Ritor1
parents:
diff changeset
1844 }
Ritor1
parents:
diff changeset
1845
522
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1846 void IntegrityTest()
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
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
9bd7522cdbbb Render decoupling.
Nomad
parents: 2153
diff changeset
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
41c36ecc9f32 MapsLongTimer.h
Ritor1
parents: 2374
diff changeset
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
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1978 }
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1979
2277
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
1980 bool new_sky = false; //íîâîå íåáî(òðåáóþòñÿ òåêñòóðêè)
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
1981 int max_flight_height = 4000; //ìàêñèìàëüíàÿ âûñîòà ïîë¸òà
2034
cc197a3b6eff GetScriptFileLocation
Ritor1
parents: 2033
diff changeset
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
Ritor1
parents:
diff changeset
1986 //----- (00462C94) --------------------------------------------------------
Ritor1
parents:
diff changeset
1987 bool MM_Main(const wchar_t *pCmdLine)
Ritor1
parents:
diff changeset
1988 {
522
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1989 IntegrityTest();
1706
7153ee05d088 Fixed window shrink due to menu
Nomad
parents: 1659
diff changeset
1990
246
1bfe546561c4 sprintfex
Nomad
parents: 234
diff changeset
1991 char test[1024];
522
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1992 sprintfex(test, "^Pi[%s]: çíàõàð^R[ü;êà;]", "Çîëòàí");
61343380715b Origianl structures integrity test added
Nomad
parents: 520
diff changeset
1993
2052
71a814f4482a Moved implementation to cpp
Nomad
parents: 2050
diff changeset
1994 lua = new LuaVM;
71a814f4482a Moved implementation to cpp
Nomad
parents: 2050
diff changeset
1995 lua->Initialize();
2031
e21db9518295 Lua included
Ritor1
parents: 2021
diff changeset
1996
1052
d48c762de563 -nomarg
Nomad
parents: 1051
diff changeset
1997 bool bNoMargareth = false;
0
Ritor1
parents:
diff changeset
1998 if (pCmdLine && *pCmdLine)
Ritor1
parents:
diff changeset
1999 {
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2000 //if (wcsstr(pCmdLine, L"-usedefs"))
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2001 // bDebugResouces = 1;
0
Ritor1
parents:
diff changeset
2002 if (wcsstr(pCmdLine, L"-window"))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2003 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW;
0
Ritor1
parents:
diff changeset
2004
Ritor1
parents:
diff changeset
2005 if (wcsstr(pCmdLine, L"-nointro"))
Ritor1
parents:
diff changeset
2006 bNoIntro = true;//dword_6BE364_game_settings_1 |= 4;
Ritor1
parents:
diff changeset
2007 if (wcsstr(pCmdLine, L"-nologo"))
Ritor1
parents:
diff changeset
2008 bNoLogo = true;//dword_6BE364_game_settings_1 |= 8;
Ritor1
parents:
diff changeset
2009 if (wcsstr(pCmdLine, L"-nosound"))
Ritor1
parents:
diff changeset
2010 bNoSound = true; //dword_6BE364_game_settings_1 |= 0x10;
Ritor1
parents:
diff changeset
2011
Ritor1
parents:
diff changeset
2012 bWalkSound = ReadWindowsRegistryInt("WalkSound", 1) != 0;
Ritor1
parents:
diff changeset
2013 if (wcsstr(pCmdLine, L"-nowalksound"))
Ritor1
parents:
diff changeset
2014 bWalkSound = false;//dword_6BE364_game_settings_1 |= 0x20;
256
c5e5c5146957 -novideo command arg
Nomad
parents: 254
diff changeset
2015 if (wcsstr(pCmdLine, L"-novideo"))
0
Ritor1
parents:
diff changeset
2016 {
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2017 dword_6BE364_game_settings_1 |= GAME_SETTINGS_NO_HOUSE_ANIM;
0
Ritor1
parents:
diff changeset
2018 bNoVideo = true;
Ritor1
parents:
diff changeset
2019 }
Ritor1
parents:
diff changeset
2020 if (wcsstr(pCmdLine, L"-nocd"))
Ritor1
parents:
diff changeset
2021 bNoCD = true;
168
ee11772d0ad2 New sky (turn on -new_sky console command)
Nomad
parents: 141
diff changeset
2022 if (wcsstr(pCmdLine, L"-new_sky"))
ee11772d0ad2 New sky (turn on -new_sky console command)
Nomad
parents: 141
diff changeset
2023 new_sky = true;
1052
d48c762de563 -nomarg
Nomad
parents: 1051
diff changeset
2024 if (wcsstr(pCmdLine, L"-nomarg"))
d48c762de563 -nomarg
Nomad
parents: 1051
diff changeset
2025 bNoMargareth = true;
0
Ritor1
parents:
diff changeset
2026 }
Ritor1
parents:
diff changeset
2027
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
2028 /*v8 = _4AC1C9_get_cpu_speed(0, (Vec4_int_ *)a2);
0
Ritor1
parents:
diff changeset
2029 Rect.left = *(int *)v8;
Ritor1
parents:
diff changeset
2030 Rect.top = *(int *)(v8 + 4);
Ritor1
parents:
diff changeset
2031 Rect.right = *(int *)(v8 + 8);
Ritor1
parents:
diff changeset
2032 Rect.bottom = *(int *)(v8 + 12);
731
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
2033 uCPUSpeed = Rect.bottom;*/
de482c901171 Moved unused CPU detection stuff to a separate file.
Nomad
parents: 728
diff changeset
2034 uCPUSpeed = 2048; // about 2GHz
4
8e33efd39355 15.01.13(work)
Ritor1
parents: 3
diff changeset
2035
2416
8b04ba723324 misstake in LoadSound
Ritor1
parents: 2415
diff changeset
2036 //_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF );//Ritor1: for memory test(äëÿ ïðîâåðêè ïàìÿòè)
2447
45dcf81c5b1c //pKeyActionMap = new KeyboardActionMapping;
Ritor1
parents: 2444
diff changeset
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
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2039 {
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2040 Log::Warning(L"MM init: failed");
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2041 pGame->Deinitialize();
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2042 return 1;
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2043 }
0
Ritor1
parents:
diff changeset
2044
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2045 pEventTimer->Pause();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2046
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2047 SetUserInterface(PartyAlignment_Neutral, false);
2290
d65414f65bd4 add MMT.cpp and MMT.h
Ritor1
parents: 2281
diff changeset
2048 ShowLogoVideo();
d65414f65bd4 add MMT.cpp and MMT.h
Ritor1
parents: 2281
diff changeset
2049 //ShowIntroVideo_and_LoadingScreen();
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2050 WriteWindowsRegistryInt("Ran once", 1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2051 dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2052 pGame->InitializeGammaController();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2053 SecondaryInitialization();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2054 pRenderer->SetRasterClipRect(0, 0, window->GetWidth() - 1, window->GetHeight() - 1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2055 FinalInitialization();
2279
a01d3cf9ff83 mm7 game sound
Ritor1
parents: 2278
diff changeset
2056
a01d3cf9ff83 mm7 game sound
Ritor1
parents: 2278
diff changeset
2057 //Ritor1: include
2278
0cd17b0d36c2 MMT_MainMenu
Ritor1
parents: 2277
diff changeset
2058 MMT_MainMenu_Loop();
2279
a01d3cf9ff83 mm7 game sound
Ritor1
parents: 2278
diff changeset
2059
2394
2fe8feb3dcd1 pMovie renamed to pMovie_Track and other
Ritor1
parents: 2393
diff changeset
2060 Log::Warning(L"MM: entering main loop");
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2061 while ( 1 )
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2062 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2063 MainMenuWindow* main_menu_window = MainMenuWindow::Create();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2064 window->AddControl(main_menu_window);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2065 MainMenu_Loop();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2066 uGameState = GAME_STATE_PLAYING;
0
Ritor1
parents:
diff changeset
2067 while ( 1 )
Ritor1
parents:
diff changeset
2068 {
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2069 if (uGameState == GAME_FINISHED || GetCurrentMenuID() == MENU_EXIT_GAME)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2070 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2071 pGame->Deinitialize();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2072 return true;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2073 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2074
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2075 if (GetCurrentMenuID() == MENU_NEWGAME)
0
Ritor1
parents:
diff changeset
2076 {
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2077 if ( pAudioPlayer->hAILRedbook )
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2078 AIL_redbook_stop(pAudioPlayer->hAILRedbook);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2079 pParty->Reset();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2080 pOtherOverlayList->Reset();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2081 strcpy(pCurrentMapName, pStartingMapName);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2082 pParty->CreateDefaultParty(0);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2083 PlayerCreationUI_Initialize();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2084 if ( PlayerCreationUI_Loop() )
982
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2085 {
0
Ritor1
parents:
diff changeset
2086 DeleteCCharFont();
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2087 break;
2
89240115d392 MainMenuBtn(work)
Ritor1
parents: 0
diff changeset
2088 }
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2089 DeleteCCharFont();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2090 bFlashQuestBook = true;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2091 PlayFullscreenMovie(MOVIE_Emerald);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2092 //pGame->pCShow->PlayMovie(MOVIE_Emerald, 0);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2093 SaveNewGame();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2094 if (bNoMargareth)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2095 _449B7E_toggle_bit(pParty->_quest_bits, PARTY_QUEST_EMERALD_MARGARETH_OFF, 1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2096 pGame->Loop();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2097 if (uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU)
101
2fb33d31ca0d 8.02.13
Ritor1
parents: 90
diff changeset
2098 {
2fb33d31ca0d 8.02.13
Ritor1
parents: 90
diff changeset
2099 SetCurrentMenuID(MENU_NEWGAME);
982
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2100 uGameState = GAME_STATE_PLAYING;
0
Ritor1
parents:
diff changeset
2101 continue;
101
2fb33d31ca0d 8.02.13
Ritor1
parents: 90
diff changeset
2102 }
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2103 else if (uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2104 break;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2105 assert(false && "Invalid game state");
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2106 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2107 if (GetCurrentMenuID() == MENU_CREDITS)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2108 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2109 if ( pAudioPlayer->hAILRedbook )
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2110 AIL_redbook_stop(pAudioPlayer->hAILRedbook);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2111 MainMenuUI_Credits_Loop();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2112 break;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2113 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2114 if (GetCurrentMenuID() == MENU_5 || GetCurrentMenuID() == MENU_LoadingProcInMainMenu)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2115 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2116 uGameState = GAME_STATE_PLAYING;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2117 pGame->Loop();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2118 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2119 else
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2120 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2121 if (GetCurrentMenuID() == MENU_DebugBLVLevel)
907
f3ccfc765502 RentRoom
Ritor1
parents: 900
diff changeset
2122 {
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2123 pMouse->ChangeActivation(0);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2124 pParty->Reset();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2125 pParty->CreateDefaultParty(1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2126
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2127 __debugbreak();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2128 /*extern void CreateDefaultBLVLevel();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2129 CreateDefaultBLVLevel();
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2130
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2131 OPENFILENAMEA ofn;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2132 if ( !GetOpenFileNameA((LPOPENFILENAMEA)&ofn) )
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2133 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2134 pMouse->ChangeActivation(1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2135 break;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2136 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2137 _chdir("..\\");
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2138 strcpy(pCurrentMapName, ofn.lpstrFileTitle);*/
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2139 pMouse->ChangeActivation(1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2140 pGame->Loop();
907
f3ccfc765502 RentRoom
Ritor1
parents: 900
diff changeset
2141 }
0
Ritor1
parents:
diff changeset
2142 }
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2143 if ( uGameState == GAME_STATE_LOADING_GAME )
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2144 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2145 SetCurrentMenuID(MENU_5);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2146 uGameState = GAME_STATE_PLAYING;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2147 continue;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2148 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2149 if ( uGameState == GAME_STATE_NEWGAME_OUT_GAMEMENU )
0
Ritor1
parents:
diff changeset
2150 {
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2151 SetCurrentMenuID(MENU_NEWGAME);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2152 uGameState = GAME_STATE_PLAYING;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2153 continue;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2154 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2155 if ( uGameState == GAME_STATE_GAME_QUITTING_TO_MAIN_MENU)// from the loaded game
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2156 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2157 pAudioPlayer->StopChannels(-1, -1);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2158 uGameState = GAME_STATE_PLAYING;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2159 break;
0
Ritor1
parents:
diff changeset
2160 }
Ritor1
parents:
diff changeset
2161 }
2216
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2162 if (!bNoSound && pAudioPlayer->hAILRedbook)
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2163 {
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2164 pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2165 AIL_redbook_stop(pAudioPlayer->hAILRedbook);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2166 unsigned int startms, end_ms;
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2167 AIL_redbook_track_info(pAudioPlayer->hAILRedbook, 14, &startms, &end_ms);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2168 AIL_redbook_play(pAudioPlayer->hAILRedbook, startms + 1, end_ms);
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2169 }
3f375342de12 window->GetWidth() continue
Ritor1
parents: 2215
diff changeset
2170 }
2050
bf89a2e9eea1 LuaClass.h
Ritor1
parents: 2044
diff changeset
2171 //lua_close(L);
0
Ritor1
parents:
diff changeset
2172 pGame->Deinitialize();
734
2f4e33c1ed24 stru154
Nomad
parents: 733
diff changeset
2173 return 1;
0
Ritor1
parents:
diff changeset
2174 }
Ritor1
parents:
diff changeset
2175
Ritor1
parents:
diff changeset
2176
Ritor1
parents:
diff changeset
2177 //----- (00466082) --------------------------------------------------------
Ritor1
parents:
diff changeset
2178 void MM6_Initialize(const wchar_t *pIniFilename)
Ritor1
parents:
diff changeset
2179 {
Ritor1
parents:
diff changeset
2180 //int v0; // eax@1
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
2181 //UINT v1; // eax@18
0
Ritor1
parents:
diff changeset
2182 size_t v2; // eax@31
Ritor1
parents:
diff changeset
2183 size_t v3; // ebx@32
Ritor1
parents:
diff changeset
2184 size_t v4; // edi@36
Ritor1
parents:
diff changeset
2185 //char v5[120]; // [sp+Ch] [bp-17Ch]@1
Ritor1
parents:
diff changeset
2186 //char String[120]; // [sp+84h] [bp-104h]@32
Ritor1
parents:
diff changeset
2187 char pDefaultGroundTexture[16]; // [sp+FCh] [bp-8Ch]@32
Ritor1
parents:
diff changeset
2188 //char pIniFilename[120]; // [sp+10Ch] [bp-7Ch]@1
Ritor1
parents:
diff changeset
2189 unsigned int v9; // [sp+184h] [bp-4h]@28
Ritor1
parents:
diff changeset
2190
Ritor1
parents:
diff changeset
2191 //_getcwd(v5, 120);
Ritor1
parents:
diff changeset
2192 //sprintfex(pIniFilename, "%s\\mm6.ini", v5);
Ritor1
parents:
diff changeset
2193 viewparams = new ViewingParams;
819
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2194 game_viewport_x = viewparams->uScreen_topL_X = GetPrivateProfileIntW(L"screen", L"vx1", 8, pIniFilename);
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2195 game_viewport_y = viewparams->uScreen_topL_Y = GetPrivateProfileIntW(L"screen", L"vy1", 8, pIniFilename);
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2196 game_viewport_z = viewparams->uScreen_BttmR_X = GetPrivateProfileIntW(L"screen", L"vx2", 468, pIniFilename);
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2197 game_viewport_w = viewparams->uScreen_BttmR_Y = GetPrivateProfileIntW(L"screen", L"vy2", 351, pIniFilename);
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2198 game_viewport_width = game_viewport_z - game_viewport_x;
9359c114f98c More on screenshot
Nomad
parents: 818
diff changeset
2199 game_viewport_height = game_viewport_w - game_viewport_y + 1;
0
Ritor1
parents:
diff changeset
2200
Ritor1
parents:
diff changeset
2201
Ritor1
parents:
diff changeset
2202 pAudioPlayer = new AudioPlayer;
Ritor1
parents:
diff changeset
2203 pAudioPlayer->uMixerChannels = GetPrivateProfileIntW(L"settings", L"mixerchannels", 16, pIniFilename);
Ritor1
parents:
diff changeset
2204 if ( pAudioPlayer->uMixerChannels > 16 )
Ritor1
parents:
diff changeset
2205 pAudioPlayer->uMixerChannels = 16;
Ritor1
parents:
diff changeset
2206
Ritor1
parents:
diff changeset
2207
Ritor1
parents:
diff changeset
2208 if (GetPrivateProfileIntW(L"debug", L"nomonster", 0, pIniFilename))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2209 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_ACTORS;
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
2210 if (ReadWindowsRegistryInt("startinwindow", 0))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2211 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW;
0
Ritor1
parents:
diff changeset
2212 if (GetPrivateProfileIntW(L"debug", L"showFR", 0, pIniFilename))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2213 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_0002_SHOW_FR;
0
Ritor1
parents:
diff changeset
2214 if (GetPrivateProfileIntW(L"debug", L"nodamage", 0, pIniFilename))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2215 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DAMAGE;
0
Ritor1
parents:
diff changeset
2216 if (GetPrivateProfileIntW(L"debug", L"nodecoration", 0, pIniFilename))
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2217 dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_NO_DECORATIONS;
0
Ritor1
parents:
diff changeset
2218
Ritor1
parents:
diff changeset
2219 wchar_t pStartingMapNameW[1024];
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
2222
Ritor1
parents:
diff changeset
2223 v9 = 0;
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
2224 if ( strlen(pStartingMapName) )
0
Ritor1
parents:
diff changeset
2225 {
Ritor1
parents:
diff changeset
2226 do
Ritor1
parents:
diff changeset
2227 {
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
2228 if ( pStartingMapName[v9] == ' ' )
0
Ritor1
parents:
diff changeset
2229 pStartingMapName[v9] = 0;
Ritor1
parents:
diff changeset
2230 ++v9;
1477
7ef4b64f6329 * LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents: 1467
diff changeset
2231 v2 = strlen(pStartingMapName);
0
Ritor1
parents:
diff changeset
2232 }
Ritor1
parents:
diff changeset
2233 while ( v9 < v2 );
Ritor1
parents:
diff changeset
2234 }
Ritor1
parents:
diff changeset
2235
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2236 pODMRenderParams = new ODMRenderParams;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2237 pODMRenderParams->outdoor_no_mist = GetPrivateProfileIntW(L"debug", L"noMist", 0, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2238 pODMRenderParams->bNoSky = GetPrivateProfileIntW(L"outdoor", L"nosky", 0, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2239 pODMRenderParams->bDoNotRenderDecorations = GetPrivateProfileIntW(L"render", L"nodecorations", 0, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2240 pODMRenderParams->outdoor_no_wavy_water = GetPrivateProfileIntW(L"outdoor", L"nowavywater", 0, pIniFilename);
0
Ritor1
parents:
diff changeset
2241 outdoor_grid_band_1 = GetPrivateProfileIntW(L"outdoor", L"gridband1", 10, pIniFilename);
Ritor1
parents:
diff changeset
2242 outdoor_grid_band_2 = GetPrivateProfileIntW(L"outdoor", L"gridband2", 15, pIniFilename);
Ritor1
parents:
diff changeset
2243 outdoor_grid_band_3 = GetPrivateProfileIntW(L"outdoor", L"gridband3", 25, pIniFilename);
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2244 pODMRenderParams->terrain_gamma = GetPrivateProfileIntW(L"outdoor", L"ter_gamma", 0, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2245 pODMRenderParams->building_gamme = GetPrivateProfileIntW(L"outdoor", L"bld_gamma", 0, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2246 pODMRenderParams->shading_dist_shade = GetPrivateProfileIntW(L"shading", L"dist_shade", 2048, pIniFilename);
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2247 pODMRenderParams->shading_dist_shademist = GetPrivateProfileIntW(L"shading", L"dist_shademist", 4096, pIniFilename);
1765
53c0453f4eb2 new_draw_object_dist
Ritor1
parents: 1747
diff changeset
2248
2277
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
2249 //int dist = 0x2000;
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
2250
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
2251 //if ( new_draw_object_dist )
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
2252 //dist = 0x6000;
b9adf4f414f6 submenu Other
Ritor1
parents: 2259
diff changeset
2253 pODMRenderParams->shading_dist_mist = GetPrivateProfileIntW(L"shading", L"dist_mist", 0x2000, pIniFilename);//äàëüíîñòü îòðèñîâêè 0x2000
0
Ritor1
parents:
diff changeset
2254
Ritor1
parents:
diff changeset
2255 wchar_t pDefaultSkyTextureW[1024];
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
2258
Ritor1
parents:
diff changeset
2259 wchar_t pDefaultGroundTextureW[1024];
Ritor1
parents:
diff changeset
2260 GetPrivateProfileStringW(L"textures", L"default", L"dirt", pDefaultGroundTextureW, 0x10u, pIniFilename);
Ritor1
parents:
diff changeset
2261 sprintf(pDefaultGroundTexture, "%S", pDefaultGroundTextureW);
Ritor1
parents:
diff changeset
2262
Ritor1
parents:
diff changeset
2263 wchar_t pFloat[1024];
Ritor1
parents:
diff changeset
2264 GetPrivateProfileStringW(L"debug", L"recmod1", L"1.0", pFloat, 0x10u, pIniFilename);
Ritor1
parents:
diff changeset
2265 swscanf(pFloat, L"%f", &flt_6BE3A4_debug_recmod1);
Ritor1
parents:
diff changeset
2266
Ritor1
parents:
diff changeset
2267 GetPrivateProfileStringW(L"debug", L"recmod2", L"1.0", pFloat, 0x10u, pIniFilename);
Ritor1
parents:
diff changeset
2268 swscanf(pFloat, L"%f", &flt_6BE3A8_debug_recmod2);
Ritor1
parents:
diff changeset
2269
Ritor1
parents:
diff changeset
2270 flt_6BE3AC_debug_recmod1_x_1_6 = flt_6BE3A4_debug_recmod1 * 1.666666666666667;
Ritor1
parents:
diff changeset
2271
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
2274 {
Ritor1
parents:
diff changeset
2275 do
Ritor1
parents:
diff changeset
2276 {
Ritor1
parents:
diff changeset
2277 if ( pDefaultSkyTexture[v3] == ' ' )
Ritor1
parents:
diff changeset
2278 pDefaultSkyTexture[v3] = 0;
Ritor1
parents:
diff changeset
2279 ++v3;
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
2282 }
Ritor1
parents:
diff changeset
2283 v4 = 0;
Ritor1
parents:
diff changeset
2284 if ( strlen(pDefaultGroundTexture) )
Ritor1
parents:
diff changeset
2285 {
Ritor1
parents:
diff changeset
2286 do
Ritor1
parents:
diff changeset
2287 {
Ritor1
parents:
diff changeset
2288 if ( pDefaultGroundTexture[v4] == ' ' )
Ritor1
parents:
diff changeset
2289 pDefaultGroundTexture[v4] = 0;
Ritor1
parents:
diff changeset
2290 ++v4;
Ritor1
parents:
diff changeset
2291 }
Ritor1
parents:
diff changeset
2292 while ( v4 < strlen(pDefaultGroundTexture) );
Ritor1
parents:
diff changeset
2293 }
Ritor1
parents:
diff changeset
2294
Ritor1
parents:
diff changeset
2295 MM7Initialization();
Ritor1
parents:
diff changeset
2296 }
Ritor1
parents:
diff changeset
2297
Ritor1
parents:
diff changeset
2298 //----- (004666D5) --------------------------------------------------------
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
2299 void MM7Initialization()
0
Ritor1
parents:
diff changeset
2300 {
Ritor1
parents:
diff changeset
2301 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor )
Ritor1
parents:
diff changeset
2302 {
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
2303 /*if (byte_6BE388_graphicsmode == 0)
0
Ritor1
parents:
diff changeset
2304 {
Ritor1
parents:
diff changeset
2305 outdoor_grid_band_1 = 10;
Ritor1
parents:
diff changeset
2306 outdoor_grid_band_2 = 15;
Ritor1
parents:
diff changeset
2307 outdoor_grid_band_3 = 20;
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2308 pODMRenderParams->shading_dist_mist = 8192;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2309 pODMRenderParams->bNoSky = false;
0
Ritor1
parents:
diff changeset
2310 LOBYTE(viewparams->field_20) = 0;
2151
92511cd8fcdb Cleaned some variables.
Nomad
parents: 2137
diff changeset
2311 }*/
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2312 pODMRenderParams->shading_dist_shade = 2048;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2313 pODMRenderParams->terrain_gamma = 0;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2314 pODMRenderParams->building_gamme = 0;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2315 pODMRenderParams->shading_dist_shademist = 4096;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
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
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2319 pODMRenderParams->outdoor_grid_band_3 = outdoor_grid_band_3;
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
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
Ritor1
parents:
diff changeset
2322 }
Ritor1
parents:
diff changeset
2323 else
Ritor1
parents:
diff changeset
2324 LOBYTE(viewparams->field_20) = 0;
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2325 pParty->uFlags |= 2;
692
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2326 viewparams->uSomeY = viewparams->uScreen_topL_Y;
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2327 viewparams->uSomeX = viewparams->uScreen_topL_X;
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2328 viewparams->uSomeZ = viewparams->uScreen_BttmR_X;
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2329 viewparams->uSomeW = viewparams->uScreen_BttmR_Y;
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2330
066e2b29b30f viewport.cpp added
Gloval
parents: 677
diff changeset
2331 pViewport->SetScreen(viewparams->uScreen_topL_X, viewparams->uScreen_topL_Y, viewparams->uScreen_BttmR_X, viewparams->uScreen_BttmR_Y);
0
Ritor1
parents:
diff changeset
2332 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor )
1637
2c71fa8913d2 class OutdoorCamera -> ODMRenderParams
Nomad
parents: 1603
diff changeset
2333 pODMRenderParams->Initialize();
0
Ritor1
parents:
diff changeset
2334 }
Ritor1
parents:
diff changeset
2335
Ritor1
parents:
diff changeset
2336 //----- (00466C40) --------------------------------------------------------
Ritor1
parents:
diff changeset
2337 const wchar_t *MENU_STATE_to_string(MENU_STATE m)
Ritor1
parents:
diff changeset
2338 {
Ritor1
parents:
diff changeset
2339 switch (m)
Ritor1
parents:
diff changeset
2340 {
982
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2341 case -1: return L"-1";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2342 case MENU_MAIN: return L"MENU_MAIN";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2343 case MENU_NEWGAME: return L"MENU_NEWGAME";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2344 case MENU_CREDITS: return L"MENU_CREDITS";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2345 case MENU_SAVELOAD: return L"MENU_SAVELOAD";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2346 case MENU_EXIT_GAME: return L"MENU_EXIT_GAME";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2347 case MENU_5: return L"MENU_5";
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2348 case MENU_CREATEPARTY: return L"MENU_CREATEPARTY";
165
Ritor1
parents: 162
diff changeset
2349 case MENU_NAMEPANELESC: return L"MENU_NAMEPANELESC";
982
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2350 case MENU_CREDITSPROC: return L"MENU_CREDITSPROC";
961
5a12082c803d UIMSG and WINDOW_Type(continue)
Ritor1
parents: 957
diff changeset
2351 case MENU_LoadingProcInMainMenu: return L"MENU_LoadingProcInMainMenu";
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
2352 case MENU_DebugBLVLevel: return L"MENU_DebugBLVLevel";
165
Ritor1
parents: 162
diff changeset
2353 case MENU_CREDITSCLOSE: return L"MENU_CREDITSCLOSE";
2278
0cd17b0d36c2 MMT_MainMenu
Ritor1
parents: 2277
diff changeset
2354 case MENU_MMT_MAIN_MENU: return L"MENU_MMT_MAIN_MENU";
982
08fd1436ef35 enums & lod
Nomad
parents: 978
diff changeset
2355 default: return L"unk";
0
Ritor1
parents:
diff changeset
2356 };
Ritor1
parents:
diff changeset
2357 };
Ritor1
parents:
diff changeset
2358 void SetCurrentMenuID(MENU_STATE uMenu)
Ritor1
parents:
diff changeset
2359 {
2006
30c2b575d25c signed fixes
zipi
parents: 2000
diff changeset
2360 sCurrentMenuID = uMenu;
0
Ritor1
parents:
diff changeset
2361
2393
a29d9609f9b2 for console window text
Ritor1
parents: 2386
diff changeset
2362 Log::Warning(L"CurrentMenu = %s \n", MENU_STATE_to_string(uMenu));
0
Ritor1
parents:
diff changeset
2363 }
Ritor1
parents:
diff changeset
2364
Ritor1
parents:
diff changeset
2365 //----- (00466CA0) --------------------------------------------------------
Ritor1
parents:
diff changeset
2366 MENU_STATE GetCurrentMenuID()
Ritor1
parents:
diff changeset
2367 {
2006
30c2b575d25c signed fixes
zipi
parents: 2000
diff changeset
2368 return sCurrentMenuID;
0
Ritor1
parents:
diff changeset
2369 }
Ritor1
parents:
diff changeset
2370
Ritor1
parents:
diff changeset
2371
Ritor1
parents:
diff changeset
2372 //----- (0046BDA8) --------------------------------------------------------
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
2373 unsigned int GetGravityStrength()
0
Ritor1
parents:
diff changeset
2374 {
Ritor1
parents:
diff changeset
2375 int v0; // eax@1
Ritor1
parents:
diff changeset
2376
Ritor1
parents:
diff changeset
2377 v0 = ~LOBYTE(pGame->uFlags2) & 8;
Ritor1
parents:
diff changeset
2378 LOBYTE(v0) = v0 | 2;
Ritor1
parents:
diff changeset
2379 return (unsigned int)v0 >> 1;
Ritor1
parents:
diff changeset
2380 }
Ritor1
parents:
diff changeset
2381
Ritor1
parents:
diff changeset
2382 //----- (0046BDC0) --------------------------------------------------------
1458
934074e7fcc1 ModalWindow
Nomad
parents: 1456
diff changeset
2383 void UpdateUserInput_and_MapSpecificStuff()
0
Ritor1
parents:
diff changeset
2384 {
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2385 if (dword_6BE364_game_settings_1 & GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME)
0
Ritor1
parents:
diff changeset
2386 {
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2387 dword_6BE364_game_settings_1 &= ~GAME_SETTINGS_0080_SKIP_USER_INPUT_THIS_FRAME;
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2388 return;
0
Ritor1
parents:
diff changeset
2389 }
2061
b2a434d65344 GAME_SETTINGS_* defines introduced
Nomad
parents: 2059
diff changeset
2390
630
1b813023fcbd Tilesets change according to current season
Nomad
parents: 619
diff changeset
2391 if (uCurrentlyLoadedLevelType == LEVEL_Indoor)
0
Ritor1
parents:
diff changeset
2392 BLV_UpdateUserInputAndOther();
630
1b813023fcbd Tilesets change according to current season
Nomad
parents: 619
diff changeset
2393 else if (uCurrentlyLoadedLevelType == LEVEL_Outdoor)
0
Ritor1
parents:
diff changeset
2394 ODM_UpdateUserInputAndOther();
630
1b813023fcbd Tilesets change according to current season
Nomad
parents: 619
diff changeset
2395
783
b27dd658ea77 Taveling by foot fixed.
Nomad
parents: 775
diff changeset
2396 area_of_effect__damage_evaluate();
0
Ritor1
parents:
diff changeset
2397 }
Ritor1
parents:
diff changeset
2398
Ritor1
parents:
diff changeset
2399 //----- (0046BFFA) --------------------------------------------------------
Ritor1
parents:
diff changeset
2400 bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2)
Ritor1
parents:
diff changeset
2401 {
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2402 ObjectDesc *object; // ebx@1
0
Ritor1
parents:
diff changeset
2403 unsigned int v8; // eax@19
Ritor1
parents:
diff changeset
2404 signed int v10; // ebx@19
Ritor1
parents:
diff changeset
2405 char *v11; // edx@20
Ritor1
parents:
diff changeset
2406 unsigned __int16 v12; // ax@23
Ritor1
parents:
diff changeset
2407 int v13; // eax@27
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2408 // unsigned int v14; // ebx@33
0
Ritor1
parents:
diff changeset
2409 int v16; // eax@36
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2410 // unsigned int v17; // eax@37
0
Ritor1
parents:
diff changeset
2411 __int16 v18; // di@37
Ritor1
parents:
diff changeset
2412 signed int v19; // edx@37
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2413 // unsigned __int8 v20; // sf@37
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2414 // char *v21; // ecx@38
0
Ritor1
parents:
diff changeset
2415 unsigned __int16 v22; // ax@41
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2416 // unsigned int v23; // eax@46
0
Ritor1
parents:
diff changeset
2417 signed int v24; // ebx@46
Ritor1
parents:
diff changeset
2418 char *v25; // edx@47
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2419 // int v26; // edx@54
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2420 // int v27; // edx@55
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2421 // int v28; // edx@56
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2422 // int v29; // edx@57
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2423 // unsigned __int16 v30; // ax@60
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2424 // unsigned int v31; // ecx@60
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2425 // int v32; // edi@60
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2426 // unsigned int v33; // eax@65
0
Ritor1
parents:
diff changeset
2427 signed int v34; // edx@65
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2428 // char *v35; // ecx@66
0
Ritor1
parents:
diff changeset
2429 unsigned __int16 v36; // ax@69
Ritor1
parents:
diff changeset
2430 int v37; // ST14_4@72
Ritor1
parents:
diff changeset
2431 int v38; // eax@72
Ritor1
parents:
diff changeset
2432 int v39; // ST10_4@72
Ritor1
parents:
diff changeset
2433 int v40; // ST0C_4@72
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2434 //int v41; // edx@76
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2435 // int v42; // edx@77
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2436 // int v43; // edx@78
0
Ritor1
parents:
diff changeset
2437 unsigned __int8 v44; // zf@79
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2438 // int v45; // edx@79
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2439 // unsigned __int16 v46; // ax@80
0
Ritor1
parents:
diff changeset
2440 int v47; // eax@81
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2441 // int v48; // edx@87
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2442 // int v49; // edx@88
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2443 // int v50; // edx@89
0
Ritor1
parents:
diff changeset
2444 signed int v52; // ebx@93
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2445 // char *v53; // edx@94
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2446 // unsigned __int16 v54; // ax@98
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2447 // unsigned int v55; // ecx@98
0
Ritor1
parents:
diff changeset
2448 signed int v56; // ebx@98
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2449 // char *v57; // edx@99
0
Ritor1
parents:
diff changeset
2450 unsigned __int16 v58; // ax@102
Ritor1
parents:
diff changeset
2451 unsigned __int16 v59; // ax@107
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2452 // unsigned int v60; // ecx@107
0
Ritor1
parents:
diff changeset
2453 signed int v61; // ebx@107
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2454 // char *v62; // edx@108
0
Ritor1
parents:
diff changeset
2455 unsigned __int16 v63; // ax@111
Ritor1
parents:
diff changeset
2456 int v64; // ebx@114
Ritor1
parents:
diff changeset
2457 signed int v65; // eax@114
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2458 // unsigned int v66; // edi@123
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2459 // unsigned __int16 v67; // ax@124
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2460 // unsigned int v68; // ecx@124
0
Ritor1
parents:
diff changeset
2461 signed int v69; // ebx@124
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2462 // char *v70; // edx@125
0
Ritor1
parents:
diff changeset
2463 unsigned __int16 v71; // ax@128
Ritor1
parents:
diff changeset
2464 unsigned int v72; // ebx@131
Ritor1
parents:
diff changeset
2465 int v78; // eax@133
2425
d922225a6081 Hot key for mm7 main menu
Ritor1
parents: 2423
diff changeset
2466 // char v79; // zf@139
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2467 // unsigned int v80; // eax@140
0
Ritor1
parents:
diff changeset
2468 signed int v81; // edx@140
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2469 // char *v82; // ecx@141
0
Ritor1
parents:
diff changeset
2470 unsigned __int16 v83; // ax@144
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2471 // unsigned __int16 v84; // ax@151
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2472 // unsigned int v85; // ecx@151
0
Ritor1
parents:
diff changeset
2473 signed int v86; // ebx@151
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2474 // char *v87; // edx@152
0
Ritor1
parents:
diff changeset
2475 unsigned __int16 v88; // ax@155
Ritor1
parents:
diff changeset
2476 unsigned int v89; // eax@158
Ritor1
parents:
diff changeset
2477 int v90; // ST34_4@159
Ritor1
parents:
diff changeset
2478 int v91; // eax@159
Ritor1
parents:
diff changeset
2479 unsigned int v92; // eax@163
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2480 // unsigned int v93; // eax@177
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2481 // char *v94; // ecx@178
0
Ritor1
parents:
diff changeset
2482 unsigned __int16 v95; // ax@181
Ritor1
parents:
diff changeset
2483 unsigned __int16 v96; // ax@184
Ritor1
parents:
diff changeset
2484 int v97; // eax@185
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2485 // unsigned __int16 v98; // ax@191
0
Ritor1
parents:
diff changeset
2486 char v100; // ST18_1@198
Ritor1
parents:
diff changeset
2487 int v102; // eax@198
Ritor1
parents:
diff changeset
2488 signed int v106; // eax@208
Ritor1
parents:
diff changeset
2489 unsigned int v107; // edx@220
Ritor1
parents:
diff changeset
2490 signed int v108; // ebx@225
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2491 // unsigned int v109; // eax@234
0
Ritor1
parents:
diff changeset
2492 signed int v110; // ebx@234
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2493 // char *v111; // ecx@235
0
Ritor1
parents:
diff changeset
2494 unsigned __int16 v112; // ax@238
Ritor1
parents:
diff changeset
2495 unsigned __int16 v113; // si@241
Ritor1
parents:
diff changeset
2496 int v114; // eax@242
Ritor1
parents:
diff changeset
2497 int v115; // eax@245
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2498 // unsigned __int16 v117; // ax@251
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2499 // unsigned int v118; // ecx@251
0
Ritor1
parents:
diff changeset
2500 signed int v119; // ebx@251
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2501 // char *v120; // edx@252
0
Ritor1
parents:
diff changeset
2502 unsigned __int16 v121; // ax@255
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2503 // unsigned int v122; // eax@260
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2504 // char *v123; // edx@261
0
Ritor1
parents:
diff changeset
2505 int v124; // eax@267
Ritor1
parents:
diff changeset
2506 int v125; // [sp-20h] [bp-4Ch]@28
Ritor1
parents:
diff changeset
2507 char v132; // [sp-8h] [bp-34h]@131
Ritor1
parents:
diff changeset
2508 char v134; // [sp-4h] [bp-30h]@131
Ritor1
parents:
diff changeset
2509 signed int v135; // [sp-4h] [bp-30h]@217
Ritor1
parents:
diff changeset
2510 int v136; // [sp+Ch] [bp-20h]@208
Ritor1
parents:
diff changeset
2511 int v137; // [sp+10h] [bp-1Ch]@208
Ritor1
parents:
diff changeset
2512 signed int v138; // [sp+14h] [bp-18h]@207
Ritor1
parents:
diff changeset
2513 signed int v139; // [sp+18h] [bp-14h]@208
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2514 // char *v140; // [sp+1Ch] [bp-10h]@61
0
Ritor1
parents:
diff changeset
2515 signed int v141; // [sp+1Ch] [bp-10h]@117
Ritor1
parents:
diff changeset
2516 unsigned int v142; // [sp+1Ch] [bp-10h]@158
Ritor1
parents:
diff changeset
2517 signed int v143; // [sp+1Ch] [bp-10h]@172
2334
ddb803517a48 unused local variables I commented
Ritor1
parents: 2331
diff changeset
2518 // char *v144; // [sp+1Ch] [bp-10h]@192
0
Ritor1
parents:
diff changeset
2519 signed int v146; // [sp+20h] [bp-Ch]@60
Ritor1
parents:
diff changeset
2520 int v147; // [sp+20h] [bp-Ch]@72
Ritor1
parents:
diff changeset
2521 signed int v148; // [sp+20h] [bp-Ch]@158
Ritor1
parents:
diff changeset
2522 unsigned __int16 v150; // [sp+20h] [bp-Ch]@208
Ritor1
parents:
diff changeset
2523 signed int v152; // [sp+24h] [bp-8h]@208
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2524
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2525 //ïðèìåíåíèå: ôàåðáîëò â õðàìå ëóíû
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2526 object = &pObjectList->pObjects[pSpriteObjects[uLayingItemID].uObjectDescID];
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2527 //v151 = PID_TYPE(a2);
848
ceef50611567 * AI fixed (temporary)
zipi
parents: 838
diff changeset
2528 if ( PID_TYPE(a2) == OBJECT_Actor)
ceef50611567 * AI fixed (temporary)
zipi
parents: 838
diff changeset
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
Ritor1
parents:
diff changeset
2532 return 1;
Ritor1
parents:
diff changeset
2533 }
Ritor1
parents:
diff changeset
2534 else
Ritor1
parents:
diff changeset
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
Ritor1
parents:
diff changeset
2537 return 1;
Ritor1
parents:
diff changeset
2538 }
Ritor1
parents:
diff changeset
2539 if ( pParty->bTurnBasedModeOn == 1 )
Ritor1
parents:
diff changeset
2540 {
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2541 if ( pSpriteObjects[uLayingItemID].uAttributes & 4 )
0
Ritor1
parents:
diff changeset
2542 {
1450
8ff3c675a726 more renaming TE
Gloval
parents: 1445
diff changeset
2543 --pTurnEngine->pending_actions;
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2544 pSpriteObjects[uLayingItemID].uAttributes &= 0xFFFB;
0
Ritor1
parents:
diff changeset
2545 }
Ritor1
parents:
diff changeset
2546 }
2101
ee2724b9ca05 RasterLine2D fix and etc.
Ritor1
parents: 2099
diff changeset
2547 if ( PID_TYPE(a2) == OBJECT_BModel && PID_TYPE(pSpriteObjects[uLayingItemID].spell_caster_pid) != OBJECT_Player)
1280
89210052dbb4 bugfix PID_ID(v2->spell_caster_pid)==1000
Gloval
parents: 1276
diff changeset
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
00bd098f6435 fixpoint_mul in different functions and others
Ritor1
parents: 2155
diff changeset
2550 pActors[PID_ID(pSpriteObjects[uLayingItemID].spell_caster_pid)].uAttributes |= 0x40000;
1280
89210052dbb4 bugfix PID_ID(v2->spell_caster_pid)==1000
Gloval
parents: 1276
diff changeset
2551 }
89210052dbb4 bugfix PID_ID(v2->spell_caster_pid)==1000
Gloval
parents: 1276
diff changeset
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
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2555
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2556 switch (pSpriteObjects[uLayingItemID].uType)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2557 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2558
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2559 case 1060:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2560 case 2030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2561 case 9010:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2562 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2563 //v9 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2564 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2))
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2565 return 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2566 if (PID_TYPE(a2) != 2)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2567 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2568 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2569 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2570 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2571 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2572 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2573 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2574 v95 = v52;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2575 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2576 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2577 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2578 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2579 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2580 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2581 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2582 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2583 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2584 v97 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2585 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2586 v97 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2587 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2588 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2589 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2590 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2591 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2592 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2593 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2594 v121 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2595 for (v119 = 0; v119 < (signed int)pObjectList->uNumObjects; ++v119)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2596 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2597 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v119].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2598 v121 = v119;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2599 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2600 pSpriteObjects[uLayingItemID].uObjectDescID = v121;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2601 if (!v121)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2602 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2603 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2604 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2605 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2606 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2607 v13 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2608 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2609 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2610 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2611 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2612
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2613
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2614 case 500:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2615 case 505:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2616 case 510:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2617 case 515:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2618 case 520:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2619 case 525:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2620 case 530:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2621 case 535:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2622 case 540:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2623 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2624 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2625 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2626 v12 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2627 for (v10 = 0; v10 < (signed int)pObjectList->uNumObjects; ++v10)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2628 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2629 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v10].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2630 v12 = v10;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2631 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2632 pSpriteObjects[uLayingItemID].uObjectDescID = v12;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2633 if (!v12)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2634 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2635 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2636 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2637 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2638 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2639 if (pSpriteObjects[uLayingItemID].uType == 555)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2640 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2641 v13 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2642 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2643 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2644 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2645 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2646 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2647
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2648 case 545:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2649 case 550:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2650 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2651 if (pSpriteObjects[uLayingItemID].stru_24.uItemID != 405 && pSpriteObjects[uLayingItemID].stru_24.uSpecEnchantmentType != 3)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2652 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2653 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2654 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2655 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2656 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2657 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2658 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2659 if (pSpriteObjects[uLayingItemID].uSoundID == 0)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2660 v16 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2661 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2662 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2663 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2664 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2665 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2666 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2667 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2668 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2669 v18 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2670 pSpriteObjects[uLayingItemID].uType = 600;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2671 v22 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2672 for (v19 = 0; v19 < (signed int)pObjectList->uNumObjects; ++v19)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2673 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2674 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v19].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2675 v22 = v19;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2676 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2677 pSpriteObjects[uLayingItemID].uObjectDescID = v22;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2678 if (!v22)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2679 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2680 pSpriteObjects[uLayingItemID].vVelocity.z = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2681 pSpriteObjects[uLayingItemID].vVelocity.y = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2682 pSpriteObjects[uLayingItemID].vVelocity.x = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2683 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2684 v12 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2685 for (v10; v10 < (signed int)v8; ++v10)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2686 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2687 v11 += 56;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2688 if (pSpriteObjects[uLayingItemID].uType != *(short *)v11)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2689 v12 = v10;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2690 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2691 pSpriteObjects[uLayingItemID].uObjectDescID = v12;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2692 if (!v12)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2693 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2694 v44 = pSpriteObjects[uLayingItemID].uType == 555;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2695 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2696 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2697 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2698 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2699 if (!v44)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2700 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2701 v13 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2702 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2703 pAudioPlayer->PlaySound(SOUND_8, v13, 0, -1, 0, 0, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2704 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2705 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2706 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2707 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2708
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2709 case 600:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2710 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2711 pSpriteObjects[uLayingItemID].uType = 601;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2712 v36 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2713 for (v34 = 0; v34 < (signed int)pObjectList->uNumObjects; ++v34)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2714 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2715 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v34].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2716 v36 = v34;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2717 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2718 pSpriteObjects[uLayingItemID].uObjectDescID = v36;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2719 if (!v36)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2720 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2721 v37 = pSpriteObjects[uLayingItemID].vPosition.z;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2722 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2723 v38 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2724 v39 = pSpriteObjects[uLayingItemID].vPosition.y;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2725 LOBYTE(v38) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2726 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2727 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2728 v40 = pSpriteObjects[uLayingItemID].vPosition.x;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2729 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2730 v147 = v38;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2731 AttackerInfo.Add(v38, 512, v40, v39, v37, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2732 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2733 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2734 pAudioPlayer->PlaySound(SOUND_8, v147, 0, -1, 0, 0, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2735 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2736 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2737
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2738 case 1010:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2739 case 1100:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2740 case 2060:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2741 case 3010:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2742 case 3030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2743 case 3060:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2744 case 4000:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2745 case 4030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2746 case 4050:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2747 case 4100:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2748 case 6010:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2749 case 6090:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2750 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2751 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2752 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2753 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2754 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2755 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2756 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2757 v95 = v52;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2758 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2759 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2760 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2761 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2762 v96 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2763 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2764 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2765 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2766 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2767 if (!v96)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2768 v97 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2769 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2770 v97 = (signed __int16)v96 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2771 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2772 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2773 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2774 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2775 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2776 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2777
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2778
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2779 case 555:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2780 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2781 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2782 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2783 v18 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2784 v22 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2785 v25 = (char *)&pObjectList->pObjects->uObjectID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2786 for (v24 = 0; v24 < (signed int)pObjectList->uNumObjects; ++v24)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2787 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2788 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v24].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2789 v22 = v24;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2790 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2791 pSpriteObjects[uLayingItemID].uObjectDescID = v22;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2792 if (v22 == v18)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2793 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2794 pSpriteObjects[uLayingItemID].vVelocity.z = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2795 pSpriteObjects[uLayingItemID].vVelocity.y = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2796 pSpriteObjects[uLayingItemID].vVelocity.x = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2797 pSpriteObjects[uLayingItemID].uSpriteFrameID = v18;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2798 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2799 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2800
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2801 case 3090:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2802 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2803 //v9 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2804 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2805 v63 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2806 for (v61 = 0; v61 < (signed int)pObjectList->uNumObjects; ++v61)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2807 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2808 if (v59 == pObjectList->pObjects[v61].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2809 v63 = v61;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2810 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2811 pSpriteObjects[uLayingItemID].uObjectDescID = v63;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2812 if (!v63)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2813 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2814 v64 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2815 v44 = pSpriteObjects[uLayingItemID].spell_skill == 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2816 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2817 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2818 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2819 v65 = 7;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2820 if (v44)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2821 v65 = 9;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2822 if (v65 > 0)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2823 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2824 v141 = v65;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2825 do
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2826 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2827 v64 += (signed int)stru_5C6E00->uIntegerHalfPi / 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2828 pSpriteObjects[uLayingItemID].Create(v64, 0, 1000, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2829 --v141;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2830 } while (v141);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2831 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2832 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2833 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2834 v16 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2835 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2836 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2837 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2838 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2839 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2840 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2841 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2842 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2843
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2844 case 3092:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2845 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2846 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType - 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2847 v58 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2848 for (v56 = 0; v56 < (signed int)pObjectList->uNumObjects; ++v56)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2849 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2850 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v56].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2851 v58 = v56;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2852 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2853 pSpriteObjects[uLayingItemID].uObjectDescID = v58;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2854 if (!v58)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2855 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2856 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2857 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2858 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2859 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2860 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2861 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2862 v16 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2863 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2864 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2865 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2866 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2867 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2868 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2869 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2870 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2871
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2872 case 4070:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2873 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2874 if (PID_TYPE(a2) == 6 || PID_TYPE(a2) == 5 || !PID_TYPE(a2))
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2875 return 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2876 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2877 v71 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2878 for (v69 = 0; v69 < (signed int)pObjectList->uNumObjects; ++v69)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2879 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2880 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v69].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2881 v71 = v69;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2882 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2883 pSpriteObjects[uLayingItemID].uObjectDescID = v71;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2884 if (!v71)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2885 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2886 v134 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2887 v72 = uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2888 v132 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2889 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2890 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2891 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2892 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2893 AttackerInfo.Add(PID(OBJECT_Item, v72), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2894 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2895 v78 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2896 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2897 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2898 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2899 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2900 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2901 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2902
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2903 case 4090:
1429
c7489dd19f88 BuildingType_Tavern and CastSpellInfo_PushCastSpellInfo fix
Ritor1
parents: 1417
diff changeset
2904 {
2396
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2905 //v9 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2906 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2907 v88 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2908 for (v86 = 0; v86 < (signed int)pObjectList->uNumObjects; ++v86)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2909 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2910 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v86].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2911 v88 = v86;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2912 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2913 pSpriteObjects[uLayingItemID].uObjectDescID = v88;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2914 if (!v88)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2915 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2916 v89 = pSpriteObjects[uLayingItemID].uFacing - stru_5C6E00->uIntegerDoublePi;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2917 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2918 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2919 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2920 v142 = v89;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2921 v148 = 7;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2922 do
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2923 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2924 pRnd->SetRange(-128, 128);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2925 v90 = pRnd->GetInRange();
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2926 pRnd->SetRange(5, 500);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2927 v91 = pRnd->GetInRange();
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2928 v142 += (signed int)stru_5C6E00->uIntegerHalfPi >> 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2929 pSpriteObjects[uLayingItemID].Create(v90 + v142, 0, v91, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2930 --v148;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2931 } while (v148);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2932 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2933 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2934 v16 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2935 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2936 v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2937 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2938 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2939 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2940 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2941 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2942 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2943
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2944 case 4092:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2945 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2946 pSpriteObjects[uLayingItemID].uType = 4091;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2947 v83 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2948 for (v81 = 0; v81 < (signed int)pObjectList->uNumObjects; ++v81)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2949 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2950 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v81].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2951 v83 = v81;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2952 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2953 pSpriteObjects[uLayingItemID].uObjectDescID = v83;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2954 if (!v83)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2955 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2956 v134 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2957 //v72 = uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2958 v132 = pSpriteObjects[uLayingItemID].field_61;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2959 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2960 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2961 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2962 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2963 AttackerInfo.Add(PID(OBJECT_Item, uLayingItemID), 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v132, v134);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2964 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2965 v78 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2966 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2967 v78 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2968 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2969 pAudioPlayer->PlaySound((SoundID)v125, pSpriteObjects[uLayingItemID].vPosition.x, 0, -1, 0, v78, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2970 return 0;
0
Ritor1
parents:
diff changeset
2971 }
2396
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2972
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2973 case 8010:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2974 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2975 if (PID_TYPE(a2) == 3
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2976 && MonsterStats::BelongsToSupertype(pActors[PID_ID(a2)].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD))
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2977 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2978 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2979 //v9 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2980 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2981 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2982 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2983 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2984 v95 = v52;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2985 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2986 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2987 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2988 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2989 v96 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2990 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2991 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2992 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2993 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2994 if (!v96)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2995 v97 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2996 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2997 v97 = (signed __int16)v96 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2998 v92 = uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
2999 v124 = 8 * v92;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3000 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3001 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3002 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3003 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3004 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3005
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3006 case 7030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3007 case 7090:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3008 case 8000:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3009 case 8090:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3010 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3011 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3012 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3013 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3014 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3015 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3016 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3017 v95 = v52;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3018 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3019 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3020 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3021 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3022 v96 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3023 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3024 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3025 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3026 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3027 if (!v96)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3028 v97 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3029 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3030 v97 = (signed __int16)v96 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3031 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3032 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3033 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3034 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3035 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3036 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3037
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3038 case 6040:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3039 case 8030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3040 case 9030:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3041 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3042 v143 = 17030;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3043 switch (pSpriteObjects[uLayingItemID].uType)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3044 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3045 case 0x1798u:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3046 v143 = 15040;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3047 break;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3048 case 0xFAAu:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3049 v143 = 13010;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3050 break;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3051 case 0x2346u:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3052 v143 = 18030;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3053 break;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3054 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3055 v138 = 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3056 if (PID_TYPE(a2) != OBJECT_Actor)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3057 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3058 if (pSpriteObjects[uLayingItemID].uType != 9030 || pSpriteObjects[uLayingItemID].spell_skill != 4)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3059 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3060 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3061 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3062 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3063 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe();
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3064 if (!v138)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3065 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3066 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3067 v112 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3068 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3069 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3070 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3071 v112 = v110;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3072 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3073 pSpriteObjects[uLayingItemID].uObjectDescID = v112;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3074 if (!v112)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3075 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3076 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3077 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3078 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3079 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3080 v113 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3081 if (v113)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3082 v114 = (signed __int16)v113 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3083 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3084 v114 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3085 v115 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3086 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3087 v125 = v143 + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3088 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3089 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3090 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3091 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3092 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3093 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3094 v106 = a2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3095 v150 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3096 v139 = PID_ID(v106);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3097 v137 = pSpriteObjects[uLayingItemID].spell_level;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3098 v152 = pSpriteObjects[uLayingItemID].spell_skill;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3099 v136 = pSpriteObjects[uLayingItemID].spell_id;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3100 if (pSpriteObjects[uLayingItemID].uType == 9030)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3101 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3102 v150 = 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3103 if (v152 == 2)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3104 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3105 v150 = 3;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3106 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3107 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3108 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3109 if (v152 >= 3)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3110 v150 = 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3111 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3112 pActors[v139].uAttributes |= 0x80000;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3113 v107 = v135;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3114 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3115 if (pSpriteObjects[uLayingItemID].uType == 6040)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3116 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3117 v135 = 7;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3118 v107 = v135;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3119 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3120 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3121 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3122 if (pSpriteObjects[uLayingItemID].uType == 8030)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3123 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3124 v135 = 9;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3125 v107 = v135;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3126 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3127 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3128 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3129 if (pSpriteObjects[uLayingItemID].uType != 9030)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3130 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3131 v107 = v136;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3132 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3133 if (pSpriteObjects[uLayingItemID].uType == 9030)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3134 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3135 v135 = 10;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3136 v107 = v135;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3137 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3138 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3139 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3140 if (pSpriteObjects[uLayingItemID].uType != 9030 || v152 != 4)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3141 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3142 v108 = v139;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3143 if (pActors[v139].DoesDmgTypeDoDamage((DAMAGE_TYPE)v107))
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3144 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3145 v138 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3146 if (pSpriteObjects[uLayingItemID].uType == 8030)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3147 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3148 pActors[v108].uAIState = Standing;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3149 pActors[v108].UpdateAnimation();
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3150 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3151 pActors[v108].pActorBuffs[v136].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v137 << 7) * 0.033333335),
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3152 v152, v150, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3153 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3154 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3155 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3156 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3157 pSpriteObjects[uLayingItemID]._46BEF1_apply_spells_aoe();
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3158 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3159 pSpriteObjects[uLayingItemID].spell_level = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3160 pSpriteObjects[uLayingItemID].spell_skill = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3161 pSpriteObjects[uLayingItemID].spell_id = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3162 if (!v138)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3163 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3164 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3165 v112 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3166 for (v110 = 0; v110 < (signed int)pObjectList->uNumObjects; ++v110)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3167 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3168 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v110].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3169 v112 = v110;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3170 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3171 pSpriteObjects[uLayingItemID].uObjectDescID = v112;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3172 if (!v112)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3173 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3174 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3175 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3176 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3177 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3178 v113 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3179 if (v113)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3180 v114 = (signed __int16)v113 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3181 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3182 v114 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3183 v115 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3184 LOBYTE(v115) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3185 v125 = v143 + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3186 pAudioPlayer->PlaySound((SoundID)v125, v115, 0, -1, 0, v114, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3187 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3188 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3189 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3190 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3191 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3192
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3193 case 9040:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3194 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3195 sub_43A97E(uLayingItemID, a2);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3196 ++pSpriteObjects[uLayingItemID].uType;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3197 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3198 for (v52 = 0; v52 < (signed int)pObjectList->uNumObjects; ++v52)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3199 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3200 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v52].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3201 v95 = v52;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3202 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3203 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3204 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3205 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3206 v96 = pSpriteObjects[uLayingItemID].uSoundID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3207 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3208 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3209 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3210 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3211 if (!v96)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3212 v97 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3213 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3214 v97 = (signed __int16)v96 + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3215 v124 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3216 LOBYTE(v124) = v124 | 2;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3217 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3218 pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v97, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3219 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3220 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3221
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3222 /*
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3223 case 1080:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3224 case 2100:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3225 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3226 if (PID_TYPE(a2) != 3)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3227 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3228 //v32 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3229 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3230 v46 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3231 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3232 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3233 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3234 v46 = v146;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3235 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3236 pSpriteObjects[uLayingItemID].uObjectDescID = v46;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3237 if (!v46)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3238 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3239 v100 = pSpriteObjects[uLayingItemID].field_61;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3240 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3241 v102 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3242 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3243 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3244 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3245 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3246 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3247 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3248 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3249 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3250 v47 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3251 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3252 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3253 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3254 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3255 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3256 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3257 return 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3258 }*/
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3259
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3260 case 1080:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3261 case 2100:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3262 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3263 if (PID_TYPE(a2) == 3)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3264 return 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3265 //else go to next case
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3266 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3267
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3268 case 1050:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3269 case 9080:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3270 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3271 v95 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3272 pSpriteObjects[uLayingItemID].uType = pSpriteObjects[uLayingItemID].uType + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3273 for (v146 = 0; v146 < (signed int)pObjectList->uNumObjects; ++v146)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3274 {
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3275 if (pSpriteObjects[uLayingItemID].uType == pObjectList->pObjects[v146].uObjectID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3276 v95 = v146;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3277 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3278 pSpriteObjects[uLayingItemID].uObjectDescID = v95;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3279 if (!v95)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3280 SpriteObject::OnInteraction(uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3281 v100 = pSpriteObjects[uLayingItemID].field_61;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3282 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3283 v102 = 8 * uLayingItemID;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3284 LOBYTE(v102) = PID(OBJECT_Item, uLayingItemID);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3285 pSpriteObjects[uLayingItemID].vVelocity.x = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3286 pSpriteObjects[uLayingItemID].vVelocity.y = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3287 pSpriteObjects[uLayingItemID].vVelocity.z = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3288 AttackerInfo.Add(v102, 512, pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, v100, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3289 if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3290 trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3291 if (!pSpriteObjects[uLayingItemID].uSoundID)
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3292 v47 = 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3293 else
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3294 v47 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3295 v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3296 pAudioPlayer->PlaySound((SoundID)v125, v102, 0, -1, 0, v47, 0, 0);
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3297 return 0;
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3298 }
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3299
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3300 default:
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3301 return 0;
0
Ritor1
parents:
diff changeset
3302 }
2396
6997e2ad913b _46BFFA_check_object_intercept refactor
zipi
parents: 2394
diff changeset
3303
0
Ritor1
parents:
diff changeset
3304 }