diff options
Diffstat (limited to 'include/MessageBoard.hpp')
-rw-r--r-- | include/MessageBoard.hpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/include/MessageBoard.hpp b/include/MessageBoard.hpp index a4dc5a6..a6867d2 100644 --- a/include/MessageBoard.hpp +++ b/include/MessageBoard.hpp @@ -6,7 +6,9 @@ #include <SFML/Graphics/RenderTexture.hpp> #include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Window/Event.hpp> +#include <odhtdb/Hash.hpp> #include <stdexcept> +#include <mutex> namespace dchat { @@ -16,25 +18,23 @@ namespace dchat { friend class Channel; public: - MessageBoard(const sf::Vector2u &size); + MessageBoard(Channel *channel); ~MessageBoard(); void processEvent(const sf::Event &event); void draw(sf::RenderWindow &window, Cache &cache); private: void updateStaticContentTexture(const sf::Vector2u &newSize); - void addMessage(Message *message); + void addMessage(Message *message, const odhtdb::Hash &id); + void deleteMessage(const odhtdb::Hash &id); void drawDefault(sf::RenderWindow &window, Cache &cache); void drawSimple(sf::RenderWindow &window, Cache &cache); private: - sf::RenderTexture staticContentTexture; + Channel *channel; bool dirty; - bool selectingText; - bool leftMouseButtonPressed; - sf::Vector2f mousePos; - sf::Vector2f selectingTextStart; std::vector<Message*> messages; + odhtdb::MapHash<Message*> messageIdMap; double scroll; double scrollSpeed; sf::Clock frameTimer; @@ -43,5 +43,6 @@ namespace dchat sf::Vector2f backgroundSizeWithoutPadding; sf::Vector2f backgroundSize; sf::Vector2f backgroundPos; + std::mutex messageProcessMutex; }; } |