#pragma once #include "MessageHandler.h" #include // Message state needed for Key binidng, controlling the character - User Interface enum class MessageState { PRESSED_STATE, DOWN_STATE, RELEASED_STATE, UP_STATE }; // Message Event, stores data about the message being passed struct MessageEvent { int messageType; std::string messageName; MessageState messageState; sf::Vector2i messagePosition; }; // Message Observer class MessageObserver { public: explicit MessageObserver(MessageHandler& messageHandler) : messageHandler_(&messageHandler) { messageHandler_->addMessageObserver(this); }; virtual ~MessageObserver() { messageHandler_->removeMessageObserver(this); }; virtual void onNotify(MessageEvent message) = 0; protected: MessageHandler* messageHandler_; }; // DJB Hash function - Hash string at compile time //http://www.cplusplus.com/forum/beginner/138012/ constexpr unsigned int returnStringFromInt(const char* str, int h = 0) { return !str[h] ? 5381 : (returnStringFromInt(str, h + 1) * 33) ^ str[h]; }