diff options
Diffstat (limited to 'engines/titanic/messages')
-rw-r--r-- | engines/titanic/messages/messages.cpp | 21 | ||||
-rw-r--r-- | engines/titanic/messages/messages.h | 26 |
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"); |