aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/verbs.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-03-02 01:17:41 +0000
committerTravis Howell2006-03-02 01:17:41 +0000
commitfd8f11f7a452ae18d5e00f58430cc33bc5a48fed (patch)
tree13d05dde5e4865760831bf24b7c067bfbf13a3e3 /engines/scumm/verbs.cpp
parentc01ef102aff7661528b1a68e6e024bf7d69211d6 (diff)
downloadscummvm-rg350-fd8f11f7a452ae18d5e00f58430cc33bc5a48fed.tar.gz
scummvm-rg350-fd8f11f7a452ae18d5e00f58430cc33bc5a48fed.tar.bz2
scummvm-rg350-fd8f11f7a452ae18d5e00f58430cc33bc5a48fed.zip
Improve input in C64 maniac
svn-id: r21000
Diffstat (limited to 'engines/scumm/verbs.cpp')
-rw-r--r--engines/scumm/verbs.cpp74
1 files changed, 45 insertions, 29 deletions
diff --git a/engines/scumm/verbs.cpp b/engines/scumm/verbs.cpp
index 9164398558..3740ccbd50 100644
--- a/engines/scumm/verbs.cpp
+++ b/engines/scumm/verbs.cpp
@@ -306,6 +306,11 @@ void ScummEngine_v2::checkV2Inventory(int x, int y) {
object = findInventory(_scummVars[VAR_EGO], object + 1 + _inventoryOffset);
+ if (_game.platform == Common::kPlatformC64 && _game.id == GID_MANIAC) {
+ // TODO
+ return;
+ }
+
if (object > 0) {
runInputScript(3, object, 0);
}
@@ -500,38 +505,49 @@ void ScummEngine_c64::checkExecVerbs() {
if (_userPut <= 0 || _mouseAndKeyboardStat == 0)
return;
- if (zone->number == kVerbVirtScreen && _mouse.y <= zone->topline + 8) {
+ if (_mouseAndKeyboardStat < MBS_MAX_KEY) {
+ /* Check keypresses */
// TODO
- } else if (_game.version <= 2 && zone->number == kVerbVirtScreen && _mouse.y > zone->topline + 32) {
- // Click into V2 inventory
- checkV2Inventory(_mouse.x, _mouse.y);
- } else {
- int over = findVerbAtPos(_mouse.x, _mouse.y);
- if (over) {
- _currentAction = _verbs[over].verbid;
- return;
- }
-
- // HACK: Reset value
- VAR(VAR_EGO) = 3;
-
- int object = findObject(_mouse.x, _mouse.y);
- if (object) {
- _activeObject = object;
- if (_currentMode == 3) {
- int x, y, dir;
- a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
- getObjectXYPos(object, x, y, dir);
- a->startWalkActor(x, y, dir);
+ } else if (_mouseAndKeyboardStat & MBS_MOUSE_MASK) {
+ if (zone->number == kVerbVirtScreen && _mouse.y <= zone->topline + 8) {
+ // TODO
+ } else if (zone->number == kVerbVirtScreen && _mouse.y > zone->topline + 32) {
+ // Click into V2 inventory
+ checkV2Inventory(_mouse.x, _mouse.y);
+ } else {
+ int over = findVerbAtPos(_mouse.x, _mouse.y);
+ if (over) {
+ _activeVerb = _verbs[over].verbid;
+ return;
}
- int tmp = (_currentMode == 3) ? _currentAction : 15;
- runObjectScript(object, tmp, false, false, NULL);
- } else {
- _activeObject = 0;
- if (zone->number == kMainVirtScreen) {
- a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
- a->startWalkActor(_mouse.x, _mouse.y, -1);
+ // HACK: Reset value
+ VAR(VAR_EGO) = 3;
+
+ int object = findObject(_virtualMouse.x, _virtualMouse.y);
+ if (object) {
+ _activeObject = object;
+ if (_currentMode == 3 && _activeVerb == 13) {
+ int x, y, dir;
+ a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
+ getObjectXYPos(object, x, y, dir);
+ a->startWalkActor(x, y, dir);
+ }
+
+ int tmp = (_currentMode == 3) ? _activeVerb : 15;
+ if (getVerbEntrypoint(object, tmp) != 0) {
+ runObjectScript(object, tmp, false, false, NULL);
+ } else if (_activeVerb != 13 && _activeVerb != 15) {
+ VAR(9) = _activeVerb;
+ runScript(3, 0, 0, 0);
+ }
+ } else {
+ _activeObject = 0;
+ _activeVerb = 13;
+ if (zone->number == kMainVirtScreen) {
+ a = derefActor(VAR(VAR_EGO), "checkExecVerbs");
+ a->startWalkActor(_virtualMouse.x, _virtualMouse.y, -1);
+ }
}
}
}