From a0efe3a4eced86266fffe9a0f3500a7218d7c973 Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Sun, 7 Jun 2020 18:58:57 -0700 Subject: [PATCH] Mouse ghosting no longer happens. --- REDALERT/GSCREEN.CPP | 2 +- REDALERT/WIN32LIB/MOUSE.H | 4 +++- REDALERT/WIN32LIB/MOUSEWW.CPP | 10 +++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/REDALERT/GSCREEN.CPP b/REDALERT/GSCREEN.CPP index f0a7213..73258e2 100644 --- a/REDALERT/GSCREEN.CPP +++ b/REDALERT/GSCREEN.CPP @@ -275,7 +275,7 @@ void GScreenClass::Input(KeyNumType & key, int & x, int & y) x = Keyboard->Mouse_X(); y = Keyboard->Mouse_Y(); - Show_Mouse(); + Show_Mouse(false); if (Buttons != NULL) { diff --git a/REDALERT/WIN32LIB/MOUSE.H b/REDALERT/WIN32LIB/MOUSE.H index 4c8781c..51ebe44 100644 --- a/REDALERT/WIN32LIB/MOUSE.H +++ b/REDALERT/WIN32LIB/MOUSE.H @@ -128,7 +128,9 @@ void __cdecl Mouse_Draw(WWMouseClass& mouse, GraphicViewPortClass& viewport, int void* __cdecl Mouse_Set_Cursor(WWMouseClass& mouse, int hspot_x, int hspot_y, void* frame); void Hide_Mouse(void); -void Show_Mouse(void); +// jmarshall +void Show_Mouse(bool clearPrevious = true); +// jmarshall end void Conditional_Hide_Mouse(int x1, int y1, int x2, int y2); void Conditional_Show_Mouse(void); int Get_Mouse_State(void); diff --git a/REDALERT/WIN32LIB/MOUSEWW.CPP b/REDALERT/WIN32LIB/MOUSEWW.CPP index 1b080ed..5143df1 100644 --- a/REDALERT/WIN32LIB/MOUSEWW.CPP +++ b/REDALERT/WIN32LIB/MOUSEWW.CPP @@ -295,7 +295,7 @@ void *WWMouseClass::Set_Cursor(int xhotspot, int yhotspot, void *cursor) void WWMouseClass::Low_Hide_Mouse() { - if (!State) { + //if (!State) { if (MouseBuffX != -1 || MouseBuffY != -1) { if (Screen->Lock()){ Mouse_Shadow_Buffer(*this, *Screen, MouseBuffer, MouseBuffX, MouseBuffY, MouseXHot, MouseYHot, 0); @@ -304,7 +304,7 @@ void WWMouseClass::Low_Hide_Mouse() } MouseBuffX = -1; MouseBuffY = -1; - } + //} State++; } @@ -632,9 +632,13 @@ void Hide_Mouse(void) _Mouse->Hide_Mouse(); } -void Show_Mouse(void) +void Show_Mouse(bool clearPrevious) { if (!_Mouse) return; + + if(clearPrevious) + _Mouse->Hide_Mouse(); + _Mouse->Show_Mouse(); }