annotate mm7_2.cpp @ 2412:e7a551f458e1

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