aboutsummaryrefslogtreecommitdiff
path: root/engines/lab
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab')
-rw-r--r--engines/lab/mouse.cpp95
1 files changed, 12 insertions, 83 deletions
diff --git a/engines/lab/mouse.cpp b/engines/lab/mouse.cpp
index 6e6c97dc33..591014c595 100644
--- a/engines/lab/mouse.cpp
+++ b/engines/lab/mouse.cpp
@@ -39,14 +39,11 @@ namespace Lab {
extern bool IsHiRes;
extern uint32 VGAScreenWidth, VGAScreenHeight;
-void mouseHideXY();
-
static bool LeftClick = false;
static bool RightClick = false;
-static bool MouseHidden = true, QuitMouseHandler = false;
+static bool MouseHidden = true;
static int32 NumHidden = 1;
-static uint16 CurMouseX, CurMouseY;
static Gadget *LastGadgetHit = NULL;
Gadget *ScreenGadgetList = NULL;
static byte MouseData[] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -68,11 +65,9 @@ static byte MouseData[] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
#define MOUSE_WIDTH 10
#define MOUSE_HEIGHT 15
-static bool drawmouse = false, gadhit = false;
+static bool gadhit = false;
static Gadget *hitgad = NULL;
-void mouseShowXY(uint16 CurMouseX, uint16 CurMouseY);
-
/*****************************************************************************/
/* Checks whether or not the cords fall within one of the gadgets in a list */
/* of gadgets. */
@@ -89,20 +84,18 @@ static Gadget *checkGadgetHit(Gadget *gadlist, uint16 x, uint16 y) {
gadhit = true;
hitgad = gadlist;
} else {
- QuitMouseHandler = true;
VGAStorePage();
- mouseHideXY();
+ mouseHide();
drawImage(gadlist->ImAlt, gadlist->x, gadlist->y);
- mouseShowXY(x, y);
+ mouseShow();
for (counter = 0; counter < 3; counter++)
waitTOF();
- mouseHideXY();
+ mouseHide();
drawImage(gadlist->Im, gadlist->x, gadlist->y);
- mouseShowXY(x, y);
+ mouseShow();
VGARestorePage();
- QuitMouseHandler = false;
}
return gadlist;
@@ -131,14 +124,6 @@ void mouse_handler(int32 flag, int32 mouseX, int32 mouseY) {
mouseX /= 2;
if (flag & 0x01) { /* mouse Move */
- if ((CurMouseX != mouseX) || (CurMouseY != mouseY)) {
- CurMouseX = mouseX;
- CurMouseY = mouseY;
-
- if (IsHiRes && !QuitMouseHandler) {
- drawmouse = true;
- }
- }
}
if ((flag & 0x02) && (NumHidden < 2)) { /* Left mouse button click */
@@ -151,15 +136,11 @@ void mouse_handler(int32 flag, int32 mouseX, int32 mouseY) {
LastGadgetHit = TempGad;
} else {
LeftClick = true;
- CurMouseX = mouseX;
- CurMouseY = mouseY;
}
}
if ((flag & 0x08) && (NumHidden < 2)) { /* Right mouse button click */
RightClick = true;
- CurMouseX = mouseX;
- CurMouseY = mouseY;
}
}
@@ -170,16 +151,12 @@ void updateMouse() {
uint16 counter;
bool doUpdateDisplay = false;
- if (drawmouse && !MouseHidden) {
- QuitMouseHandler = true;
- drawmouse = false;
- QuitMouseHandler = false;
+ if (!MouseHidden) {
doUpdateDisplay = true;
}
if (gadhit) {
gadhit = false;
- QuitMouseHandler = true;
mouseHide();
drawImage(hitgad->ImAlt, hitgad->x, hitgad->y);
mouseShow();
@@ -191,7 +168,6 @@ void updateMouse() {
drawImage(hitgad->Im, hitgad->x, hitgad->y);
mouseShow();
doUpdateDisplay = true;
- QuitMouseHandler = false;
}
if (doUpdateDisplay)
@@ -220,62 +196,21 @@ bool initMouse() {
/* Shows the mouse. */
/*****************************************************************************/
void mouseShow() {
- mouseShowXY(CurMouseX, CurMouseY);
-
- g_system->showMouse(true);
-}
-
-
-
-
-
-/*****************************************************************************/
-/* Shows the mouse. */
-/*****************************************************************************/
-void mouseShowXY(uint16 MouseX, uint16 MouseY) {
- QuitMouseHandler = true;
-
if (NumHidden)
NumHidden--;
if ((NumHidden == 0) && MouseHidden) {
- CurMouseX = MouseX;
- CurMouseY = MouseY;
WSDL_ProcessInput(0);
MouseHidden = false;
}
- QuitMouseHandler = false;
+ g_system->showMouse(true);
}
-
-
/*****************************************************************************/
/* Hides the mouse. */
/*****************************************************************************/
void mouseHide() {
- QuitMouseHandler = true;
-
- NumHidden++;
-
- if (NumHidden && !MouseHidden) {
- MouseHidden = true;
-
- g_system->showMouse(false);
- }
-
- QuitMouseHandler = false;
-}
-
-
-
-
-/*****************************************************************************/
-/* Hides the mouse. */
-/*****************************************************************************/
-void mouseHideXY() {
- QuitMouseHandler = true;
-
NumHidden++;
if (NumHidden && !MouseHidden) {
@@ -283,12 +218,9 @@ void mouseHideXY() {
g_system->showMouse(false);
}
-
- QuitMouseHandler = false;
}
-
extern uint32 g_MouseX;
extern uint32 g_MouseY;
@@ -317,10 +249,7 @@ void mouseMove(uint16 x, uint16 y) {
g_system->warpMouse(x, y);
if (!MouseHidden) {
- QuitMouseHandler = true;
- mouseXY(&CurMouseX, &CurMouseY);
WSDL_ProcessInput(0);
- QuitMouseHandler = false;
}
}
@@ -335,15 +264,15 @@ void mouseMove(uint16 x, uint16 y) {
bool mouseButton(uint16 *x, uint16 *y, bool leftbutton) {
if (leftbutton) {
if (LeftClick) {
- *x = CurMouseX;
- *y = CurMouseY;
+ *x = (!IsHiRes) ? (uint16)g_MouseX / 2 : (uint16)g_MouseX;
+ *y = (uint16)g_MouseY;
LeftClick = false;
return true;
}
} else {
if (RightClick) {
- *x = CurMouseX;
- *y = CurMouseY;
+ *x = (!IsHiRes) ? (uint16)g_MouseX / 2 : (uint16)g_MouseX;
+ *y = (uint16)g_MouseY;
RightClick = false;
return true;
}