diff options
Diffstat (limited to 'engines/titanic/messages')
-rw-r--r-- | engines/titanic/messages/bilge_dispensor_event.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/messages/bilge_dispensor_event.h | 2 | ||||
-rw-r--r-- | engines/titanic/messages/messages.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/messages/messages.h | 81 | ||||
-rw-r--r-- | engines/titanic/messages/mouse_messages.h | 44 |
5 files changed, 60 insertions, 73 deletions
diff --git a/engines/titanic/messages/bilge_dispensor_event.cpp b/engines/titanic/messages/bilge_dispensor_event.cpp index c20fe10992..e17494c5e2 100644 --- a/engines/titanic/messages/bilge_dispensor_event.cpp +++ b/engines/titanic/messages/bilge_dispensor_event.cpp @@ -34,7 +34,7 @@ void CBilgeDispensorEvent::load(SimpleFile *file) { CAutoSoundEvent::load(file); } -bool CBilgeDispensorEvent::handleEvent(CEnterRoomMsg &msg) { +bool CBilgeDispensorEvent::handleMessage(CEnterRoomMsg &msg) { _value1 = 0; return true; } diff --git a/engines/titanic/messages/bilge_dispensor_event.h b/engines/titanic/messages/bilge_dispensor_event.h index 9f91b61ef9..de8705f604 100644 --- a/engines/titanic/messages/bilge_dispensor_event.h +++ b/engines/titanic/messages/bilge_dispensor_event.h @@ -30,7 +30,7 @@ namespace Titanic { class CBilgeDispensorEvent : public CAutoSoundEvent { protected: - virtual bool handleEvent(CEnterRoomMsg &msg); + virtual bool handleMessage(CEnterRoomMsg &msg); public: CLASSDEF diff --git a/engines/titanic/messages/messages.cpp b/engines/titanic/messages/messages.cpp index 9202305353..28b8856578 100644 --- a/engines/titanic/messages/messages.cpp +++ b/engines/titanic/messages/messages.cpp @@ -39,7 +39,7 @@ void CMessage::load(SimpleFile *file) { CSaveableObject::load(file); } -bool CMessage::execute(CTreeItem *target, const ClassDef *classDef, int flags) const { +bool CMessage::execute(CTreeItem *target, const ClassDef *classDef, int flags) { // If no target was specified, then there's nothing to do if (!target) return false; @@ -51,7 +51,7 @@ bool CMessage::execute(CTreeItem *target, const ClassDef *classDef, int flags) c if (flags & MSGFLAG_SCAN) nextItem = item->scan(target); - if (!(flags & MSGFLAG_CLASS_DEF) || item->isInstanceOf(classDef)) { + if (!classDef || item->isInstanceOf(classDef)) { bool handled = perform(item); if (handled) { diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h index ccea453a26..c945ad7736 100644 --- a/engines/titanic/messages/messages.h +++ b/engines/titanic/messages/messages.h @@ -35,7 +35,7 @@ enum MessageFlag { }; #define MSGTARGET(NAME) class NAME; class NAME##Target { public: \ - virtual bool handleEvent(NAME &msg) = 0; } + virtual bool handleMessage(NAME &msg) = 0; } class CGameObject; class CRoomItem; @@ -47,10 +47,14 @@ public: CLASSDEF CMessage(); + /** + * Executes the message, passing it on to the designated target, + * and optionally it's children + */ bool execute(CTreeItem *target, const ClassDef *classDef = nullptr, - int flags = MSGFLAG_SCAN | MSGFLAG_BREAK_IF_HANDLED) const; + int flags = MSGFLAG_SCAN | MSGFLAG_BREAK_IF_HANDLED); - virtual bool perform(CTreeItem *treeItem) const { return false; } + virtual bool perform(CTreeItem *treeItem) { return false; } /** * Save the data for the class to file @@ -80,8 +84,6 @@ public: MSGTARGET(CEditControlMsg); class CEditControlMsg : public CMessage { -protected: - virtual bool handleMessage(const CEditControlMsg &msg) { return false; } public: int _field4; int _field8; @@ -95,19 +97,17 @@ public: _field1C(0), _field20(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CEditControlMsg *>(item) != nullptr; + return dynamic_cast<const CEditControlMsgTarget *>(item) != nullptr; } - virtual bool perform(CTreeItem *treeItem) const { - CEditControlMsg *dest = dynamic_cast<CEditControlMsg *>(treeItem); + virtual bool perform(CTreeItem *treeItem) { + CEditControlMsgTarget *dest = dynamic_cast<CEditControlMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; MSGTARGET(CLightsMsg); class CLightsMsg : public CMessage { -protected: - virtual bool handleMessage(const CLightsMsg &msg) { return false; } public: int _field4; int _field8; @@ -119,19 +119,16 @@ public: _fieldC(0), _field10(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CLightsMsg *>(item) != nullptr; + return dynamic_cast<const CLightsMsgTarget *>(item) != nullptr; } - - virtual bool perform(CTreeItem *treeItem) const { - CLightsMsg *dest = dynamic_cast<CLightsMsg *>(treeItem); + virtual bool perform(CTreeItem *treeItem) { + CLightsMsgTarget *dest = dynamic_cast<CLightsMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; MSGTARGET(CIsHookedOnMsg); class CIsHookedOnMsg : public CMessage { -protected: - virtual bool handleMessage(const CIsHookedOnMsg &msg) { return false; } public: int _field4; int _field8; @@ -145,19 +142,16 @@ public: _field18(0), _field1C(0), _field20(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CIsHookedOnMsg *>(item) != nullptr; + return dynamic_cast<const CIsHookedOnMsgTarget *>(item) != nullptr; } - - virtual bool perform(CTreeItem *treeItem) const { - CIsHookedOnMsg *dest = dynamic_cast<CIsHookedOnMsg *>(treeItem); + virtual bool perform(CTreeItem *treeItem) { + CIsHookedOnMsgTarget *dest = dynamic_cast<CIsHookedOnMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; MSGTARGET(CSubAcceptCCarryMsg); class CSubAcceptCCarryMsg : public CMessage { -protected: - virtual bool handleMessage(const CSubAcceptCCarryMsg &msg) { return false; } public: CString _string1; int _value1, _value2, _value3; @@ -166,19 +160,16 @@ public: CSubAcceptCCarryMsg() : _value1(0), _value2(0), _value3(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CSubAcceptCCarryMsg *>(item) != nullptr; + return dynamic_cast<const CSubAcceptCCarryMsgTarget *>(item) != nullptr; } - - virtual bool perform(CTreeItem *treeItem) const { - CSubAcceptCCarryMsg *dest = dynamic_cast<CSubAcceptCCarryMsg *>(treeItem); + virtual bool perform(CTreeItem *treeItem) { + CSubAcceptCCarryMsgTarget *dest = dynamic_cast<CSubAcceptCCarryMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; MSGTARGET(CTransportMsg); class CTransportMsg : public CMessage { -protected: - virtual bool handleMessage(const CTransportMsg &msg) { return false; } public: CString _string; int _value1, _value2; @@ -187,11 +178,10 @@ public: CTransportMsg() : _value1(0), _value2(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CTransportMsg *>(item) != nullptr; + return dynamic_cast<const CTransportMsgTarget *>(item) != nullptr; } - - virtual bool perform(CTreeItem *treeItem) const { - CTransportMsg *dest = dynamic_cast<CTransportMsg *>(treeItem); + virtual bool perform(CTreeItem *treeItem) { + CTransportMsgTarget *dest = dynamic_cast<CTransportMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; @@ -201,10 +191,9 @@ public: public: NAME() : CMessage() {} \ CLASSDEF \ static bool isSupportedBy(const CTreeItem *item) { \ - return dynamic_cast<const NAME *>(item) != nullptr; } \ - virtual bool handleMessage(const NAME &msg) { return false; } \ - virtual bool perform(CTreeItem *treeItem) const { \ - NAME *dest = dynamic_cast<NAME *>(treeItem); \ + return dynamic_cast<const NAME##Target *>(item) != nullptr; } \ + virtual bool perform(CTreeItem *treeItem) { \ + NAME##Target *dest = dynamic_cast<NAME##Target *>(treeItem); \ return dest != nullptr && dest->handleMessage(*this); \ } } #define MESSAGE1(NAME, F1, N1, V1) MSGTARGET(NAME); \ @@ -214,10 +203,9 @@ public: NAME(F1 N1) : CMessage(), _##N1(N1) {} \ CLASSDEF \ static bool isSupportedBy(const CTreeItem *item) { \ - return dynamic_cast<const NAME *>(item) != nullptr; } \ - virtual bool handleMessage(const NAME &msg) { return false; } \ + return dynamic_cast<const NAME##Target *>(item) != nullptr; } \ virtual bool perform(CTreeItem *treeItem) { \ - NAME *dest = dynamic_cast<NAME *>(treeItem); \ + NAME##Target *dest = dynamic_cast<NAME##Target *>(treeItem); \ return dest != nullptr && dest->handleMessage(*this); \ } } #define MESSAGE2(NAME, F1, N1, V1, F2, N2, V2) MSGTARGET(NAME); \ @@ -227,10 +215,9 @@ public: NAME(F1 N1, F2 N2) : CMessage(), _##N1(N1), _##N2(N2) {} \ CLASSDEF \ static bool isSupportedBy(const CTreeItem *item) { \ - return dynamic_cast<const NAME *>(item) != nullptr; } \ - virtual bool handleMessage(const NAME &msg) { return false; } \ + return dynamic_cast<const NAME##Target *>(item) != nullptr; } \ virtual bool perform(CTreeItem *treeItem) { \ - NAME *dest = dynamic_cast<NAME *>(treeItem); \ + NAME##Target *dest = dynamic_cast<NAME##Target *>(treeItem); \ return dest != nullptr && dest->handleMessage(*this); \ } } #define MESSAGE3(NAME, F1, N1, V1, F2, N2, V2, F3, N3, V3) MSGTARGET(NAME); \ @@ -240,10 +227,9 @@ public: NAME(F1 N1, F2 N2, F3 N3) : CMessage(), _##N1(N1), _##N2(N2), _##N3(N3) {} \ CLASSDEF \ static bool isSupportedBy(const CTreeItem *item) { \ - return dynamic_cast<const NAME *>(item) != nullptr; } \ - virtual bool handleMessage(const NAME &msg) { return false; } \ + return dynamic_cast<const NAME##Target *>(item) != nullptr; } \ virtual bool perform(CTreeItem *treeItem) { \ - NAME *dest = dynamic_cast<NAME *>(treeItem); \ + NAME##Target *dest = dynamic_cast<NAME##Target *>(treeItem); \ return dest != nullptr && dest->handleMessage(*this); \ } } #define MESSAGE4(NAME, F1, N1, V1, F2, N2, V2, F3, N3, V3, F4, N4, V4) MSGTARGET(NAME); \ @@ -253,10 +239,9 @@ public: NAME(F1 N1, F2 N2, F3 N3, F4 N4) : CMessage(), _##N1(N1), _##N2(N2), _##N3(N3), _##N4(N4) {} \ CLASSDEF \ static bool isSupportedBy(const CTreeItem *item) { \ - return dynamic_cast<const NAME *>(item) != nullptr; } \ - virtual bool handleMessage(const NAME &msg) { return false; } \ + return dynamic_cast<const NAME##Target *>(item) != nullptr; } \ virtual bool perform(CTreeItem *treeItem) { \ - NAME *dest = dynamic_cast<NAME *>(treeItem); \ + NAME##Target *dest = dynamic_cast<NAME##Target *>(treeItem); \ return dest != nullptr && dest->handleMessage(*this); \ } } diff --git a/engines/titanic/messages/mouse_messages.h b/engines/titanic/messages/mouse_messages.h index 6e2a74a046..7fe7ef960f 100644 --- a/engines/titanic/messages/mouse_messages.h +++ b/engines/titanic/messages/mouse_messages.h @@ -30,6 +30,7 @@ namespace Titanic { enum MouseButton { MB_LEFT = 1, MB_MIDDLE = 2, MB_RIGHT = 4 }; +MSGTARGET(CMouseMsg); class CMouseMsg : public CMessage { public: int _buttons; @@ -39,6 +40,11 @@ public: static bool isSupportedBy(const CTreeItem *item) { return dynamic_cast<const CMouseMsg *>(item) != nullptr; } + virtual bool perform(CTreeItem *treeItem) { + CMouseMsgTarget *dest = dynamic_cast<CMouseMsgTarget *>(treeItem); + return dest != nullptr && dest->handleMessage(*this); + } + CMouseMsg() : _buttons(0) {} CMouseMsg(const Point &pt, int buttons) : _mousePos(pt), _buttons(buttons) {} @@ -52,15 +58,15 @@ public: CMouseMoveMsg(const Point &pt, int buttons) : CMouseMsg(pt, buttons) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseMoveMsg *>(item) != nullptr; + return dynamic_cast<const CMouseMoveMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseMoveMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseMoveMsg *dest = dynamic_cast<CMouseMoveMsg *>(treeItem); + CMouseMoveMsgTarget *dest = dynamic_cast<CMouseMoveMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; +MSGTARGET(CMouseButtonMsg); class CMouseButtonMsg : public CMouseMsg { public: int _field10; @@ -70,7 +76,7 @@ public: CMouseButtonMsg(const Point &pt, int buttons) : CMouseMsg(pt, buttons) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseButtonMsg *>(item) != nullptr; + return dynamic_cast<const CMouseButtonMsgTarget *>(item) != nullptr; } }; @@ -82,11 +88,10 @@ public: CMouseButtonDownMsg(const Point &pt, int buttons) : CMouseButtonMsg(pt, buttons) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseButtonDownMsg *>(item) != nullptr; + return dynamic_cast<const CMouseButtonDownMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseButtonDownMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseButtonDownMsg *dest = dynamic_cast<CMouseButtonDownMsg *>(treeItem); + CMouseButtonDownMsgTarget *dest = dynamic_cast<CMouseButtonDownMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; @@ -101,9 +106,8 @@ public: static bool isSupportedBy(const CTreeItem *item) { return dynamic_cast<const CMouseButtonUpMsg *>(item) != nullptr; } - virtual bool handleMessage(const CMouseButtonUpMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseButtonUpMsg *dest = dynamic_cast<CMouseButtonUpMsg *>(treeItem); + CMouseButtonUpMsgTarget *dest = dynamic_cast<CMouseButtonUpMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; @@ -116,15 +120,15 @@ public: CMouseDoubleClickMsg(const Point &pt, int buttons) : CMouseButtonMsg(pt, buttons) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseDoubleClickMsg *>(item) != nullptr; + return dynamic_cast<const CMouseDoubleClickMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseDoubleClickMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseDoubleClickMsg *dest = dynamic_cast<CMouseDoubleClickMsg *>(treeItem); + CMouseDoubleClickMsgTarget *dest = dynamic_cast<CMouseDoubleClickMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; +MSGTARGET(CMouseDragMsg); class CMouseDragMsg : public CMouseMsg { public: CLASSDEF @@ -136,6 +140,7 @@ public: } }; +MSGTARGET(CMouseDragMoveMsg); class CMouseDragMoveMsg : public CMouseDragMsg { public: CLASSDEF @@ -143,11 +148,10 @@ public: CMouseDragMoveMsg(const Point &pt) : CMouseDragMsg(pt) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseDragMoveMsg *>(item) != nullptr; + return dynamic_cast<const CMouseDragMoveMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseDragMoveMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseDragMoveMsg *dest = dynamic_cast<CMouseDragMoveMsg *>(treeItem); + CMouseDragMoveMsgTarget *dest = dynamic_cast<CMouseDragMoveMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; @@ -164,11 +168,10 @@ public: _dragItem(nullptr), _field14(0) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseDragStartMsg *>(item) != nullptr; + return dynamic_cast<const CMouseDragStartMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseDragStartMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseDragStartMsg *dest = dynamic_cast<CMouseDragStartMsg *>(treeItem); + CMouseDragStartMsgTarget *dest = dynamic_cast<CMouseDragStartMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; @@ -184,11 +187,10 @@ public: CMouseDragMsg(pt), _dragItem(dragItem) {} static bool isSupportedBy(const CTreeItem *item) { - return dynamic_cast<const CMouseDragEndMsg *>(item) != nullptr; + return dynamic_cast<const CMouseDragEndMsgTarget *>(item) != nullptr; } - virtual bool handleMessage(const CMouseDragEndMsg &msg) { return false; } virtual bool perform(CTreeItem *treeItem) { - CMouseDragEndMsg *dest = dynamic_cast<CMouseDragEndMsg *>(treeItem); + CMouseDragEndMsgTarget *dest = dynamic_cast<CMouseDragEndMsgTarget *>(treeItem); return dest != nullptr && dest->handleMessage(*this); } }; |