Adding an enum MouseButtons
svn-id: r42119
This commit is contained in:
parent
5c60d94725
commit
d2c2386c6a
10 changed files with 67 additions and 57 deletions
|
@ -29,7 +29,6 @@
|
|||
#include "gob/game.h"
|
||||
#include "gob/helper.h"
|
||||
#include "gob/global.h"
|
||||
#include "gob/util.h"
|
||||
#include "gob/dataio.h"
|
||||
#include "gob/variables.h"
|
||||
#include "gob/script.h"
|
||||
|
@ -186,7 +185,7 @@ Game::Game(GobEngine *vm) : _vm(vm) {
|
|||
_totToLoad[0] = 0;
|
||||
|
||||
_startTimeKey = 0;
|
||||
_mouseButtons = 0;
|
||||
_mouseButtons = kMouseButtonsNone;
|
||||
|
||||
_lastCollKey = 0;
|
||||
_lastCollAreaIndex = 0;
|
||||
|
@ -349,7 +348,7 @@ void Game::evaluateScroll(int16 x, int16 y) {
|
|||
}
|
||||
|
||||
int16 Game::checkKeys(int16 *pMouseX, int16 *pMouseY,
|
||||
int16 *pButtons, char handleMouse) {
|
||||
MouseButtons *pButtons, char handleMouse) {
|
||||
|
||||
_vm->_util->processInput(true);
|
||||
|
||||
|
@ -373,8 +372,8 @@ int16 Game::checkKeys(int16 *pMouseX, int16 *pMouseY,
|
|||
if (pMouseX && pMouseY && pButtons) {
|
||||
_vm->_util->getMouseState(pMouseX, pMouseY, pButtons);
|
||||
|
||||
if (*pButtons == 3)
|
||||
*pButtons = 0;
|
||||
if (*pButtons == kMouseButtonsBoth)
|
||||
*pButtons = kMouseButtonsNone;
|
||||
}
|
||||
|
||||
return _vm->_util->checkKey();
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
#ifndef GOB_GAME_H
|
||||
#define GOB_GAME_H
|
||||
|
||||
#include "gob/util.h"
|
||||
|
||||
namespace Gob {
|
||||
|
||||
class Script;
|
||||
|
@ -103,7 +105,7 @@ public:
|
|||
char _totToLoad[20];
|
||||
|
||||
int32 _startTimeKey;
|
||||
int16 _mouseButtons;
|
||||
MouseButtons _mouseButtons;
|
||||
|
||||
bool _noScroll;
|
||||
bool _preventScroll;
|
||||
|
@ -122,7 +124,7 @@ public:
|
|||
void evaluateScroll(int16 x, int16 y);
|
||||
|
||||
int16 checkKeys(int16 *pMousex = 0, int16 *pMouseY = 0,
|
||||
int16 *pButtons = 0, char handleMouse = 0);
|
||||
MouseButtons *pButtons = 0, char handleMouse = 0);
|
||||
void start(void);
|
||||
|
||||
virtual void totSub(int8 flags, const char *newTotFile);
|
||||
|
|
|
@ -100,7 +100,7 @@ int16 Game_Fascination::checkCollisions(byte handleMouse, int16 deltaTime, int16
|
|||
key = checkKeys(&_vm->_global->_inter_mouseX,
|
||||
&_vm->_global->_inter_mouseY, &_mouseButtons, handleMouse);
|
||||
|
||||
if ((handleMouse == 0) && (_mouseButtons != 0)) {
|
||||
if ((handleMouse == 0) && (_mouseButtons != kMouseButtonsNone)) {
|
||||
_vm->_util->waitMouseRelease(0);
|
||||
key = 3;
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ int16 Game_Fascination::checkCollisions(byte handleMouse, int16 deltaTime, int16
|
|||
}
|
||||
|
||||
if (handleMouse != 0) {
|
||||
if (_mouseButtons != 0) {
|
||||
if (_mouseButtons != kMouseButtonsNone) {
|
||||
if (deltaTime > 0) {
|
||||
_vm->_draw->animateCursor(2);
|
||||
_vm->_util->delay(deltaTime);
|
||||
|
@ -142,7 +142,7 @@ int16 Game_Fascination::checkCollisions(byte handleMouse, int16 deltaTime, int16
|
|||
|
||||
if ((key != 0) || ((pResId != 0) && (*pResId != 0))) {
|
||||
if ((handleMouse & 1) &&
|
||||
((deltaTime <= 0) || (_mouseButtons == 0)))
|
||||
((deltaTime <= 0) || (_mouseButtons == kMouseButtonsNone)))
|
||||
_vm->_draw->blitCursor();
|
||||
|
||||
if ((_lastCollKey != 0) && (key != _lastCollKey))
|
||||
|
@ -180,7 +180,7 @@ int16 Game_Fascination::checkCollisions(byte handleMouse, int16 deltaTime, int16
|
|||
}
|
||||
}
|
||||
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == 0)) {
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == kMouseButtonsNone)) {
|
||||
uint32 curtime = _vm->_util->getTimeKey();
|
||||
if ((curtime + deltaTime) > timeKey) {
|
||||
if (pResId != 0)
|
||||
|
|
|
@ -317,7 +317,7 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime,
|
|||
key = checkKeys(&_vm->_global->_inter_mouseX,
|
||||
&_vm->_global->_inter_mouseY, &_mouseButtons, handleMouse);
|
||||
|
||||
if ((handleMouse == 0) && (_mouseButtons != 0)) {
|
||||
if ((handleMouse == 0) && (_mouseButtons != kMouseButtonsNone)) {
|
||||
_vm->_util->waitMouseRelease(0);
|
||||
key = 3;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime,
|
|||
}
|
||||
|
||||
if (handleMouse != 0) {
|
||||
if (_mouseButtons != 0) {
|
||||
if (_mouseButtons != kMouseButtonsNone) {
|
||||
oldIndex = 0;
|
||||
|
||||
_vm->_draw->animateCursor(2);
|
||||
|
@ -368,7 +368,7 @@ int16 Game_v1::checkCollisions(byte handleMouse, int16 deltaTime,
|
|||
|
||||
if ((key != 0) || ((pResId != 0) && (*pResId != 0))) {
|
||||
if ((handleMouse == 1) &&
|
||||
((deltaTime <= 0) || (_mouseButtons == 0)))
|
||||
((deltaTime <= 0) || (_mouseButtons == kMouseButtonsNone)))
|
||||
_vm->_draw->blitCursor();
|
||||
|
||||
if ((_lastCollKey != 0) &&
|
||||
|
@ -775,7 +775,7 @@ void Game_v1::collisionsBlock(void) {
|
|||
_activeCollIndex = i;
|
||||
WRITE_VAR(2, _vm->_global->_inter_mouseX);
|
||||
WRITE_VAR(3, _vm->_global->_inter_mouseY);
|
||||
WRITE_VAR(4, _mouseButtons);
|
||||
WRITE_VAR(4, (uint32) _mouseButtons);
|
||||
WRITE_VAR(16, array[(uint16) _activeCollResId & ~0x8000]);
|
||||
|
||||
if (collPtr->funcLeave != 0) {
|
||||
|
@ -870,7 +870,7 @@ void Game_v1::collisionsBlock(void) {
|
|||
|
||||
WRITE_VAR(2, _vm->_global->_inter_mouseX);
|
||||
WRITE_VAR(3, _vm->_global->_inter_mouseY);
|
||||
WRITE_VAR(4, _mouseButtons);
|
||||
WRITE_VAR(4, (uint32) _mouseButtons);
|
||||
WRITE_VAR(16, array[(uint16) _activeCollResId & ~0x8000]);
|
||||
|
||||
if (_collisionAreas[_activeCollIndex].funcEnter != 0) {
|
||||
|
@ -965,7 +965,7 @@ void Game_v1::collisionsBlock(void) {
|
|||
|
||||
WRITE_VAR(2, _vm->_global->_inter_mouseX);
|
||||
WRITE_VAR(3, _vm->_global->_inter_mouseY);
|
||||
WRITE_VAR(4, _mouseButtons);
|
||||
WRITE_VAR(4, (uint32) _mouseButtons);
|
||||
|
||||
if (VAR(16) == 0)
|
||||
WRITE_VAR(16, array[(uint16) _activeCollResId & ~0x8000]);
|
||||
|
@ -1400,7 +1400,7 @@ int16 Game_v1::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
if (((ptr->flags & 0xF) != 1) && ((ptr->flags & 0xF) != 2))
|
||||
continue;
|
||||
|
||||
if ((((ptr->flags & 0xF0) >> 4) != (_mouseButtons - 1))
|
||||
if ((((ptr->flags & 0xF0) >> 4) != (((int32) _mouseButtons) - 1))
|
||||
&& (((ptr->flags & 0xF0) >> 4) != 2))
|
||||
continue;
|
||||
|
||||
|
@ -1417,7 +1417,7 @@ int16 Game_v1::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((_mouseButtons != 1) && (all == 0))
|
||||
if ((_mouseButtons != kMouseButtonsLeft) && (all == 0))
|
||||
return 0x11B;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -338,7 +338,7 @@ int16 Game_v2::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
key = checkKeys(&_vm->_global->_inter_mouseX,
|
||||
&_vm->_global->_inter_mouseY, &_mouseButtons, handleMouse);
|
||||
|
||||
if ((handleMouse == 0) && (_mouseButtons != 0)) {
|
||||
if ((handleMouse == 0) && (_mouseButtons != kMouseButtonsNone)) {
|
||||
_vm->_util->waitMouseRelease(0);
|
||||
key = 3;
|
||||
}
|
||||
|
@ -363,7 +363,7 @@ int16 Game_v2::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
}
|
||||
|
||||
if (handleMouse != 0) {
|
||||
if (_mouseButtons != 0) {
|
||||
if (_mouseButtons != kMouseButtonsNone) {
|
||||
if (deltaTime > 0) {
|
||||
_vm->_draw->animateCursor(2);
|
||||
_vm->_util->delay(deltaTime);
|
||||
|
@ -380,7 +380,7 @@ int16 Game_v2::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
|
||||
if ((key != 0) || ((pResId != 0) && (*pResId != 0))) {
|
||||
if ((handleMouse & 1) &&
|
||||
((deltaTime <= 0) || (_mouseButtons == 0)))
|
||||
((deltaTime <= 0) || (_mouseButtons == kMouseButtonsNone)))
|
||||
_vm->_draw->blitCursor();
|
||||
|
||||
if ((_lastCollKey != 0) && (key != _lastCollKey))
|
||||
|
@ -418,7 +418,7 @@ int16 Game_v2::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
}
|
||||
}
|
||||
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == 0)) {
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == kMouseButtonsNone)) {
|
||||
uint32 curtime = _vm->_util->getTimeKey();
|
||||
if ((curtime + deltaTime) > timeKey) {
|
||||
if (pResId != 0)
|
||||
|
@ -1103,7 +1103,7 @@ int16 Game_v2::multiEdit(int16 time, int16 index, int16 *pCurPos,
|
|||
if (*collResId == 0)
|
||||
return 0;
|
||||
|
||||
if (_mouseButtons != 0) {
|
||||
if (_mouseButtons != kMouseButtonsNone) {
|
||||
for (collArea = _collisionAreas, i = 0;
|
||||
collArea->left != 0xFFFF; collArea++, i++) {
|
||||
if ((collArea->flags & 0xF00))
|
||||
|
@ -1535,7 +1535,7 @@ int16 Game_v2::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
if ((ptr->flags & 0xF) < 1)
|
||||
continue;
|
||||
|
||||
if ((((ptr->flags & 0xF0) >> 4) != (_mouseButtons - 1)) &&
|
||||
if ((((ptr->flags & 0xF0) >> 4) != (((int32) _mouseButtons) - 1)) &&
|
||||
(((ptr->flags & 0xF0) >> 4) != 2))
|
||||
continue;
|
||||
|
||||
|
@ -1554,7 +1554,7 @@ int16 Game_v2::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((_mouseButtons != 1) && (all == 0))
|
||||
if ((_mouseButtons != kMouseButtonsLeft) && (all == 0))
|
||||
return 0x11B;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -261,7 +261,7 @@ int16 Game_v6::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
key = checkKeys(&_vm->_global->_inter_mouseX,
|
||||
&_vm->_global->_inter_mouseY, &_mouseButtons, handleMouse);
|
||||
|
||||
if ((handleMouse == 0) && (_mouseButtons != 0)) {
|
||||
if ((handleMouse == 0) && (_mouseButtons != kMouseButtonsNone)) {
|
||||
_vm->_util->waitMouseRelease(0);
|
||||
key = 3;
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ int16 Game_v6::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
}
|
||||
|
||||
if (handleMouse != 0) {
|
||||
if (_mouseButtons != 0) {
|
||||
if (_mouseButtons != kMouseButtonsNone) {
|
||||
|
||||
if (deltaTime > 0) {
|
||||
_vm->_draw->animateCursor(2);
|
||||
|
@ -308,7 +308,7 @@ int16 Game_v6::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
|
||||
if ((key != 0) || ((pResId != 0) && (*pResId != 0))) {
|
||||
if ((handleMouse & 1) &&
|
||||
((deltaTime <= 0) || (_mouseButtons == 0)))
|
||||
((deltaTime <= 0) || (_mouseButtons == kMouseButtonsNone)))
|
||||
_vm->_draw->blitCursor();
|
||||
|
||||
if (key != _lastCollKey)
|
||||
|
@ -331,7 +331,7 @@ int16 Game_v6::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
collSubReenter();
|
||||
}
|
||||
|
||||
if ((deltaTime == -2) && (key == 0) && (_mouseButtons == 0)) {
|
||||
if ((deltaTime == -2) && (key == 0) && (_mouseButtons == kMouseButtonsNone)) {
|
||||
if (pResId != 0)
|
||||
*pResId = 0;
|
||||
|
||||
|
@ -343,7 +343,7 @@ int16 Game_v6::checkCollisions(byte handleMouse, int16 deltaTime, int16 *pResId,
|
|||
} else if (handleMouse != 0)
|
||||
_vm->_draw->animateCursor(-1);
|
||||
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == 0)) {
|
||||
if ((deltaTime < 0) && (key == 0) && (_mouseButtons == kMouseButtonsNone)) {
|
||||
uint32 curtime = _vm->_util->getTimeKey();
|
||||
if ((curtime + deltaTime) > timeKey) {
|
||||
if (pResId != 0)
|
||||
|
@ -1069,7 +1069,7 @@ int16 Game_v6::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
if ((ptr->flags & 0xF) < 1)
|
||||
continue;
|
||||
|
||||
if ((((ptr->flags & 0x70) >> 4) != (_mouseButtons - 1)) &&
|
||||
if ((((ptr->flags & 0x70) >> 4) != (((int32) _mouseButtons) - 1)) &&
|
||||
(((ptr->flags & 0x70) >> 4) != 2))
|
||||
continue;
|
||||
|
||||
|
@ -1088,7 +1088,7 @@ int16 Game_v6::checkMousePoint(int16 all, int16 *resId, int16 *resIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((_mouseButtons != 1) && (all == 0))
|
||||
if ((_mouseButtons != kMouseButtonsLeft) && (all == 0))
|
||||
return 0x11B;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -180,7 +180,7 @@ void Inter::storeMouse() {
|
|||
|
||||
WRITE_VAR(2, x);
|
||||
WRITE_VAR(3, y);
|
||||
WRITE_VAR(4, _vm->_game->_mouseButtons);
|
||||
WRITE_VAR(4, (uint32) _vm->_game->_mouseButtons);
|
||||
}
|
||||
|
||||
void Inter::storeKey(int16 key) {
|
||||
|
|
|
@ -89,7 +89,7 @@ void Inter_Bargon::oBargon_intro2(OpGobParams ¶ms) {
|
|||
int i;
|
||||
int16 mouseX;
|
||||
int16 mouseY;
|
||||
int16 buttons;
|
||||
MouseButtons buttons;
|
||||
SurfaceDescPtr surface;
|
||||
SoundDesc samples[4];
|
||||
int16 comp[5] = { 0, 1, 2, 3, -1 };
|
||||
|
@ -137,7 +137,7 @@ void Inter_Bargon::oBargon_intro2(OpGobParams ¶ms) {
|
|||
void Inter_Bargon::oBargon_intro3(OpGobParams ¶ms) {
|
||||
int16 mouseX;
|
||||
int16 mouseY;
|
||||
int16 buttons;
|
||||
MouseButtons buttons;
|
||||
Video::Color *palBak;
|
||||
SoundDesc samples[2];
|
||||
int16 comp[3] = { 0, 1, -1 };
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
namespace Gob {
|
||||
|
||||
Util::Util(GobEngine *vm) : _vm(vm) {
|
||||
_mouseButtons = 0;
|
||||
_mouseButtons = kMouseButtonsNone,
|
||||
_keyBufferHead = 0;
|
||||
_keyBufferTail = 0;
|
||||
_fastMode = 0;
|
||||
|
@ -85,7 +85,7 @@ void Util::longDelay(uint16 msecs) {
|
|||
}
|
||||
|
||||
void Util::initInput(void) {
|
||||
_mouseButtons = 0;
|
||||
_mouseButtons = kMouseButtonsNone;
|
||||
_keyBufferHead = _keyBufferTail = 0;
|
||||
}
|
||||
|
||||
|
@ -103,16 +103,16 @@ void Util::processInput(bool scroll) {
|
|||
y = event.mouse.y;
|
||||
break;
|
||||
case Common::EVENT_LBUTTONDOWN:
|
||||
_mouseButtons |= 1;
|
||||
_mouseButtons = (MouseButtons) (((uint32) _mouseButtons) | ((uint32) kMouseButtonsLeft));
|
||||
break;
|
||||
case Common::EVENT_RBUTTONDOWN:
|
||||
_mouseButtons |= 2;
|
||||
_mouseButtons = (MouseButtons) (((uint32) _mouseButtons) | ((uint32) kMouseButtonsRight));
|
||||
break;
|
||||
case Common::EVENT_LBUTTONUP:
|
||||
_mouseButtons &= ~1;
|
||||
_mouseButtons = (MouseButtons) (((uint32) _mouseButtons) & ~((uint32) kMouseButtonsLeft));
|
||||
break;
|
||||
case Common::EVENT_RBUTTONUP:
|
||||
_mouseButtons &= ~2;
|
||||
_mouseButtons = (MouseButtons) (((uint32) _mouseButtons) & ~((uint32) kMouseButtonsRight));
|
||||
break;
|
||||
case Common::EVENT_KEYDOWN:
|
||||
if (event.kbd.flags == Common::KBD_CTRL) {
|
||||
|
@ -246,7 +246,7 @@ bool Util::checkKey(int16 &key) {
|
|||
return true;
|
||||
}
|
||||
|
||||
void Util::getMouseState(int16 *pX, int16 *pY, int16 *pButtons) {
|
||||
void Util::getMouseState(int16 *pX, int16 *pY, MouseButtons *pButtons) {
|
||||
Common::Point mouse = g_system->getEventManager()->getMousePos();
|
||||
*pX = mouse.x + _vm->_video->_scrollOffsetX - _vm->_video->_screenDeltaX;
|
||||
*pY = mouse.y + _vm->_video->_scrollOffsetY - _vm->_video->_screenDeltaY;
|
||||
|
@ -264,15 +264,15 @@ void Util::setMousePos(int16 x, int16 y) {
|
|||
void Util::waitMouseUp(void) {
|
||||
do {
|
||||
processInput();
|
||||
if (_mouseButtons != 0)
|
||||
if (_mouseButtons != kMouseButtonsNone)
|
||||
delay(10);
|
||||
} while (_mouseButtons != 0);
|
||||
} while (_mouseButtons != kMouseButtonsNone);
|
||||
}
|
||||
|
||||
void Util::waitMouseDown(void) {
|
||||
int16 x;
|
||||
int16 y;
|
||||
int16 buttons;
|
||||
MouseButtons buttons;
|
||||
|
||||
do {
|
||||
processInput();
|
||||
|
@ -283,7 +283,7 @@ void Util::waitMouseDown(void) {
|
|||
}
|
||||
|
||||
void Util::waitMouseRelease(char drawMouse) {
|
||||
int16 buttons;
|
||||
MouseButtons buttons;
|
||||
int16 mouseX;
|
||||
int16 mouseY;
|
||||
|
||||
|
@ -300,8 +300,8 @@ void Util::forceMouseUp(bool onlyWhenSynced) {
|
|||
if (onlyWhenSynced && (_vm->_game->_mouseButtons != _mouseButtons))
|
||||
return;
|
||||
|
||||
_vm->_game->_mouseButtons = 0;
|
||||
_mouseButtons = 0;
|
||||
_vm->_game->_mouseButtons = kMouseButtonsNone;
|
||||
_mouseButtons = kMouseButtonsNone;
|
||||
}
|
||||
|
||||
void Util::clearPalette(void) {
|
||||
|
|
|
@ -34,6 +34,14 @@ namespace Gob {
|
|||
|
||||
#define KEYBUFSIZE 16
|
||||
|
||||
enum MouseButtons {
|
||||
kMouseButtonsNone = 0,
|
||||
kMouseButtonsLeft = 1,
|
||||
kMouseButtonsRight = 2,
|
||||
kMouseButtonsBoth = 3,
|
||||
kMouseButtonsAny = 4
|
||||
};
|
||||
|
||||
class Util {
|
||||
public:
|
||||
struct ListNode;
|
||||
|
@ -66,7 +74,7 @@ public:
|
|||
int16 checkKey(void);
|
||||
bool checkKey(int16 &key);
|
||||
|
||||
void getMouseState(int16 *pX, int16 *pY, int16 *pButtons);
|
||||
void getMouseState(int16 *pX, int16 *pY, MouseButtons *pButtons);
|
||||
void setMousePos(int16 x, int16 y);
|
||||
void waitMouseUp(void);
|
||||
void waitMouseDown(void);
|
||||
|
@ -95,7 +103,8 @@ public:
|
|||
Util(GobEngine *vm);
|
||||
|
||||
protected:
|
||||
int16 _mouseButtons;
|
||||
MouseButtons _mouseButtons;
|
||||
|
||||
Common::KeyState _keyBuffer[KEYBUFSIZE];
|
||||
int16 _keyBufferHead;
|
||||
int16 _keyBufferTail;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue