aboutsummaryrefslogtreecommitdiff
path: root/sky
diff options
context:
space:
mode:
authorRobert Göffringmann2003-06-04 18:02:41 +0000
committerRobert Göffringmann2003-06-04 18:02:41 +0000
commit0845c0adf01371771a158d3b91e249e58224e803 (patch)
tree69d034570eda2f6eb9ad420dc8613d26a2cc4b98 /sky
parentd496cecc982f13c8010d577236d6c133497af532 (diff)
downloadscummvm-rg350-0845c0adf01371771a158d3b91e249e58224e803.tar.gz
scummvm-rg350-0845c0adf01371771a158d3b91e249e58224e803.tar.bz2
scummvm-rg350-0845c0adf01371771a158d3b91e249e58224e803.zip
fixed two mouse bugs
svn-id: r8296
Diffstat (limited to 'sky')
-rw-r--r--sky/logic.cpp30
-rw-r--r--sky/mouse.cpp16
-rw-r--r--sky/mouse.h4
-rw-r--r--sky/skydefs.h16
4 files changed, 36 insertions, 30 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp
index 7f2bdbbbc0..57fc4c38e9 100644
--- a/sky/logic.cpp
+++ b/sky/logic.cpp
@@ -1333,31 +1333,43 @@ bool SkyLogic::fnAssignBase(uint32 id, uint32 scr, uint32 c) {
}
bool SkyLogic::fnDiskMouse(uint32 a, uint32 b, uint32 c) {
- return _skyMouse->fnDiskMouse();
+ _skyMouse->spriteMouse(MOUSE_DISK, 11, 11);
+ return true;
}
bool SkyLogic::fnNormalMouse(uint32 a, uint32 b, uint32 c) {
- return _skyMouse->fnNormalMouse();
+ _skyMouse->spriteMouse(MOUSE_NORMAL, 0, 0);
+ return true;
}
bool SkyLogic::fnBlankMouse(uint32 a, uint32 b, uint32 c) {
- return _skyMouse->fnBlankMouse();
+ _skyMouse->spriteMouse(MOUSE_BLANK, 0, 0);
+ return true;
}
bool SkyLogic::fnCrossMouse(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnCrossMouse");
+ _skyMouse->spriteMouse(MOUSE_CROSS, 11, 11);
+ return true;
}
bool SkyLogic::fnCursorRight(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnCursorRight");
+ _skyMouse->spriteMouse(MOUSE_RIGHT, 9, 4);
+ return true;
}
bool SkyLogic::fnCursorLeft(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnCursorLeft");
+ _skyMouse->spriteMouse(MOUSE_LEFT, 0, 5);
+ return true;
}
bool SkyLogic::fnCursorDown(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnCursorDown");
+ _skyMouse->spriteMouse(MOUSE_DOWN, 9, 4);
+ return true;
+}
+
+bool SkyLogic::fnCursorUp(uint32 a, uint32 b, uint32 c) {
+ _skyMouse->spriteMouse(MOUSE_UP, 9, 4);
+ return true;
}
bool SkyLogic::fnOpenHand(uint32 a, uint32 b, uint32 c) {
@@ -2070,10 +2082,6 @@ bool SkyLogic::fnEyeball(uint32 id, uint32 b, uint32 c) {
return true;
}
-bool SkyLogic::fnCursorUp(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnCursorUp");
-}
-
bool SkyLogic::fnLeaveSection(uint32 sectionNo, uint32 b, uint32 c) {
if (SkyState::isDemo())
error("End of demo");
diff --git a/sky/mouse.cpp b/sky/mouse.cpp
index 7283bb6df1..a4d7a67823 100644
--- a/sky/mouse.cpp
+++ b/sky/mouse.cpp
@@ -112,7 +112,7 @@ void SkyMouse::replaceMouseCursors(uint16 fileNo) {
_skyDisk->loadFile(fileNo, _objectMouseData);
}
-bool SkyMouse::fnBlankMouse(void) {
+/*bool SkyMouse::fnBlankMouse(void) {
_mouseXOff = 0; //re-align mouse
spriteMouse(MOUSE_BLANK, 0, 0);
return true;
@@ -127,7 +127,7 @@ bool SkyMouse::fnDiskMouse(void) {
bool SkyMouse::fnNormalMouse(void) {
spriteMouse(MOUSE_NORMAL, 0, 0);
return true;
-}
+}*/
bool SkyMouse::fnAddHuman(void) {
//reintroduce the mouse so that the human can control the player
@@ -152,7 +152,7 @@ bool SkyMouse::fnAddHuman(void) {
if (getOff)
_skyLogic->script((uint16)(getOff & 0xFFFF), (uint16)(getOff >> 16));
- SkyLogic::_scriptVariables[SPECIAL_ITEM] = 0xFFFFFFFF; //0?
+ SkyLogic::_scriptVariables[SPECIAL_ITEM] = 0xFFFFFFFF;
SkyLogic::_scriptVariables[GET_OFF] = RESET_MOUSE;
}
@@ -187,8 +187,9 @@ void SkyMouse::spriteMouse(uint16 frameNum, uint16 mouseX, uint16 mouseY) {
_mouseOffsetY = mouseY;
//restoreMouseData(frameNum);
+ printf("drawing mouse %d\n",frameNum);
byte *mouseData = _miceData;
- uint32 pos = ((struct dataFileHeader *)mouseData)->s_sp_size * ((struct dataFileHeader *)mouseData)->s_sp_size;
+ uint32 pos = ((struct dataFileHeader *)mouseData)->s_sp_size * frameNum;
pos += sizeof(struct dataFileHeader);
_mouseData2 = mouseData + pos;
@@ -196,10 +197,9 @@ void SkyMouse::spriteMouse(uint16 frameNum, uint16 mouseX, uint16 mouseY) {
_mouseHeight = ((struct dataFileHeader *)mouseData)->s_height;
_system->set_mouse_cursor(_mouseData2, _mouseWidth, _mouseHeight, mouseX, mouseY);
- if (frameNum == MOUSE_BLANK)
- _system->show_mouse(false);
- else
- _system->show_mouse(true);
+ if (frameNum == MOUSE_BLANK) _system->show_mouse(false);
+ else _system->show_mouse(true);
+
//drawNewMouse();
SkyState::_systemVars.mouseFlag &= ~MF_IN_INT;
diff --git a/sky/mouse.h b/sky/mouse.h
index b925b81cf0..b6e52b9e61 100644
--- a/sky/mouse.h
+++ b/sky/mouse.h
@@ -37,9 +37,7 @@ public:
~SkyMouse(void);
void replaceMouseCursors(uint16 fileNo);
- bool fnBlankMouse(void);
- bool fnDiskMouse(void);
- bool fnNormalMouse(void);
+ //void setMouseSprite(uint8 sprNum, uint16 mouseX, uint16 mouseY);
bool fnAddHuman(void);
void lockMouse(void);
void unlockMouse(void);
diff --git a/sky/skydefs.h b/sky/skydefs.h
index 8c3db08dee..0ca0b7e7bc 100644
--- a/sky/skydefs.h
+++ b/sky/skydefs.h
@@ -4290,14 +4290,14 @@
#define MF_SAVED (1 << 2) // set when saved data is valid
#define MF_GOT_INT (1 << 3) // set when mouse interrupt received
-#define MOUSE_NORMAL (1 << 1) // normal mouse
-#define MOUSE_DISK (1 << 2) // disk mouse
-#define MOUSE_DOWN (1 << 3)
-#define MOUSE_RIGHT (1 << 4) // right pointer
-#define MOUSE_LEFT (1 << 5) // left pointer
-#define MOUSE_BLANK (1 << 6) // blank mouse
-#define MOUSE_CROSS (1 << 7) // angry mouse
-#define MOUSE_UP (1 << 8) // mouse up
+#define MOUSE_NORMAL 1 // normal mouse
+#define MOUSE_DISK 2 // disk mouse
+#define MOUSE_DOWN 3
+#define MOUSE_RIGHT 4 // right pointer
+#define MOUSE_LEFT 5 // left pointer
+#define MOUSE_BLANK 6 // blank mouse
+#define MOUSE_CROSS 7 // angry mouse
+#define MOUSE_UP 8 // mouse up
#endif