#ifndef ChatLeiste_H #define ChatLeiste_H #include #include #include #include #include #include #include #include #include using namespace Framework; using namespace Network; class Chat : public virtual ReferenceCounter { protected: LRahmen* rahmen; TextFeld* verlauf; TextFeld* nachricht; TextFeld* name; Knopf* minimieren; Knopf* close; Punkt bildschirmGröße; GSL::GSLSoundV* msgSound; bool admin; double tickVal; bool sichtbar; int animation; int breite; int höhe; bool rend; public: // Konstruktor Chat(); // Destruktor ~Chat(); // nicht constant void setSichtbar(bool sichtbar); void entfernen(); void addNachricht(const char* txt); void setAdmin(); virtual void addSpieler(int accountId); virtual void removeSpieler(int accountId); virtual bool tick(double tickVal); virtual void doPublicMausEreignis(MausEreignis& me); virtual void doTastaturEreignis(TastaturEreignis& te); virtual void render(int x, Bild& zRObj); // constant TextFeld* getName() const; TextFeld* zName() const; virtual int getAccountId() const; virtual int getChatroomId() const; int getBreite() const; bool istSichtbar() const; }; class ChatFenster : public Chat { private: int accountId; public: // Konstruktor ChatFenster(int accountId); // Destruktor ~ChatFenster(); // nicht constant bool tick(double tickVal) override; void doPublicMausEreignis(MausEreignis& me) override; void doTastaturEreignis(TastaturEreignis& te) override; void render(int x, Bild& zRObj) override; // constant int getAccountId() const override; }; class ChatroomFenster : public Chat { private: int chatroomId; ObjTabelle* spieler; Array< int >* neueSpieler; int neueSpielerAnzahl; Array< int >* alteSpieler; int alteSpielerAnzahl; TextFeld* spielerName; Knopf* einladen; public: // Konstruktor ChatroomFenster(int chatroomId); // Destruktor ~ChatroomFenster(); // nicht constant void addSpieler(int accountId) override; void removeSpieler(int accountId) override; bool tick(double tickVal) override; void doPublicMausEreignis(MausEreignis& me) override; void doTastaturEreignis(TastaturEreignis& te) override; void render(int x, Bild& zRObj) override; bool druckFreund(void* obj, MausEreignis& me); bool druckEntfernen(void* obj, MausEreignis& me); // constant virtual int getChatroomId() const; }; class ChatLeisteObj : public Zeichnung { private: RCArray< Chat >* chats; HScrollBar* hsb; Punkt bildschirmGröße; int anzahl; int nowME; public: // Konstruktor ChatLeisteObj(); // Destruktor ~ChatLeisteObj(); // nicht constant void chatNachricht(int vonAccount, const char* txt); void chatroomNachricht(int chatroomId, const char* txt); void addChat(int accountId, int chatroomId); void removeChat(int accountId, int chatroomId); void removeChat(Chat* zChat); void removeAll(); void addSpieler(int chatroomId, int accountId); void removeSpieler(int chatroomId, int accountId); void setChatroomAdmin(int chatroomId); bool tick(double tickVal) override; void doTastaturEreignis(TastaturEreignis& te) override; void doPublicMausEreignis(MausEreignis& me) override; void render(Bild& zRObj) override; }; class ChatLeiste : public virtual ReferenceCounter { private: Fenster* fenster; Knopf* minMax; ChatLeisteObj* chatLeiste; Punkt bildschirmGröße; Bild* minimierenBild; Bild* maximierenBild; double tickVal; int animation; bool rend; public: // Konstruktor ChatLeiste(Fenster* zNachLoginFenster); // Destruktor ~ChatLeiste(); // nicht constant void chatNachricht(int vonAccount, const char* txt); void chatroomNachricht(int chatroomId, int vonAccount, const char* txt); void addChat(int accountId, int chatroomId); void removeChat(int accountId, int chatroomId); void removeChat(Chat* zChat); void removeAll(); void addSpieler(int chatroomId, int accountId); void removeSpieler(int chatroomId, int accountId); void setChatroomAdmin(int chatroomId); bool tick(double tickVal); bool druckMinMax(MausEreignis& me); }; // Nachrichten bool chatLeisteMinMaxME(void* p, void* obj, MausEreignis me); bool chatroomFensterFreundME(void* p, void* obj, MausEreignis me); bool chatroomFensterEntfernenME(void* p, void* obj, MausEreignis me); #endif