#pragma once

#include <Text.h>
#include <Array.h>
#include <Writer.h>

class ChatObserver : public virtual Framework::ReferenceCounter
{
private:
    int entityId;
    Framework::RCArray<Framework::Text> channel;
    Framework::RCArray<Framework::Text> ignoredPlayers;
	
public:
    ChatObserver(int entityId);

    void addChannel(Framework::Text channel);
    void removeChannel(Framework::Text channel);
    bool isSubscribedTo(Framework::Text channel);
    void addIgnoredPlayer(Framework::Text playerName);
    void removeIgnoredPlayer(Framework::Text playerName);
    int getEntityId() const;
    void save() const;
    void writeTo(Framework::StreamWriter* zWriter) const;
    bool isValid() const;
    Framework::Text getPlayerName() const;
};