#ifndef ChatLeiste_H #define ChatLeiste_H #include #include #include #include #include #include #include #include #include using namespace Framework; using namespace Network; class Chat { 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; int ref; public: // Konstruktor Chat( Schrift *zSchrift ); // Destruktor ~Chat(); // nicht constant void setSichtbar( bool sichtbar ); void entfernen(); void addNachricht( char *txt ); void setAdmin(); virtual void addSpieler( int accountId ); virtual void removeSpieler( int accountId ); virtual bool tick( double tickVal ); virtual void doMausEreignis( 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; // Reference Counting virtual void *getThis(); virtual void *release(); }; class ChatFenster : public Chat { private: int accountId; public: // Konstruktor ChatFenster( Schrift *zSchrift, int accountId ); // Destruktor ~ChatFenster(); // nicht constant bool tick( double tickVal ) override; void doMausEreignis( MausEreignis &me ) override; void doTastaturEreignis( TastaturEreignis &te ) override; void render( int x, Bild &zRObj ) override; // constant int getAccountId() const override; // Reference Counting void *getThis() override; void *release() override; }; class ChatroomFenster : public Chat { private: int chatroomId; ObjTabelle *spieler; Schrift *schrift; Array< int > *neueSpieler; int neueSpielerAnzahl; Array< int > *alteSpieler; int alteSpielerAnzahl; TextFeld *spielerName; Knopf *einladen; public: // Konstruktor ChatroomFenster( Schrift *zSchrift, int chatroomId ); // Destruktor ~ChatroomFenster(); // nicht constant void addSpieler( int accountId ) override; void removeSpieler( int accountId ) override; bool tick( double tickVal ) override; void doMausEreignis( 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; // Reference Counting virtual void *getThis(); virtual void *release(); }; class ChatLeisteObj : public Zeichnung { private: RCArray< Chat > *chats; HScrollBar *hsb; Schrift *schrift; Punkt bildschirmGröße; int anzahl; int nowME; public: // Konstruktor ChatLeisteObj( Schrift *zSchrift ); // Destruktor ~ChatLeisteObj(); // nicht constant void chatNachricht( int vonAccount, char *txt ); void chatroomNachricht( int chatroomId, 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 doMausEreignis( MausEreignis &me ) override; void render( Bild &zRObj ) override; }; class ChatLeiste { private: Fenster *fenster; Knopf *minMax; ChatLeisteObj *chatLeiste; Punkt bildschirmGröße; Bild *minimierenBild; Bild *maximierenBild; double tickVal; int animation; bool rend; int ref; public: // Konstruktor ChatLeiste( Schrift *zSchrift, Fenster *zNachLoginFenster ); // Destruktor ~ChatLeiste(); // nicht constant void chatNachricht( int vonAccount, char *txt ); void chatroomNachricht( int chatroomId, int vonAccount, 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 ); // constant // Reference Counting ChatLeiste *getThis(); ChatLeiste *release(); }; // 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