aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_areas.cpp
diff options
context:
space:
mode:
authorBastien Bouclet2012-12-15 11:49:41 +0100
committerBastien Bouclet2012-12-16 06:54:13 +0100
commit07ee25c87df1aa7599664ec97ea5fb277b0c4f89 (patch)
tree345e4437d5979635ec5dbec8d6d2730cd65a18fd /engines/mohawk/myst_areas.cpp
parent0358a44738f1f1567156dc8e90025dd89414605f (diff)
downloadscummvm-rg350-07ee25c87df1aa7599664ec97ea5fb277b0c4f89.tar.gz
scummvm-rg350-07ee25c87df1aa7599664ec97ea5fb277b0c4f89.tar.bz2
scummvm-rg350-07ee25c87df1aa7599664ec97ea5fb277b0c4f89.zip
MOHAWK: Implement most of Myst's transition system
Diffstat (limited to 'engines/mohawk/myst_areas.cpp')
-rw-r--r--engines/mohawk/myst_areas.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/engines/mohawk/myst_areas.cpp b/engines/mohawk/myst_areas.cpp
index a1f965a25f..12a2c7f44c 100644
--- a/engines/mohawk/myst_areas.cpp
+++ b/engines/mohawk/myst_areas.cpp
@@ -70,10 +70,30 @@ MystResource::~MystResource() {
}
void MystResource::handleMouseUp() {
- if (_dest != 0)
- _vm->changeToCard(_dest, true);
- else
+ if (_dest == 0) {
warning("Movement type resource with null destination at position (%d, %d), (%d, %d)", _rect.left, _rect.top, _rect.right, _rect.bottom);
+ return;
+ }
+
+ uint16 opcode;
+
+ switch (type) {
+ case kMystForwardArea:
+ opcode = 6;
+ break;
+ case kMystLeftArea:
+ opcode = 8;
+ break;
+ case kMystRightArea:
+ opcode = 7;
+ break;
+ default:
+ opcode = 48;
+ break;
+ }
+
+ _vm->_scriptParser->setInvokingResource(this);
+ _vm->_scriptParser->runOpcode(opcode, 0);
}
bool MystResource::canBecomeActive() {