1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

clean up bnet related code

This commit is contained in:
FunkyFr3sh 2019-08-08 03:19:15 +02:00
parent cbebdd4160
commit f400504dd8
5 changed files with 10 additions and 42 deletions

View File

@ -125,7 +125,6 @@ typedef struct IDirectDrawImpl
BOOL altenter; BOOL altenter;
BOOL hidecursor; BOOL hidecursor;
BOOL accurateTimers; BOOL accurateTimers;
int bnetHack;
BOOL bnetActive; BOOL bnetActive;
BOOL bnetD3d9Fullscreen; BOOL bnetD3d9Fullscreen;
SpeedLimiter ticksLimiter; SpeedLimiter ticksLimiter;

View File

@ -818,7 +818,7 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD
} }
} }
if (!ddraw->windowed && ddraw->bnetHack && ddraw->renderer == render_main) if (!ddraw->windowed && ddraw->renderer == render_main)
This->render.height++; This->render.height++;
if (!ddraw->handlemouse) if (!ddraw->handlemouse)
@ -944,7 +944,7 @@ HRESULT __stdcall ddraw_SetDisplayMode2(IDirectDrawImpl *This, DWORD width, DWOR
void ToggleFullscreen() void ToggleFullscreen()
{ {
if (ddraw->bnetHack && ddraw->bnetActive && ddraw->renderer == render_d3d9_main) if (ddraw->bnetActive && ddraw->renderer == render_d3d9_main)
return; return;
if (ddraw->windowed) if (ddraw->windowed)
@ -1248,7 +1248,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
int x = (int)(short)LOWORD(lParam); int x = (int)(short)LOWORD(lParam);
int y = (int)(short)HIWORD(lParam); int y = (int)(short)HIWORD(lParam);
if (ddraw->bnetHack && x != -32000 && y != -32000) if (ddraw->bnetActive && x != -32000 && y != -32000)
UpdateBnetPos(x, y); UpdateBnetPos(x, y);
if (inSizeMove || ddraw->wine) if (inSizeMove || ddraw->wine)
@ -1716,16 +1716,6 @@ HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACK lpCallback, LPVOID lpContex
return DD_OK; return DD_OK;
} }
//Force redraw when the "Player Profile" screen exits - Idea taken from Aqrit's war2 ddraw
static WNDPROC ButtonWndProc_original;
LRESULT __stdcall ButtonWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg == WM_DESTROY)
RedrawWindow(NULL, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);
return ButtonWndProc_original(hwnd, msg, wParam, lParam);
}
int stdout_open = 0; int stdout_open = 0;
HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnknown FAR* pUnkOuter) HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnknown FAR* pUnkOuter)
{ {
@ -1778,16 +1768,5 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk
Settings_Load(); Settings_Load();
if (ddraw->bnetHack)
{
WNDCLASS wc;
HINSTANCE hInst = GetModuleHandle(NULL);
GetClassInfo(NULL, "Button", &wc);
wc.hInstance = hInst;
ButtonWndProc_original = wc.lpfnWndProc;
wc.lpfnWndProc = ButtonWndProc;
RegisterClass(&wc);
}
return DD_OK; return DD_OK;
} }

View File

