diff options
author | Alyssa Milburn | 2011-12-01 23:59:15 +0100 |
---|---|---|
committer | Alyssa Milburn | 2011-12-01 23:59:15 +0100 |
commit | 446822369b671c96185cd721c972537d31aebf6c (patch) | |
tree | 7cd848f4b37b42c9728e08480ce0c34fc742409d /engines/mohawk/livingbooks_code.cpp | |
parent | 43d6d49e2edcb85ee4dbcdfb93b396c7dcfbbffa (diff) | |
download | scummvm-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.cpp | 36 |
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> ¶ms) { _stack.push(rect.right); } +void LBCode::cmdMove(const Common::Array<LBValue> ¶ms) { + 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> ¶ms) { warning("ignoring setDragParams"); } @@ -1224,7 +1242,21 @@ void LBCode::itemIsPlaying(const Common::Array<LBValue> ¶ms) { } void LBCode::itemMoveTo(const Common::Array<LBValue> ¶ms) { - 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> ¶ms) { |