aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/messages
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/messages')
-rw-r--r--engines/titanic/messages/messages.cpp21
-rw-r--r--engines/titanic/messages/messages.h26
2 files changed, 47 insertions, 0 deletions
diff --git a/engines/titanic/messages/messages.cpp b/engines/titanic/messages/messages.cpp
index 331d580dee..83c09688c4 100644
--- a/engines/titanic/messages/messages.cpp
+++ b/engines/titanic/messages/messages.cpp
@@ -177,4 +177,25 @@ CShowTextMsg::CShowTextMsg(StringId stringId) : CMessage() {
_message = g_vm->_strings[stringId];
}
+/*------------------------------------------------------------------------*/
+
+Movement CMovementMsg::getMovement(Common::KeyCode keycode) {
+ switch (keycode) {
+ case Common::KEYCODE_LEFT:
+ case Common::KEYCODE_KP4:
+ return TURN_LEFT;
+ case Common::KEYCODE_RIGHT:
+ case Common::KEYCODE_KP6:
+ return TURN_RIGHT;
+ case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
+ return MOVE_FORWARDS;
+ case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
+ return MOVE_BACKWARDS;
+ default:
+ return MOVE_NONE;
+ }
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h
index 8f8c785e43..b5c8dd4e21 100644
--- a/engines/titanic/messages/messages.h
+++ b/engines/titanic/messages/messages.h
@@ -222,6 +222,32 @@ enum MissiveOMatAction {
MESSAGE_STARTUP = 9
};
+enum Movement {
+ MOVE_NONE = 0, MOVE_FORWARDS, MOVE_BACKWARDS, TURN_LEFT, TURN_RIGHT
+};
+
+
+class CMovementMsg : public CMessage {
+public:
+ Movement _movement;
+public:
+ CLASSDEF;
+ CMovementMsg() : _movement(MOVE_NONE) {}
+ CMovementMsg(Movement move) : _movement(move) {}
+ CMovementMsg(Common::KeyCode key) :
+ _movement(getMovement(key)) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return supports(item, _type);
+ }
+
+ /**
+ * Returns the movement associated with a given key, if any
+ */
+ static Movement getMovement(Common::KeyCode keycode);
+};
+
+
MESSAGE1(CActMsg, CString, action, "");
MESSAGE1(CActivationmsg, CString, value, "");
MESSAGE1(CAddHeadPieceMsg, CString, value, "NULL");