#ifndef NachrichtenListe_H #define NachrichtenListe_H #include #include #include #include #include #include #include #include "../Update/Update.h" #include "..\..\Aktionen\AktionsThread.h" #include using namespace Framework; using namespace Network; class NLNachricht { protected: TextFeld *titel; Knopf *close; LRahmen *rahmen; int höhe; int maxHöhe; bool ausgewählt; int animation; double tickVal; bool rend; int ref; NLNachricht( Schrift *zSchrift, Text *titel ); virtual ~NLNachricht(); public: virtual void entfernen(); void setAusgewählt( bool ausgewählt ); virtual void doMausEreignis( MausEreignis &me ); virtual bool tick( double tickVal ); virtual void render( int y, Bild &zRObj ); // contant bool istAusgewählt() const; int getHeight() const; Text *zTitel() const; // Reference Counting NLNachricht *getThis(); NLNachricht *release(); }; class SpielUpdateNachricht : public NLNachricht { private: TextFeld *text; Knopf *herunterladen; Knopf *abbrechen; std::function posAk; std::function negAk; FBalken *fortschritt; Update *update; public: SpielUpdateNachricht( Schrift *zSchrift, Text *titel, Text *nachricht, int dgID, std::function posAk = []() {}, std::function negAk = []() {} ); ~SpielUpdateNachricht(); // nicht constant void entfernen() override; void doMausEreignis( MausEreignis &me ) override; bool tick( double tickVal ) override; void render( int y, Bild &zRObj ) override; }; class Nachricht : public NLNachricht { private: TextFeld *text; Knopf *positiv; Knopf *negativ; std::function posAk; std::function negAk; public: // Konstruktor Nachricht( Schrift *zSchrift, Text *titel, Text *nachricht, Text *positiv, Text *negativ, std::function posAk = []() {}, std::function negAk = []() {} ); // Destruktor ~Nachricht(); // nicht constant void entfernen() override; void doMausEreignis( MausEreignis &me ) override; bool tick( double tickVal ) override; void render( int y, Bild &zRObj ) override; }; class NachrichtenListeObj : public Zeichnung { private: RCArray< NLNachricht > *members; VScrollBar *vsb; Schrift *schrift; Punkt bildschirmGröße; int anzahl; public: // Konstruktor NachrichtenListeObj( Schrift *zSchrift ); // Destruktor ~NachrichtenListeObj(); // nicht constant void addNachricht( NLNachricht *nachricht ); void removeNachricht( NLNachricht *zNachricht ); void removeAll(); bool tick( double tickVal ) override; void doMausEreignis( MausEreignis &me ) override; void render( Bild &zRObj ) override; }; class NachrichtenListe { private: Schrift *schrift; Fenster *fenster; Knopf *minMax; NachrichtenListeObj *nachrichtenListe; Punkt bildschirmGröße; TextFeld *überschrift; Bild *minimierenBild; Bild *maximierenBild; GSL::GSLSoundV *msgSound; GSL::GSLSoundV *errSound; double tickVal; int animation; bool rend; int ref; public: // Konstruktor NachrichtenListe( Schrift *zSchrift, Fenster *zNachLoginFenster ); // Destruktor ~NachrichtenListe(); // nicht constant void addNachricht( Text *titel, Text *nachricht, Text *positiv = 0, Text *negativ = 0, std::function posAk = []() {}, std::function negAk = []() {} ); void addNachricht( NLNachricht *nachricht ); void removeNachricht( NLNachricht *zNachricht ); void removeAll(); bool druckMinMax( MausEreignis &me ); bool tick( double tickVal ); // contant Schrift *zSchrift() const; // Reference Counting NachrichtenListe *getThis(); NachrichtenListe *release(); }; // Nachrichten bool NachrichtenListeMinMaxME( void *p, void *obj, MausEreignis me ); #endif