NachrichtenListe.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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 doPublicMausEreignis( 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 doPublicMausEreignis( 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 doPublicMausEreignis( 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. public:
  91. // Konstruktor
  92. NachrichtenListeObj( Schrift *zSchrift );
  93. // Destruktor
  94. ~NachrichtenListeObj();
  95. // nicht constant
  96. void addNachricht( NLNachricht *nachricht );
  97. void removeNachricht( NLNachricht *zNachricht );
  98. void removeAll();
  99. bool tick( double tickVal ) override;
  100. void doPublicMausEreignis( MausEreignis &me ) override;
  101. void render( Bild &zRObj ) override;
  102. };
  103. class NachrichtenListe
  104. {
  105. private:
  106. Schrift *schrift;
  107. Fenster *fenster;
  108. Knopf *minMax;
  109. NachrichtenListeObj *nachrichtenListe;
  110. Punkt bildschirmGröße;
  111. TextFeld *überschrift;
  112. Bild *minimierenBild;
  113. Bild *maximierenBild;
  114. GSL::GSLSoundV *msgSound;
  115. GSL::GSLSoundV *errSound;
  116. double tickVal;
  117. int animation;
  118. bool rend;
  119. int ref;
  120. public:
  121. // Konstruktor
  122. NachrichtenListe( Schrift *zSchrift, Fenster *zNachLoginFenster );
  123. // Destruktor
  124. ~NachrichtenListe();
  125. // nicht constant
  126. void addNachricht( Text *titel, Text *nachricht, Text *positiv = 0, Text *negativ = 0, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  127. void addNachricht( NLNachricht *nachricht );
  128. void removeNachricht( NLNachricht *zNachricht );
  129. void removeAll();
  130. bool druckMinMax( MausEreignis &me );
  131. bool tick( double tickVal );
  132. // contant
  133. Schrift *zSchrift() const;
  134. // Reference Counting
  135. NachrichtenListe *getThis();
  136. NachrichtenListe *release();
  137. };
  138. // Nachrichten
  139. bool NachrichtenListeMinMaxME( void *p, void *obj, MausEreignis me );
  140. #endif