# HG changeset patch # User Gloval # Date 1362604065 -14400 # Node ID d59398528e4fa5d0b7436f99f75e4f6e920c6ea2 # Parent db4a23580e6cb8efc1575a66840e20b9f5f710d0 level events loading fix diff -r db4a23580e6c -r d59398528e4f Events.cpp --- a/Events.cpp Thu Mar 07 00:35:10 2013 +0400 +++ b/Events.cpp Thu Mar 07 01:07:45 2013 +0400 @@ -121,6 +121,17 @@ //----- (00443EF8) -------------------------------------------------------- void LoadLevel_InitializeLevelEvt() { + struct raw_event_header + { + unsigned char evt_size; + unsigned char evt_id_l; + unsigned char evt_id_h; + unsigned char evt_sequence_num; + } ; + uint events_count; + unsigned int offset_in; + raw_event_header *current_hdr; + if (!uLevelEVT_Size) return; @@ -130,6 +141,19 @@ uLevelEVT_NumEvents = 0; dword_5B65C8_timers_count = 0; + current_hdr=(raw_event_header *)pLevelEVT; + offset_in=0; + for (events_count = 0, offset_in = 0; offset_in < uLevelEVT_Size; ++events_count) + { + pLevelEVT_Index[events_count].uEventID=current_hdr->evt_id_l+(current_hdr->evt_id_h<<8); + pLevelEVT_Index[events_count].event_sequence_num=current_hdr->evt_sequence_num; + pLevelEVT_Index[events_count].uEventOffsetInEVT=offset_in; + offset_in+=current_hdr->evt_size+1; + current_hdr=(raw_event_header *)&pLevelEVT[offset_in]; + } + uLevelEVT_NumEvents = events_count; + +/* for (uint i = 0, j = 0; j < uLevelEVT_Size; ++i) { pLevelEVT_Index[i].uEventID = pLevelEVT[j + 1] + ((unsigned short)pLevelEVT[j + 2] << 8); @@ -137,7 +161,7 @@ pLevelEVT_Index[i].uEventOffsetInEVT = j; j += pLevelEVT[j] + 1; uLevelEVT_NumEvents++; - } + }*/ } diff -r db4a23580e6c -r d59398528e4f mm7_3.cpp --- a/mm7_3.cpp Thu Mar 07 00:35:10 2013 +0400 +++ b/mm7_3.cpp Thu Mar 07 01:07:45 2013 +0400 @@ -13310,8 +13310,8 @@ //----- (00443E31) -------------------------------------------------------- -void __cdecl LoadLevel_InitializeLevelStr() -{ +void LoadLevel_InitializeLevelStr() + { char Args[100]; int string_num; @@ -13417,10 +13417,7 @@ if (_evt->_e_type == EVENT_PlaySound) { - pSoundList->LoadSound( - _evt->v5 + - ((_evt->v6 + ((_evt->v7 + ((unsigned int)_evt->v8 << 8)) << 8)) << 8), - 0); + pSoundList->LoadSound(EVT_DWORD(_evt->v5), 0); } else if (_evt->_e_type == EVENT_OnMapReload) { diff -r db4a23580e6c -r d59398528e4f mm7_data.h --- a/mm7_data.h Thu Mar 07 00:35:10 2013 +0400 +++ b/mm7_data.h Thu Mar 07 01:07:45 2013 +0400 @@ -2002,7 +2002,7 @@ int __fastcall DrawBook_Map_sub(unsigned int x, unsigned int y, unsigned int a4, int a5, int _48074); // idb void Initialize2DA(); -void __cdecl LoadLevel_InitializeLevelStr(); +void LoadLevel_InitializeLevelStr(); void __cdecl OnMapLeave(); void /*__usercall*/ OnMapLoad();