aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTobias Gunkel2012-01-07 20:06:26 +0100
committerTobias Gunkel2012-02-11 08:28:19 +0100
commit706b8cf1c531e15b980a64060a1080e17e854d98 (patch)
tree4a5a50cb9b7815a9f20345e81737e89cca7f3fa6 /engines
parentb01f601d7e8dc0b7885ff058c8596dc2ad6762f4 (diff)
downloadscummvm-rg350-706b8cf1c531e15b980a64060a1080e17e854d98.tar.gz
scummvm-rg350-706b8cf1c531e15b980a64060a1080e17e854d98.tar.bz2
scummvm-rg350-706b8cf1c531e15b980a64060a1080e17e854d98.zip
SCUMM: replace verb, prep and currentMode values with symbolic constants
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/script_v0.cpp14
-rw-r--r--engines/scumm/scumm.cpp2
-rw-r--r--engines/scumm/scumm_v0.h7
-rw-r--r--engines/scumm/verbs.cpp77
-rw-r--r--engines/scumm/verbs.h28
5 files changed, 72 insertions, 56 deletions
diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp
index 0f9fbc6e6f..31363ed140 100644
--- a/engines/scumm/script_v0.cpp
+++ b/engines/scumm/script_v0.cpp
@@ -422,8 +422,8 @@ void ScummEngine_v0::drawSentence() {
return;
// Current Verb
- if (_activeVerb == 0)
- _activeVerb = 13;
+ if (_activeVerb == kVerbNone)
+ _activeVerb = kVerbWalkTo;
if (getResourceAddress(rtVerb, _activeVerb)) {
_sentenceBuf = (char *)getResourceAddress(rtVerb, _activeVerb);
} else {
@@ -602,15 +602,15 @@ void ScummEngine_v0::o_cursorCommand() {
_currentMode = fetchScriptByte();
switch (_currentMode) {
- case 0:
+ case kModeCutscene:
state = 15;
break;
- case 1:
+ case kModeKeypad:
state = 31;
break;
- case 2:
+ case kModeNoNewKid:
break;
- case 3:
+ case kModeNormal:
state = 247;
break;
}
@@ -908,7 +908,7 @@ void ScummEngine_v0::o_setOwnerOf() {
}
void ScummEngine_v0::resetSentence(bool walking) {
- _activeVerb = 13;
+ _activeVerb = kVerbWalkTo;
// If the actor is walking, or the screen is a keypad (no sentence verbs/objects are drawn)
// Then reset all active objects (stops the radio crash, bug #3077966)
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 423ad79b00..8b2e2ef88e 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -716,7 +716,7 @@ ScummEngine_v0::ScummEngine_v0(OSystem *syst, const DetectorResult &dr)
_verbPickup = false;
_currentMode = 0;
- _activeVerb = 0;
+ _activeVerb = kVerbNone;
_activeObjectNr = 0;
_activeObject2Nr = 0;
_activeObjectType = kObjectTypeBG;
diff --git a/engines/scumm/scumm_v0.h b/engines/scumm/scumm_v0.h
index 460843cfc2..2c8c1c85c5 100644
--- a/engines/scumm/scumm_v0.h
+++ b/engines/scumm/scumm_v0.h
@@ -32,6 +32,13 @@ namespace Scumm {
*/
class ScummEngine_v0 : public ScummEngine_v2 {
protected:
+ enum CurrentMode {
+ kModeCutscene = 0, // cutscene active
+ kModeKeypad = 1, // kid selection / dial pad / save-load dialog
+ kModeNoNewKid = 2, // verb "new kid" disabled (e.g. when entering lab)
+ kModeNormal = 3, // normal playing mode
+ };
+
enum ObjectType {
kObjectTypeFG = 0, // foreground object
// - with owner/state, might (but has not to) be pickupable
diff --git a/engines/scumm/verbs.cpp b/engines/scumm/verbs.cpp
index 3d0abae0a3..03acdda1a8 100644
--- a/engines/scumm/verbs.cpp
+++ b/engines/scumm/verbs.cpp
@@ -37,25 +37,6 @@ enum {
kSentenceLine = 6
};
-enum VerbsV0 {
- kVerbNone = 0,
- kVerbOpen = 1,
- kVerbClose = 2,
- kVerbGive = 3,
- kVerbTurnOn = 4,
- kVerbTurnOff = 5,
- kVerbFix = 6,
- kVerbNewKid = 7,
- kVerbUnlock = 8,
- kVerbPush = 9,
- kVerbPull = 10,
- kVerbUse = 11,
- kVerbRead = 12,
- kVerbWalkTo = 13,
- kVerbPickUp = 14,
- kVerbWhatIs = 15
-};
-
struct VerbSettings {
int id;
int x_pos;
@@ -103,13 +84,13 @@ static const VerbSettings v0VerbTable_German[] = {
int ScummEngine_v0::verbPrepIdType(int verbid) {
switch (verbid) {
case kVerbUse: // depends on object1
- return 0xFF;
+ return kVerbPrepObject;
case kVerbGive:
- return 4;
+ return kVerbPrepTo;
case kVerbUnlock: case kVerbFix:
- return 2;
+ return kVerbPrepWith;
default:
- return 0;
+ return kVerbPrepNone;
}
}
@@ -192,7 +173,7 @@ void ScummEngine_v0::switchActor(int slot) {
return;
// verbs disabled? or just new kid button?
- if (_currentMode == 0 || _currentMode == 1 || _currentMode == 2)
+ if (_currentMode == kModeCutscene || _currentMode == kModeKeypad || _currentMode == kModeNoNewKid)
return;
VAR(VAR_EGO) = VAR(97 + slot);
@@ -785,7 +766,7 @@ bool ScummEngine_v0::verbMove(int object, bool invObject) {
int x, y, dir;
Actor *a = derefActor(VAR(VAR_EGO), "verbMove");
- if (_currentMode != 3 && _currentMode != 2)
+ if (_currentMode != kModeNormal && _currentMode != kModeNoNewKid)
return false;
getObjectXYPos(object, x, y, dir);
@@ -837,8 +818,8 @@ bool ScummEngine_v0::verbObtain(int obj) {
if (where != WIO_INVENTORY) {
prep = activeVerbPrep();
- if (prep == 1 || prep == 4) {
- if (_activeVerb != 13 && _activeVerb != 14) {
+ if (prep == kVerbPrepIn || prep == kVerbPrepTo) {
+ if (_activeVerb != kVerbWalkTo && _activeVerb != kVerbPickUp) {
_verbPickup = true;
didPickup = true;
}
@@ -857,8 +838,8 @@ bool ScummEngine_v0::verbObtain(int obj) {
if (verbMove(obj, false))
return true;
- if (didPickup && (prep == 1 || prep == 4))
- if (_activeVerb != 13 && _activeVerb != 14) {
+ if (didPickup && (prep == kVerbPrepIn || prep == kVerbPrepTo))
+ if (_activeVerb != kVerbWalkTo && _activeVerb != kVerbPickUp) {
// TODO(TOBIAS)
#if 0
if (whereIsObject(obj) == WIO_INVENTORY)
@@ -889,7 +870,7 @@ int ScummEngine_v0::activeVerbPrep() {
}
bool ScummEngine_v0::verbExec() {
- int entry = (_currentMode != 0 && _currentMode != 1) ? _activeVerb : 15;
+ int entry = (_currentMode != kModeCutscene && _currentMode != kModeKeypad) ? _activeVerb : kVerbWhatIs;
if (_activeObjectNr && getObjectIndex(OBJECT_V0(_activeObjectNr, _activeObjectType)) == -1) {
resetSentence(false);
@@ -897,7 +878,7 @@ bool ScummEngine_v0::verbExec() {
}
// Lets try walk to the object
- if (_activeObjectNr && !_activeObjectObtained && _currentMode != 0) {
+ if (_activeObjectNr && !_activeObjectObtained && _currentMode != kModeCutscene) {
if (verbObtain(OBJECT_V0(_activeObjectNr, _activeObjectType)))
return true;
@@ -905,7 +886,7 @@ bool ScummEngine_v0::verbExec() {
}
// Attempt to obtain/reach object2
- if (_activeObject2Nr && !_activeObject2Obtained && _currentMode != 0) {
+ if (_activeObject2Nr && !_activeObject2Obtained && _currentMode != kModeCutscene) {
if (verbObtain(OBJECT_V0(_activeObject2Nr, _activeObject2Type)))
return true;
@@ -913,7 +894,7 @@ bool ScummEngine_v0::verbExec() {
}
// Give-To
- if (_activeVerb == 3 && _activeObjectNr && _activeObject2Nr && _activeObject2Type == kObjectTypeActor) {
+ if (_activeVerb == kVerbGive && _activeObjectNr && _activeObject2Nr && _activeObject2Type == kObjectTypeActor) {
// FIXME: Actors need to turn and face each other
if (verbMoveToActor(_activeObject2Nr)) {
// Ignore verbs?
@@ -942,11 +923,11 @@ bool ScummEngine_v0::verbExec() {
}
// If we've finished walking (now near target), execute the action
- if (_activeObjectNr && activeVerbPrep() == 2) {
+ if (_activeObjectNr && activeVerbPrep() == kVerbPrepWith) {
runObject(OBJECT_V0(_activeObjectNr, _activeObjectType), entry);
_verbExecuting = false;
- if ((_currentMode == 3 || _currentMode == 2) && _activeVerb == 13)
+ if ((_currentMode == kModeNormal || _currentMode == kModeNoNewKid) && _activeVerb == kVerbWalkTo)
return false;
resetSentence(false);
@@ -954,12 +935,12 @@ bool ScummEngine_v0::verbExec() {
}
// We acted on an inventory item
- if (_activeVerb != 3) {
+ if (_activeVerb != kVerbGive) {
runObject(OBJECT_V0(_activeObjectNr/*2*/, _activeObjectType/*2*/), _activeVerb);
_verbExecuting = false;
- if (_currentMode == 3 && _activeVerb == 13) {
+ if (_currentMode == kModeNormal && _activeVerb == kVerbWalkTo) {
resetSentence(true);
return false;
}
@@ -974,7 +955,7 @@ bool ScummEngine_v0::verbExec() {
_verbExecuting = false;
- if (_activeVerb == 13) {
+ if (_activeVerb == kVerbWalkTo) {
resetSentence(true);
return false;
}
@@ -1058,10 +1039,8 @@ void ScummEngine_v0::checkExecVerbs() {
}
}
- // mode 1: kid selection, 3: normal
- if (_currentMode != 0) {
- if (_currentMode == 1) {
- // kid selection or dial pad
+ if (_currentMode != kModeCutscene) {
+ if (_currentMode == kModeKeypad) {
_activeVerb = kVerbPush;
}
@@ -1097,13 +1076,15 @@ void ScummEngine_v0::checkExecVerbs() {
if (!id) {
if (_activeVerb == kVerbWalkTo) {
_activeObjectNr = 0;
+ _activeObjectType = 0;
_activeObject2Nr = 0;
+ _activeObject2Type = 0;
}
} else {
//_activeVerbPrep:
// 0: no activeObject or activeObject but no prep
// > 0: activeObject + prep
- if (activeVerbPrep() == 0) {
+ if (activeVerbPrep() == kVerbPrepNone) {
if (id == _activeObjectNr && type == _activeObjectType) {
_verbExecuting = true;
} else {
@@ -1111,7 +1092,7 @@ void ScummEngine_v0::checkExecVerbs() {
_activeObjectType = type;
}
//sentenceLineChanged = true;
- if (_currentMode == 1)
+ if (_currentMode == kModeKeypad)
_verbExecuting = true;
} else {
if (id == _activeObject2Nr && type == _activeObject2Type)
@@ -1119,7 +1100,7 @@ void ScummEngine_v0::checkExecVerbs() {
if (!(id == _activeObjectNr && type == _activeObjectType)) {
_activeObject2Nr = id;
_activeObject2Type = type;
- if (_currentMode == 1)
+ if (_currentMode == kModeKeypad)
_verbExecuting = true;
}
}
@@ -1139,7 +1120,7 @@ void ScummEngine_v0::checkExecVerbs() {
if (_activeVerb == kVerbNewKid) {
// TODO
- if (_currentMode == 3) {
+ if (_currentMode == kModeNormal) {
// get kid
_activeVerb = kVerbWalkTo;
resetSentence(false);
@@ -1155,7 +1136,7 @@ void ScummEngine_v0::checkExecVerbs() {
/*
if (_activeVerbPrep == 0) {
int prep = activeVerbPrep();
- if (prep == 0)
+ if (prep == kVerbPrepNone)
; //exec();
else {
_activeVerbPrep = prep;
@@ -1200,7 +1181,7 @@ void ScummEngine_v0::checkExecVerbs() {
...
// Clicked on nothing, walk here?
- if (!over && !act && _activeVerb == 13 && !obj && _currentMode != 0) {
+ if (!over && !act && _activeVerb == kVerbWalkTo && !obj && _currentMode != kMode_0) {
// Clear all selected
resetSentence(false);
diff --git a/engines/scumm/verbs.h b/engines/scumm/verbs.h
index fb4dc969e2..fce260ea63 100644
--- a/engines/scumm/verbs.h
+++ b/engines/scumm/verbs.h
@@ -57,6 +57,34 @@ struct VerbSlot {
uint16 imgindex;
};
+enum VerbsV0 {
+ kVerbNone = 0,
+ kVerbOpen = 1,
+ kVerbClose = 2,
+ kVerbGive = 3,
+ kVerbTurnOn = 4,
+ kVerbTurnOff = 5,
+ kVerbFix = 6,
+ kVerbNewKid = 7,
+ kVerbUnlock = 8,
+ kVerbPush = 9,
+ kVerbPull = 10,
+ kVerbUse = 11,
+ kVerbRead = 12,
+ kVerbWalkTo = 13,
+ kVerbPickUp = 14,
+ kVerbWhatIs = 15
+};
+
+enum VerbPrepsV0 {
+ kVerbPrepNone = 0,
+ kVerbPrepIn = 1,
+ kVerbPrepWith = 2,
+ kVerbPrepOn = 3,
+ kVerbPrepTo = 4,
+ kVerbPrepObject = 0xFF, // prep depends on object (USE)
+};
+
} // End of namespace Scumm
#endif