diff options
author | Robert Göffringmann | 2003-06-04 18:02:41 +0000 |
---|---|---|
committer | Robert Göffringmann | 2003-06-04 18:02:41 +0000 |
commit | 0845c0adf01371771a158d3b91e249e58224e803 (patch) | |
tree | 69d034570eda2f6eb9ad420dc8613d26a2cc4b98 /sky | |
parent | d496cecc982f13c8010d577236d6c133497af532 (diff) | |
download | scummvm-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.cpp | 30 | ||||
-rw-r--r-- | sky/mouse.cpp | 16 | ||||
-rw-r--r-- | sky/mouse.h | 4 | ||||
-rw-r--r-- | sky/skydefs.h | 16 |
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 |