Fix for bug #1656880 (BASS: mouse initialized wrong in control panel)

svn-id: r26130
This commit is contained in:
Max Horn 2007-03-14 12:32:42 +00:00
parent 68a6598fe3
commit 93e316bec7
5 changed files with 15 additions and 24 deletions

View File

@ -1560,14 +1560,14 @@ void Control::delay(unsigned int amount) {
_keyPressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
_skyMouse->mouseMoved(event.mouse.x, event.mouse.y);
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
break;
case OSystem::EVENT_LBUTTONDOWN:
#ifdef PALMOS_MODE
_skyMouse->mouseMoved(event.mouse.x, event.mouse.y);
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
#endif
_mouseClicked = true;
break;
case OSystem::EVENT_LBUTTONUP:

View File

@ -216,15 +216,12 @@ void Mouse::spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY) {
CursorMan.showMouse(true);
}
void Mouse::mouseEngine(uint16 mouseX, uint16 mouseY) {
_mouseX = mouseX;
_mouseY = mouseY;
void Mouse::mouseEngine() {
_logicClick = (_mouseB > 0); // click signal is available for Logic for one gamecycle
if (!Logic::_scriptVariables[MOUSE_STOP]) {
if (Logic::_scriptVariables[MOUSE_STATUS] & (1 << 1)) {
pointerEngine(mouseX + TOP_LEFT_X, mouseY + TOP_LEFT_Y);
pointerEngine(_mouseX + TOP_LEFT_X, _mouseY + TOP_LEFT_Y);
if (Logic::_scriptVariables[MOUSE_STATUS] & (1 << 2)) //buttons enabled?
buttonEngine1();
}
@ -271,10 +268,14 @@ void Mouse::pointerEngine(uint16 xPos, uint16 yPos) {
}
void Mouse::buttonPressed(uint8 button) {
_mouseB = button;
}
void Mouse::mouseMoved(uint16 mouseX, uint16 mouseY) {
_mouseX = mouseX;
_mouseY = mouseY;
}
void Mouse::buttonEngine1(void) {
//checks for clicking on special item
//"compare the size of this routine to S1 mouse_button"

View File

@ -41,7 +41,7 @@ public:
Mouse(OSystem *system, Disk *skyDisk, SkyCompact *skyCompact);
~Mouse(void);
void mouseEngine(uint16 mouseX, uint16 mouseY);
void mouseEngine();
void replaceMouseCursors(uint16 fileNo);
bool fnAddHuman(void);
void fnSaveCoods(void);
@ -54,6 +54,7 @@ public:
void spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY);
void useLogicInstance(Logic *skyLogic) { _skyLogic = skyLogic; };
void buttonPressed(uint8 button);
void mouseMoved(uint16 mouseX, uint16 mouseY);
void waitMouseNotPressed(int minDelay = 0);
uint16 giveMouseX(void) { return _mouseX; };
uint16 giveMouseY(void) { return _mouseY; };

View File

@ -263,8 +263,6 @@ int SkyEngine::go() {
_systemVars.quitGame = false;
_mouseX = GAME_SCREEN_WIDTH / 2;
_mouseY = GAME_SCREEN_HEIGHT / 2;
_keyFlags = _keyPressed = 0;
uint16 result = 0;
@ -303,7 +301,7 @@ int SkyEngine::go() {
_lastSaveTime += 30 * 1000; // try again in 30 secs
}
_skySound->checkFxQueue();
_skyMouse->mouseEngine((uint16)_mouseX, (uint16)_mouseY);
_skyMouse->mouseEngine();
handleKey();
if (_systemVars.paused) {
do {
@ -532,22 +530,15 @@ void SkyEngine::delay(int32 amount) {
break;
case OSystem::EVENT_MOUSEMOVE:
if (!(_systemVars.systemFlags & SF_MOUSE_LOCKED)) {
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
_skyMouse->mouseMoved(event.mouse.x, event.mouse.y);
}
break;
case OSystem::EVENT_LBUTTONDOWN:
#ifdef PALMOS_MODE
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
#endif
_skyMouse->mouseMoved(event.mouse.x, event.mouse.y);
_skyMouse->buttonPressed(2);
break;
case OSystem::EVENT_RBUTTONDOWN:
#ifdef PALMOS_MODE
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
#endif
_skyMouse->mouseMoved(event.mouse.x, event.mouse.y);
_skyMouse->buttonPressed(1);
break;
case OSystem::EVENT_QUIT:

View File

@ -60,8 +60,6 @@ protected:
byte _keyPressed, _keyFlags;
bool _floppyIntro;
int _mouseX, _mouseY;
Sound *_skySound;
Disk *_skyDisk;
Text *_skyText;