@ -143,7 +143,7 @@ void mouse_lock()
{ {
RECT rc; RECT rc;
if (ddraw->bnetHack && ddraw->bnetActive) if (ddraw->bnetActive)
return; return;
if (ddraw->devmode) if (ddraw->devmode)
@ -416,8 +416,7 @@ BOOL WINAPI fake_EnableWindow(HWND hWnd, BOOL bEnable)
{ {
if (ddraw && ddraw->hWnd == hWnd) if (ddraw && ddraw->hWnd == hWnd)
{ {
if (ddraw->bnetHack) return FALSE;
return FALSE;
} }
return real_EnableWindow(hWnd, bEnable); return real_EnableWindow(hWnd, bEnable);
@ -427,7 +426,9 @@ BOOL WINAPI fake_DestroyWindow(HWND hWnd)
{ {
BOOL result = real_DestroyWindow(hWnd); BOOL result = real_DestroyWindow(hWnd);
if (ddraw && ddraw->hWnd != hWnd && ddraw->bnetActive && ddraw->bnetHack && !FindWindowEx(HWND_DESKTOP, NULL, "SDlgDialog", NULL)) RedrawWindow(NULL, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);
if (ddraw && ddraw->hWnd != hWnd && ddraw->bnetActive && !FindWindowEx(HWND_DESKTOP, NULL, "SDlgDialog", NULL))
{ {
ddraw->bnetActive = FALSE; ddraw->bnetActive = FALSE;
mouse_lock(); mouse_lock();
@ -446,7 +447,7 @@ HWND WINAPI fake_CreateWindowExA(
DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y,
int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam) int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
{ {
if (lpClassName && _strcmpi(lpClassName, "SDlgDialog") == 0 && ddraw && ddraw->bnetHack) if (lpClassName && _strcmpi(lpClassName, "SDlgDialog") == 0 && ddraw)
{ {
if (!ddraw->bnetActive) if (!ddraw->bnetActive)
{ {

View File

@ -42,7 +42,6 @@ void Settings_Load()
ddraw->noactivateapp = GetBool("noactivateapp", FALSE); ddraw->noactivateapp = GetBool("noactivateapp", FALSE);
ddraw->vhack = GetBool("vhack", FALSE); ddraw->vhack = GetBool("vhack", FALSE);
ddraw->accurateTimers = GetBool("accuratetimers", FALSE); ddraw->accurateTimers = GetBool("accuratetimers", FALSE);
ddraw->bnetHack = GetBool("bnetHack", TRUE);
WindowRect.right = GetInt("width", 0); WindowRect.right = GetInt("width", 0);
WindowRect.bottom = GetInt("height", 0); WindowRect.bottom = GetInt("height", 0);
@ -284,9 +283,6 @@ static void CreateSettingsIni()
"; Note: Can be used to fix issues related to new features added by cnc-ddraw such as windowed mode or stretching\n" "; Note: Can be used to fix issues related to new features added by cnc-ddraw such as windowed mode or stretching\n"
"hook=1\n" "hook=1\n"
"\n" "\n"
"; Workaround for battle.net on Diablo and Warcraft 2 BNE\n"
"bnetHack=true\n"
"\n"
"\n" "\n"
"\n" "\n"
"; ### Game specific settings ###\n" "; ### Game specific settings ###\n"
@ -411,13 +407,6 @@ static void CreateSettingsIni()
"noactivateapp=true\n" "noactivateapp=true\n"
"handlemouse=false\n" "handlemouse=false\n"
"maxfps=60\n" "maxfps=60\n"
"; Diablo\n"
"[Diablo]\n"
"bnetHack=true\n"
"\n"
"; Warcraft 2 Battle.net Edition\n"
"[Warcraft II BNE]\n"
"bnetHack=true\n"
"\n" "\n"
, fh); , fh);

View File

@ -1005,7 +1005,7 @@ HRESULT __stdcall ddraw_surface_Unlock(IDirectDrawSurfaceImpl *This, LPVOID lpRe
printf("DirectDrawSurface::Unlock(This=%p, lpRect=%p)\n", This, lpRect); printf("DirectDrawSurface::Unlock(This=%p, lpRect=%p)\n", This, lpRect);
#endif #endif
HWND hWnd = ddraw->bnetHack ? FindWindowEx(HWND_DESKTOP, NULL, "SDlgDialog", NULL) : NULL; HWND hWnd = ddraw->bnetActive ? FindWindowEx(HWND_DESKTOP, NULL, "SDlgDialog", NULL) : NULL;
if (hWnd && (This->caps & DDSCAPS_PRIMARYSURFACE)) if (hWnd && (This->caps & DDSCAPS_PRIMARYSURFACE))
{ {
if (ddraw->primary->palette && ddraw->primary->palette->data_rgb) if (ddraw->primary->palette && ddraw->primary->palette->data_rgb)