annotate mm7_2.cpp @ 2435:f1d8eba1a9aa

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