diff options
Diffstat (limited to 'engines/neverhood/entity.h')
-rw-r--r-- | engines/neverhood/entity.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/engines/neverhood/entity.h b/engines/neverhood/entity.h index 18b9cba793..317672c7fe 100644 --- a/engines/neverhood/entity.h +++ b/engines/neverhood/entity.h @@ -28,14 +28,18 @@ namespace Neverhood { +class Entity; + struct MessageParam { union { uint32 _integer; NPoint _point; + Entity *_entity; // TODO: Other types... }; MessageParam(uint32 value) { _integer = value; } MessageParam(NPoint value) { _point = value; } + MessageParam(Entity *entity) { _entity = entity; } // TODO: Constructors for the param types... }; @@ -61,13 +65,17 @@ public: uint32 sendMessage(int messageNum, const MessageParam ¶m, Entity *sender) { return _messageHandlerCb ? (this->*_messageHandlerCb)(messageNum, param, sender) : 0; } - // Overloaded for various message parameter types + // NOTE: These were overloaded before for the various message parameter types + // it caused some problems so each type gets its own sendMessage variant now uint32 sendMessage(int messageNum, uint32 param, Entity *sender) { return sendMessage(messageNum, MessageParam(param), sender); } - uint32 sendMessage(int messageNum, NPoint param, Entity *sender) { + uint32 sendPointMessage(int messageNum, NPoint param, Entity *sender) { return sendMessage(messageNum, MessageParam(param), sender); } + uint32 sendEntityMessage(int messageNum, Entity *param, Entity *sender) { + return sendMessage(messageNum, MessageParam((Entity*)param), sender); + } int getPriority() const { return _priority; } protected: void (Entity::*_updateHandlerCb)(); |