annotate mm7_2.cpp @ 2383:342b73a61a60

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