aboutsummaryrefslogtreecommitdiff
path: root/engines/tucker
diff options
context:
space:
mode:
authorAdrian Frühwirth2018-03-02 17:26:12 +0100
committerAdrian Frühwirth2018-03-02 17:26:12 +0100
commitdce8a98a18f4880b5d88d3b1ff31c05a72d370c0 (patch)
tree95796ca2f22cb8787ca75d12629230050b52e195 /engines/tucker
parent487baf6f8ece601e5cb11354d74f2d536608417e (diff)
downloadscummvm-rg350-dce8a98a18f4880b5d88d3b1ff31c05a72d370c0.tar.gz
scummvm-rg350-dce8a98a18f4880b5d88d3b1ff31c05a72d370c0.tar.bz2
scummvm-rg350-dce8a98a18f4880b5d88d3b1ff31c05a72d370c0.zip
TUCKER: Add CursorStyle and CursorState enums
Diffstat (limited to 'engines/tucker')
-rw-r--r--engines/tucker/locations.cpp4
-rw-r--r--engines/tucker/resource.cpp8
-rw-r--r--engines/tucker/saveload.cpp4
-rw-r--r--engines/tucker/sequences.cpp4
-rw-r--r--engines/tucker/tucker.cpp66
-rw-r--r--engines/tucker/tucker.h50
6 files changed, 76 insertions, 60 deletions
diff --git a/engines/tucker/locations.cpp b/engines/tucker/locations.cpp
index 0c31b98792..fee989c904 100644
--- a/engines/tucker/locations.cpp
+++ b/engines/tucker/locations.cpp
@@ -3021,11 +3021,11 @@ void TuckerEngine::execData3PreUpdate_locationNum70() {
_updateLocation70StringLen = 0;
_forceRedrawPanelItems = true;
_panelState = 1;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
}
_forceRedrawPanelItems = true;
_panelState = 1;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
int pos = getPositionForLine(22, _infoBarBuf);
const int yPos = (_flagsTable[143] == 0) ? 90 : 72;
drawStringAlt(88, yPos, color, &_infoBarBuf[pos]);
diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index 82be9abafc..c2c84b9646 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -693,7 +693,7 @@ void TuckerEngine::loadData4() {
d->_standX = t.getNextInteger();
d->_standY = t.getNextInteger();
d->_textNum = t.getNextInteger();
- d->_cursorNum = t.getNextInteger();
+ d->_cursorStyle = (CursorStyle)t.getNextInteger();
d->_locationNum = t.getNextInteger();
if (d->_locationNum > 0) {
d->_toX = t.getNextInteger();
@@ -983,7 +983,7 @@ void TuckerEngine::loadActionsTable() {
}
_forceRedrawPanelItems = true;
_panelState = 1;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
_tableInstructionsPtr = _csDataBuf + t._pos + 1;
_csDataLoaded = true;
_csDataHandled = true;
@@ -1032,7 +1032,7 @@ void TuckerEngine::loadActionsTable() {
_nextAction = _nextTableToLoadTable[_nextTableToLoadIndex];
_csDataLoaded = false;
_conversationOptionsCount = 0;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
}
break;
}
@@ -1045,7 +1045,7 @@ void TuckerEngine::loadActionsTable() {
_csDataLoaded = false;
_forceRedrawPanelItems = true;
_panelState = 0;
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
_csDataHandled = false;
_actionVerbLocked = false;
_mouseClick = 1;
diff --git a/engines/tucker/saveload.cpp b/engines/tucker/saveload.cpp
index e48e4fd6e2..08a4dfad82 100644
--- a/engines/tucker/saveload.cpp
+++ b/engines/tucker/saveload.cpp
@@ -119,11 +119,11 @@ Common::Error TuckerEngine::saveGameState(int num, const Common::String &descrip
bool TuckerEngine::canLoadGameStateCurrently() {
- return !_player && _cursorType < 2;
+ return !_player && _cursorState != kCursorStateDisabledHidden;
}
bool TuckerEngine::canSaveGameStateCurrently() {
- return !_player && _cursorType < 2;
+ return !_player && _cursorState != kCursorStateDisabledHidden;
}
bool TuckerEngine::existsSavegame() {
diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp
index 0151c55eb1..184b70b916 100644
--- a/engines/tucker/sequences.cpp
+++ b/engines/tucker/sequences.cpp
@@ -414,11 +414,11 @@ void TuckerEngine::handleMapSequence() {
if (_nextLocationNum == 9 && _noPositionChangeAfterMap) {
_backgroundSpriteCurrentAnimation = 2;
_backgroundSpriteCurrentFrame = 0;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
} else if (_nextLocationNum == 66 && _noPositionChangeAfterMap) {
_backgroundSpriteCurrentAnimation = 1;
_backgroundSpriteCurrentFrame = 0;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
}
_noPositionChangeAfterMap = false;
_xPosCurrent = xPos;
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp
index 8e11e2279b..b182b34457 100644
--- a/engines/tucker/tucker.cpp
+++ b/engines/tucker/tucker.cpp
@@ -207,8 +207,8 @@ void TuckerEngine::resetVariables() {
_leftMouseButtonPressed = _rightMouseButtonPressed = false;
_lastKeyPressed = 0;
memset(_inputKeys, 0, sizeof(_inputKeys));
- _cursorNum = 0;
- _cursorType = 0;
+ _cursorStyle = kCursorNormal;
+ _cursorState = kCursorStateNormal;
_updateCursorFlag = false;
_panelNum = 1;
@@ -377,8 +377,8 @@ void TuckerEngine::mainLoop() {
loadBudSpr();
loadCursor();
- setCursorNum(_cursorNum);
- setCursorType(_cursorType);
+ setCursorStyle(_cursorStyle);
+ setCursorState(_cursorState);
_flagsTable[219] = 1;
_flagsTable[105] = 1;
@@ -422,7 +422,7 @@ void TuckerEngine::mainLoop() {
setupNewLocation();
}
updateCharPosition();
- if (_cursorType == 0) {
+ if (_cursorState == kCursorStateNormal) {
updateCursor();
} else if (_panelState == 2) {
handleMouseOnPanel();
@@ -713,16 +713,16 @@ void TuckerEngine::updateCursorPos(int x, int y) {
_mousePosY = y;
}
-void TuckerEngine::setCursorNum(int num) {
- _cursorNum = num;
+void TuckerEngine::setCursorStyle(CursorStyle style) {
+ _cursorStyle = style;
static const int cursorW = 16;
static const int cursorH = 16;
- CursorMan.replaceCursor(_cursorGfxBuf + _cursorNum * 256, cursorW, cursorH, 1, 1, 0);
+ CursorMan.replaceCursor(_cursorGfxBuf + _cursorStyle * 256, cursorW, cursorH, 1, 1, 0);
}
-void TuckerEngine::setCursorType(int type) {
- _cursorType = type;
- CursorMan.showMouse(_cursorType < 2);
+void TuckerEngine::setCursorState(CursorState state) {
+ _cursorState = state;
+ CursorMan.showMouse(_cursorState != kCursorStateDisabledHidden);
}
void TuckerEngine::showCursor(bool visible) {
@@ -792,7 +792,7 @@ void TuckerEngine::copyLocBitmap(const char *filename, int offset, bool isMask)
}
void TuckerEngine::updateMouseState() {
- if (_cursorType < 2) {
+ if (_cursorState != kCursorStateDisabledHidden) {
_leftMouseButtonPressed = (_mouseButtonsMask & 1) != 0;
if (_leftMouseButtonPressed) {
_mouseIdleCounter = 0;
@@ -809,9 +809,9 @@ void TuckerEngine::updateMouseState() {
_gameHintsStringNum = 0;
}
}
- if (_cursorType == 1) {
+ if (_cursorState == kCursorStateDialog) {
if (_panelState == 1) {
- setCursorNum(1);
+ setCursorStyle(kCursorTalk);
}
if (_mousePosY < 140) {
_mousePosY = 140;
@@ -820,7 +820,7 @@ void TuckerEngine::updateMouseState() {
}
void TuckerEngine::updateCharPositionHelper() {
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden );
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
_currentActionVerb = 0;
startSpeechSound(_speechSoundNum, _speechVolume);
@@ -1033,7 +1033,7 @@ void TuckerEngine::setBlackPalette() {
}
void TuckerEngine::updateCursor() {
- setCursorNum(0);
+ setCursorStyle(kCursorNormal);
if (_backgroundSpriteCurrentAnimation == -1 && !_panelLockedFlag && _selectedObject._locationObjectLocationNum > 0) {
_selectedObject._locationObjectLocationNum = 0;
}
@@ -1396,7 +1396,7 @@ void TuckerEngine::saveOrLoad() {
}
_forceRedrawPanelItems = true;
_panelState = 0;
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
return;
}
}
@@ -1425,7 +1425,7 @@ void TuckerEngine::handleMouseOnPanel() {
} else if (_mousePosX < 218) {
_forceRedrawPanelItems = true;
_panelState = 0;
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
} else {
_quitGame = true;
}
@@ -2119,7 +2119,7 @@ void TuckerEngine::updateCharacterAnimation() {
_characterAnimationIndex = -1;
_backgroundSpriteCurrentAnimation = -1;
if (_nextAction == 0) {
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
}
} else {
_backgroundSpriteCurrentFrame = _characterAnimationsTable[_characterAnimationIndex];
@@ -2143,7 +2143,7 @@ void TuckerEngine::updateCharacterAnimation() {
_backgroundSpriteCurrentFrame = 0;
_changeBackgroundSprite = false;
if (_nextAction == 0) {
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
}
}
}
@@ -2162,7 +2162,7 @@ void TuckerEngine::updateCharacterAnimation() {
_backgroundSpriteCurrentAnimation = -1;
_backgroundSpriteCurrentFrame = 0;
if (_nextAction == 0 && _panelState == 0) {
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
}
}
}
@@ -2181,7 +2181,7 @@ void TuckerEngine::updateCharacterAnimation() {
_actionPosY = _yPosCurrent - 64;
_actionTextColor = 1;
_actionCharacterNum = 99;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
}
}
@@ -2392,7 +2392,7 @@ void TuckerEngine::handleMap() {
}
}
if (!_panelLockedFlag && (_backgroundSpriteCurrentAnimation == -1 || _locationNum == 25) && _locationMaskType == 3) {
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
if (_locationMaskCounter == 1) {
_characterFacingDirection = 0;
_locationMaskType = 0;
@@ -2403,7 +2403,7 @@ void TuckerEngine::handleMap() {
if (_locationNum == 25 || _backgroundSpriteCurrentAnimation != 4) {
if (_locationMaskType == 0) {
_locationMaskType = 1;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
if (_selectedObject._locationObjectToWalkX2 > 800) {
_backgroundSpriteCurrentAnimation = _selectedObject._locationObjectToWalkX2 - 900;
if (_selectedObject._locationObjectToWalkY2 > 499) {
@@ -2431,7 +2431,7 @@ void TuckerEngine::handleMap() {
}
_locationMaskType = 2;
_panelState = 0;
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
if (_selectedObject._locationObjectLocationNum == 99) {
_noPositionChangeAfterMap = true;
handleMapSequence();
@@ -3001,7 +3001,7 @@ void TuckerEngine::updateCharSpeechSound(bool displayText) {
}
}
if (_charSpeechSoundCounter == 0 && !_csDataHandled) {
- setCursorType(0);
+ setCursorState(kCursorStateNormal);
} else if (displayText) {
drawSpeechText(_actionPosX, _actionPosY, _characterSpeechDataPtr, _speechSoundNum, _actionTextColor);
}
@@ -3364,7 +3364,7 @@ int TuckerEngine::executeTableInstruction() {
_nextTableToLoadTable[i] = readTableInstructionParam(3);
}
_nextTableToLoadIndex = -1;
- setCursorType(1);
+ setCursorState(kCursorStateDialog);
return 1;
case kCode_opf:
_conversationOptionsCount = 0;
@@ -3384,7 +3384,7 @@ int TuckerEngine::executeTableInstruction() {
}
}
_nextTableToLoadIndex = -1;
- setCursorType(1);
+ setCursorState(kCursorStateDialog);
return 1;
case kCode_ofg:
i = readTableInstructionParam(3);
@@ -3512,7 +3512,7 @@ int TuckerEngine::getObjectUnderCursor() {
}
_selectedObjectType = 0;
_selectedCharacterNum = i;
- setCursorNum(_locationObjectsTable[i]._cursorNum);
+ setCursorStyle(_locationObjectsTable[i]._cursorStyle);
return i;
}
return -1;
@@ -3669,7 +3669,7 @@ void TuckerEngine::handleMouseClickOnInventoryObject() {
_actionVerbLocked = false;
_forceRedrawPanelItems = true;
_panelState = 2;
- setCursorType(1);
+ setCursorState(kCursorStateDialog);
}
break;
case 1:
@@ -3681,7 +3681,7 @@ void TuckerEngine::handleMouseClickOnInventoryObject() {
_actionPosY = _yPosCurrent - 64;
_actionTextColor = 1;
_actionCharacterNum = 99;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
_currentActionVerb = 0;
_speechSoundNum = 2235;
@@ -3794,7 +3794,7 @@ void TuckerEngine::setActionForInventoryObject() {
_actionPosY = _yPosCurrent - 64;
_actionTextColor = 1;
_actionCharacterNum = 99;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
_actionVerbLocked = false;
_actionRequiresTwoObjects = false;
@@ -3860,7 +3860,7 @@ void TuckerEngine::playSpeechForAction(int i) {
_actionPosY = _yPosCurrent - 64;
_actionTextColor = 1;
_actionCharacterNum = 99;
- setCursorType(2);
+ setCursorState(kCursorStateDisabledHidden);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
}
}
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index d458d80835..a0d1b7c480 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -52,6 +52,34 @@ class RewindableAudioStream;
*/
namespace Tucker {
+enum CursorStyle {
+ kCursorNormal = 0,
+ kCursorTalk = 1,
+ kCursorArrowRight = 2,
+ kCursorArrowUp = 3,
+ kCursorArrowLeft = 4,
+ kCursorArrowDown = 5,
+ kCursorMap = 6
+};
+
+enum CursorState {
+ kCursorStateNormal = 0,
+ kCursorStateDialog = 1,
+ kCursorStateDisabledHidden = 2
+};
+
+enum Verb {
+ kVerbWalk = 0,
+ kVerbLook = 1,
+ kVerbTalk = 2,
+ kVerbOpen = 3,
+ kVerbClose = 4,
+ kVerbGive = 5,
+ kVerbTake = 6,
+ kVerbMove = 7,
+ kVerbUse = 8
+};
+
struct Action {
int _key;
int _testFlag1Num;
@@ -157,7 +185,7 @@ struct LocationObject {
int _toWalkY2;
int _standX;
int _standY;
- int _cursorNum;
+ CursorStyle _cursorStyle;
};
struct LocationSound {
@@ -194,18 +222,6 @@ enum {
kLastSaveSlot = 99
};
-enum Verb {
- kVerbWalk = 0,
- kVerbLook = 1,
- kVerbTalk = 2,
- kVerbOpen = 3,
- kVerbClose = 4,
- kVerbGive = 5,
- kVerbTake = 6,
- kVerbMove = 7,
- kVerbUse = 8
-};
-
enum InputKey {
kInputKeyPause = 0,
kInputKeyEscape,
@@ -299,8 +315,8 @@ protected:
void waitForTimer(int ticksCount);
void parseEvents();
void updateCursorPos(int x, int y);
- void setCursorNum(int num);
- void setCursorType(int type);
+ void setCursorStyle(CursorStyle num);
+ void setCursorState(CursorState state);
void showCursor(bool visible);
void setupNewLocation();
void copyLocBitmap(const char *filename, int offset, bool isMask);
@@ -688,8 +704,8 @@ protected:
bool _mouseWheelDown;
int _lastKeyPressed;
bool _inputKeys[kInputKeyCount];
- int _cursorNum;
- int _cursorType;
+ CursorStyle _cursorStyle;
+ CursorState _cursorState;
bool _updateCursorFlag;
int _panelNum;