Mercurial > mm7
changeset 1998:1175adbf8c58
Merge
author | Ritor1 |
---|---|
date | Sun, 03 Nov 2013 22:42:37 +0600 |
parents | 157fd2831567 (current diff) f7e8c4d4a01b (diff) |
children | 079f2abf54e4 |
files | |
diffstat | 9 files changed, 61 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/.gitignore Sun Nov 03 22:42:25 2013 +0600 +++ b/.gitignore Sun Nov 03 22:42:37 2013 +0600 @@ -3,3 +3,4 @@ Release *.orig .hg/* +Build/
--- a/Actor.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/Actor.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -3789,10 +3789,10 @@ if ( player->HasItemEquipped((ITEM_EQUIP_TYPE)i) ) { ItemGen* item; - //if (i == 0) + if (i == 0) + item = player->GetOffHandItem(); + else item = player->GetMainHandItem(); - //else - //item = player->GetOffHandItem(); a4 = item->_439DF3_get_additional_damage((int*)&attackElement, &isLifeStealing); if ( isLifeStealing && pMonster->sCurrentHP > 0 ) {
--- a/Game.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/Game.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -757,6 +757,7 @@ WriteWindowsRegistryInt("window X", Rect.left); WriteWindowsRegistryInt("window Y", Rect.top); } + window->Delete(); WriteWindowsRegistryInt("valAlwaysRun", bAlwaysRun); pItemsTable->Release(); pNPCStats->Release();
--- a/OSWindow.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/OSWindow.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -410,6 +410,15 @@ return false; } + HDC hDC = GetDC(NULL); + int bitsPerPixel = GetDeviceCaps(hDC, BITSPIXEL); + int planes = GetDeviceCaps(hDC, PLANES); + ReleaseDC(NULL, hDC); + if (bitsPerPixel != 16 || planes != 1) + { + SetColorDepth(16); + } + SetWindowedMode(window_width, window_height); Show(); @@ -501,7 +510,8 @@ { SetWindowLongW(api_handle, GWL_EXSTYLE, 0); SetWindowLongW(api_handle, GWL_STYLE, WS_VISIBLE | WS_OVERLAPPEDWINDOW); - + SetWindowPos(api_handle, HWND_TOP, 0, 0, -1, -1, 0); + RECT rcWindow; GetWindowRect(api_handle, &rcWindow); @@ -789,3 +799,37 @@ return true; } + +bool OSWindow::SetColorDepth(int bit) +{ + dm.dmSize = sizeof(DEVMODE); + if (!EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm)) + { + printf("EnumDisplaySettings failed:%d\n", GetLastError()); + return false; + } + dm.dmBitsPerPel = bit; + dm.dmFields = DM_BITSPERPEL; + if (ChangeDisplaySettings(&dm, CDS_TEST) !=DISP_CHANGE_SUCCESSFUL) + { + printf("\nIllegal graphics mode: %d\n", GetLastError()); + return false; + } + if (ChangeDisplaySettings(&dm, 0) == DISP_CHANGE_SUCCESSFUL) + { + ChangedColorDepth = true; + } +} + +void OSWindow::Delete() +{ + Deinitialize(); +} + +void OSWindow::Deinitialize() +{ + if( ChangedColorDepth ) + { + SetColorDepth(32); + } +} \ No newline at end of file
--- a/OSWindow.h Sun Nov 03 22:42:25 2013 +0600 +++ b/OSWindow.h Sun Nov 03 22:42:37 2013 +0600 @@ -6,7 +6,7 @@ { public: static OSWindow *Create(const wchar_t *title, int window_width, int window_height); - + void Delete(); void SetFullscreenMode(); void SetWindowedMode(int new_window_width, int new_window_height); @@ -38,11 +38,15 @@ protected: bool Initialize(const wchar_t *title, int window_width, int window_height); + void Deinitialize(); + bool SetColorDepth(int bit); bool WinApiMessageProc(UINT msg, WPARAM wparam, LPARAM lparam, LRESULT *result); HWND api_handle; + DEVMODE dm; private: + bool ChangedColorDepth; static LPARAM __stdcall WinApiMsgRouter(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); HMENU CreateDebugMenuPanel();
--- a/Party.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/Party.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -1122,7 +1122,7 @@ v8 = 0; for (int i = 0; i < 4; i++) { - v9 = &pPlayers[(uActiveCharacter + i) % 4]; //start with current active player, then cycle right if item won't fit + v9 = ::pPlayers[(uActiveCharacter + i) % 4]; //start with current active player, then cycle right if item won't fit v10 = v9->AddItem(-1, pItem->uItemID); if ( v10 ) {
--- a/mm7_2.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/mm7_2.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -6011,7 +6011,7 @@ v16 = (signed __int16)pSpriteObjects[uLayingItemID].uSoundID + 4; v124 = 8 * v153; LOBYTE(v124) = v124 | 2; - v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id - 1] + 1; + v125 = word_4EE088_sound_ids[pSpriteObjects[uLayingItemID].spell_id] + 1; pAudioPlayer->PlaySound((SoundID)v125, v124, 0, -1, 0, v16, 0, 0); return 0; }
--- a/mm7_data.cpp Sun Nov 03 22:42:25 2013 +0600 +++ b/mm7_data.cpp Sun Nov 03 22:42:37 2013 +0600 @@ -787,7 +787,7 @@ std::array<unsigned int, 2> pHiredNPCsIconsOffsetsY = {152, 152}; std::array<int, 2> dword_4EE07C; // weak _UNKNOWN unk_4EE084; // weak -std::array<__int16, 100> word_4EE088_sound_ids = +std::array<__int16, 101> word_4EE088_sound_ids = {{ 0, 10000, 10010, 10020, 10030, 10040, 10050, 10060, 10070, 10080, 10090, 10100, 11000, 11010, 11020, 11030, 11040, 11050, 11060, 11070, @@ -798,7 +798,8 @@ 15040, 15050, 15060, 15070, 15080, 15090, 15100, 16000, 16010, 16020, 16030, 16040, 16050, 16060, 16070, 16080, 16090, 16100, 17000, 17010, 17020, 17030, 17040, 17050, 17060, 17070, 17080, 17090, 17100, 18000, - 18010, 18020, 18030, 18040, 18050, 18060, 18070, 18080, 18090, 18100 + 18010, 18020, 18030, 18040, 18050, 18060, 18070, 18080, 18090, 18100, + 1 }}; std::array<short, 28> word_4EE150 = {{
--- a/mm7_data.h Sun Nov 03 22:42:25 2013 +0600 +++ b/mm7_data.h Sun Nov 03 22:42:37 2013 +0600 @@ -478,7 +478,7 @@ extern std::array<unsigned int, 2> pHiredNPCsIconsOffsetsY; extern std::array<int, 2> dword_4EE07C; // weak extern _UNKNOWN unk_4EE084; // weak -extern std::array<__int16, 100> word_4EE088_sound_ids; // weak +extern std::array<__int16, 101> word_4EE088_sound_ids; // weak extern std::array<short, 28> word_4EE150; extern int dword_4EED78; // weak extern _UNKNOWN unk_4EED80; // weak