NachrichtenListe.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #ifndef NachrichtenListe_H
  2. #define NachrichtenListe_H
  3. #include <Klient.h>
  4. #include <Array.h>
  5. #include <Fenster.h>
  6. #include <Knopf.h>
  7. #include <GSLSoundV.h>
  8. #include <functional>
  9. #include <Fortschritt.h>
  10. #include "../Update/Update.h"
  11. #include "..\..\Aktionen\AktionsThread.h"
  12. #include <Rahmen.h>
  13. using namespace Framework;
  14. using namespace Network;
  15. class NLNachricht
  16. {
  17. protected:
  18. TextFeld *titel;
  19. Knopf *close;
  20. LRahmen *rahmen;
  21. int höhe;
  22. int maxHöhe;
  23. bool ausgewählt;
  24. int animation;
  25. double tickVal;
  26. bool rend;
  27. int ref;
  28. NLNachricht( Schrift *zSchrift, Text *titel );
  29. virtual ~NLNachricht();
  30. public:
  31. virtual void entfernen();
  32. void setAusgewählt( bool ausgewählt );
  33. virtual void doMausEreignis( MausEreignis &me );
  34. virtual bool tick( double tickVal );
  35. virtual void render( int y, Bild &zRObj );
  36. // contant
  37. bool istAusgewählt() const;
  38. int getHeight() const;
  39. Text *zTitel() const;
  40. // Reference Counting
  41. NLNachricht *getThis();
  42. NLNachricht *release();
  43. };
  44. class SpielUpdateNachricht : public NLNachricht
  45. {
  46. private:
  47. TextFeld *text;
  48. Knopf *herunterladen;
  49. Knopf *abbrechen;
  50. std::function<void()> posAk;
  51. std::function<void()> negAk;
  52. FBalken *fortschritt;
  53. Update *update;
  54. public:
  55. SpielUpdateNachricht( Schrift *zSchrift, Text *titel, Text *nachricht, int dgID, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  56. ~SpielUpdateNachricht();
  57. // nicht constant
  58. void entfernen() override;
  59. void doMausEreignis( MausEreignis &me ) override;
  60. bool tick( double tickVal ) override;
  61. void render( int y, Bild &zRObj ) override;
  62. };
  63. class Nachricht : public NLNachricht
  64. {
  65. private:
  66. TextFeld *text;
  67. Knopf *positiv;
  68. Knopf *negativ;
  69. std::function<void()> posAk;
  70. std::function<void()> negAk;
  71. public:
  72. // Konstruktor
  73. Nachricht( Schrift *zSchrift, Text *titel, Text *nachricht, Text *positiv, Text *negativ, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  74. // Destruktor
  75. ~Nachricht();
  76. // nicht constant
  77. void entfernen() override;
  78. void doMausEreignis( MausEreignis &me ) override;
  79. bool tick( double tickVal ) override;
  80. void render( int y, Bild &zRObj ) override;
  81. };
  82. class NachrichtenListeObj : public Zeichnung
  83. {
  84. private:
  85. RCArray< NLNachricht > *members;
  86. VScrollBar *vsb;
  87. Schrift *schrift;
  88. Punkt bildschirmGröße;
  89. int anzahl;
  90. int ref;
  91. public:
  92. // Konstruktor
  93. NachrichtenListeObj( Schrift *zSchrift );
  94. // Destruktor
  95. ~NachrichtenListeObj();
  96. // nicht constant
  97. void addNachricht( NLNachricht *nachricht );
  98. void removeNachricht( NLNachricht *zNachricht );
  99. void removeAll();
  100. bool tick( double tickVal ) override;
  101. void doMausEreignis( MausEreignis &me ) override;
  102. void render( Bild &zRObj ) override;
  103. // contant
  104. // Reference Counting
  105. NachrichtenListeObj *getThis();
  106. NachrichtenListeObj *release();
  107. };
  108. class NachrichtenListe
  109. {
  110. private:
  111. Schrift *schrift;
  112. Fenster *fenster;
  113. Knopf *minMax;
  114. NachrichtenListeObj *nachrichtenListe;
  115. Punkt bildschirmGröße;
  116. TextFeld *überschrift;
  117. Bild *minimierenBild;
  118. Bild *maximierenBild;
  119. GSL::GSLSoundV *msgSound;
  120. GSL::GSLSoundV *errSound;
  121. double tickVal;
  122. int animation;
  123. bool rend;
  124. int ref;
  125. public:
  126. // Konstruktor
  127. NachrichtenListe( Schrift *zSchrift, Fenster *zNachLoginFenster );
  128. // Destruktor
  129. ~NachrichtenListe();
  130. // nicht constant
  131. void addNachricht( Text *titel, Text *nachricht, Text *positiv = 0, Text *negativ = 0, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  132. void addNachricht( NLNachricht *nachricht );
  133. void removeNachricht( NLNachricht *zNachricht );
  134. void removeAll();
  135. bool druckMinMax( MausEreignis &me );
  136. bool tick( double tickVal );
  137. // contant
  138. Schrift *zSchrift() const;
  139. // Reference Counting
  140. NachrichtenListe *getThis();
  141. NachrichtenListe *release();
  142. };
  143. // Nachrichten
  144. bool NachrichtenListeMinMaxME( void *p, void *obj, MausEreignis me );
  145. #endif