NachrichtenListe.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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 : public virtual ReferenceCounter
  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. NLNachricht( Text *titel );
  28. virtual ~NLNachricht();
  29. public:
  30. virtual void entfernen();
  31. void setAusgewählt( bool ausgewählt );
  32. virtual void doPublicMausEreignis( MausEreignis &me );
  33. virtual bool tick( double tickVal );
  34. virtual void render( int y, Bild &zRObj );
  35. // contant
  36. bool istAusgewählt() const;
  37. int getHeight() const;
  38. Text *zTitel() const;
  39. };
  40. class SpielUpdateNachricht : public NLNachricht
  41. {
  42. private:
  43. TextFeld *text;
  44. Knopf *herunterladen;
  45. Knopf *abbrechen;
  46. std::function<void()> posAk;
  47. std::function<void()> negAk;
  48. FBalken *fortschritt;
  49. Update *update;
  50. public:
  51. SpielUpdateNachricht( Text *titel, Text *nachricht, int dgID, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  52. ~SpielUpdateNachricht();
  53. // nicht constant
  54. void entfernen() override;
  55. void doPublicMausEreignis( MausEreignis &me ) override;
  56. bool tick( double tickVal ) override;
  57. void render( int y, Bild &zRObj ) override;
  58. };
  59. class Nachricht : public NLNachricht
  60. {
  61. private:
  62. TextFeld *text;
  63. Knopf *positiv;
  64. Knopf *negativ;
  65. std::function<void()> posAk;
  66. std::function<void()> negAk;
  67. public:
  68. // Konstruktor
  69. Nachricht( Text *titel, Text *nachricht, Text *positiv, Text *negativ, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  70. // Destruktor
  71. ~Nachricht();
  72. // nicht constant
  73. void entfernen() override;
  74. void doPublicMausEreignis( MausEreignis &me ) override;
  75. bool tick( double tickVal ) override;
  76. void render( int y, Bild &zRObj ) override;
  77. };
  78. class NachrichtenListeObj : public Zeichnung
  79. {
  80. private:
  81. RCArray< NLNachricht > *members;
  82. VScrollBar *vsb;
  83. Punkt bildschirmGröße;
  84. int anzahl;
  85. public:
  86. // Konstruktor
  87. NachrichtenListeObj();
  88. // Destruktor
  89. ~NachrichtenListeObj();
  90. // nicht constant
  91. void addNachricht( NLNachricht *nachricht );
  92. void removeNachricht( NLNachricht *zNachricht );
  93. void removeAll();
  94. bool tick( double tickVal ) override;
  95. void doPublicMausEreignis( MausEreignis &me ) override;
  96. void render( Bild &zRObj ) override;
  97. };
  98. class NachrichtenListe : public virtual ReferenceCounter
  99. {
  100. private:
  101. Schrift *schrift;
  102. Fenster *fenster;
  103. Knopf *minMax;
  104. NachrichtenListeObj *nachrichtenListe;
  105. Punkt bildschirmGröße;
  106. TextFeld *überschrift;
  107. Bild *minimierenBild;
  108. Bild *maximierenBild;
  109. GSL::GSLSoundV *msgSound;
  110. GSL::GSLSoundV *errSound;
  111. double tickVal;
  112. int animation;
  113. bool rend;
  114. public:
  115. // Konstruktor
  116. NachrichtenListe( Fenster *zNachLoginFenster );
  117. // Destruktor
  118. ~NachrichtenListe();
  119. // nicht constant
  120. void addNachricht( Text *titel, Text *nachricht, Text *positiv = 0, Text *negativ = 0, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  121. void addNachricht( NLNachricht *nachricht );
  122. void removeNachricht( NLNachricht *zNachricht );
  123. void removeAll();
  124. bool druckMinMax( MausEreignis &me );
  125. bool tick( double tickVal );
  126. };
  127. // Nachrichten
  128. bool NachrichtenListeMinMaxME( void *p, void *obj, MausEreignis me );
  129. #endif