aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/livingbooks_code.cpp
diff options
context:
space:
mode:
authorAlyssa Milburn2011-12-01 23:59:15 +0100
committerAlyssa Milburn2011-12-01 23:59:15 +0100
commit446822369b671c96185cd721c972537d31aebf6c (patch)
tree7cd848f4b37b42c9728e08480ce0c34fc742409d /engines/mohawk/livingbooks_code.cpp
parent43d6d49e2edcb85ee4dbcdfb93b396c7dcfbbffa (diff)
downloadscummvm-rg350-446822369b671c96185cd721c972537d31aebf6c.tar.gz
scummvm-rg350-446822369b671c96185cd721c972537d31aebf6c.tar.bz2
scummvm-rg350-446822369b671c96185cd721c972537d31aebf6c.zip
MOHAWK: Implement LB move/moveTo.
Diffstat (limited to 'engines/mohawk/livingbooks_code.cpp')
-rw-r--r--engines/mohawk/livingbooks_code.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/engines/mohawk/livingbooks_code.cpp b/engines/mohawk/livingbooks_code.cpp
index d0feffde35..60ace17205 100644
--- a/engines/mohawk/livingbooks_code.cpp
+++ b/engines/mohawk/livingbooks_code.cpp
@@ -767,7 +767,7 @@ CodeCommandInfo generalCommandInfo[NUM_GENERAL_COMMANDS] = {
{ "xpos", 0 },
{ "ypos", 0 },
{ "playFrom", 0 },
- { "move", 0 },
+ { "move", &LBCode::cmdMove },
{ 0, 0 },
{ 0, 0 },
{ "setDragParams", &LBCode::cmdSetDragParams },
@@ -1053,6 +1053,24 @@ void LBCode::cmdRight(const Common::Array<LBValue> &params) {
_stack.push(rect.right);
}
+void LBCode::cmdMove(const Common::Array<LBValue> &params) {
+ if (params.size() != 1 && params.size() != 2)
+ error("incorrect number of parameters (%d) to move", params.size());
+
+ LBItem *target = _currSource;
+ Common::Point pt;
+ if (params.size() == 1) {
+ pt = params[0].toPoint();
+ } else {
+ target = resolveItem(params[0]);
+ if (!target)
+ error("attempted move on invalid item (%s)", params[0].toString().c_str());
+ pt = params[1].toPoint();
+ }
+
+ target->moveBy(pt);
+}
+
void LBCode::cmdSetDragParams(const Common::Array<LBValue> &params) {
warning("ignoring setDragParams");
}
@@ -1224,7 +1242,21 @@ void LBCode::itemIsPlaying(const Common::Array<LBValue> &params) {
}
void LBCode::itemMoveTo(const Common::Array<LBValue> &params) {
- warning("ignoring moveTo");
+ if (params.size() != 1 && params.size() != 2)
+ error("incorrect number of parameters (%d) to moveTo", params.size());
+
+ LBItem *target = _currSource;
+ Common::Point pt;
+ if (params.size() == 1) {
+ pt = params[0].toPoint();
+ } else {
+ target = resolveItem(params[0]);
+ if (!target)
+ error("attempted moveTo on invalid item (%s)", params[0].toString().c_str());
+ pt = params[1].toPoint();
+ }
+
+ target->moveTo(pt);
}
void LBCode::itemSeek(const Common::Array<LBValue> &params) {