#pragma once #include "../Engine_Profiler/Profiler.h" #include #include #include #include #include #include #include #include enum class MessageState; struct MessageEvent; class MessageObserver; // Message Handlers class MessageHandler { public: MessageHandler(); ~MessageHandler(); void loadMessagesFromFile(std::string filePath); void addMessageObserver(MessageObserver* message); void removeMessageObserver(MessageObserver* message); void processMessages(); void printKeyMap(); Profiler loadingKeys; protected: std::unordered_map keyboardMessageMap; std::unordered_map keyboardControllMap; std::unordered_map keyboardState; std::unordered_map mouseMessageMap; std::unordered_map mouseControllMap; std::unordered_map mouseState; std::forward_list messageList; static MessageState advanceMessageState(MessageState current, bool isPressed); void sendMessage(MessageEvent message); };