ChatLeiste.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #ifndef ChatLeiste_H
  2. #define ChatLeiste_H
  3. #include <Klient.h>
  4. #include <Zeichnung.h>
  5. #include <TextFeld.h>
  6. #include <Fenster.h>
  7. #include <Knopf.h>
  8. #include <Scroll.h>
  9. #include <Tabelle.h>
  10. #include <GSLSoundV.h>
  11. #include <Rahmen.h>
  12. using namespace Framework;
  13. using namespace Network;
  14. class Chat
  15. {
  16. protected:
  17. LRahmen *rahmen;
  18. TextFeld *verlauf;
  19. TextFeld *nachricht;
  20. TextFeld *name;
  21. Knopf *minimieren;
  22. Knopf *close;
  23. Punkt bildschirmGröße;
  24. GSL::GSLSoundV *msgSound;
  25. bool admin;
  26. double tickVal;
  27. bool sichtbar;
  28. int animation;
  29. int breite;
  30. int höhe;
  31. bool rend;
  32. int ref;
  33. public:
  34. // Konstruktor
  35. Chat( Schrift *zSchrift );
  36. // Destruktor
  37. ~Chat();
  38. // nicht constant
  39. void setSichtbar( bool sichtbar );
  40. void entfernen();
  41. void addNachricht( char *txt );
  42. void setAdmin();
  43. virtual void addSpieler( int accountId );
  44. virtual void removeSpieler( int accountId );
  45. virtual bool tick( double tickVal );
  46. virtual void doPublicMausEreignis( MausEreignis &me );
  47. virtual void doTastaturEreignis( TastaturEreignis &te );
  48. virtual void render( int x, Bild &zRObj );
  49. // constant
  50. TextFeld *getName() const;
  51. TextFeld *zName() const;
  52. virtual int getAccountId() const;
  53. virtual int getChatroomId() const;
  54. int getBreite() const;
  55. bool istSichtbar() const;
  56. // Reference Counting
  57. virtual void *getThis();
  58. virtual void *release();
  59. };
  60. class ChatFenster : public Chat
  61. {
  62. private:
  63. int accountId;
  64. public:
  65. // Konstruktor
  66. ChatFenster( Schrift *zSchrift, int accountId );
  67. // Destruktor
  68. ~ChatFenster();
  69. // nicht constant
  70. bool tick( double tickVal ) override;
  71. void doPublicMausEreignis( MausEreignis &me ) override;
  72. void doTastaturEreignis( TastaturEreignis &te ) override;
  73. void render( int x, Bild &zRObj ) override;
  74. // constant
  75. int getAccountId() const override;
  76. // Reference Counting
  77. void *getThis() override;
  78. void *release() override;
  79. };
  80. class ChatroomFenster : public Chat
  81. {
  82. private:
  83. int chatroomId;
  84. ObjTabelle *spieler;
  85. Schrift *schrift;
  86. Array< int > *neueSpieler;
  87. int neueSpielerAnzahl;
  88. Array< int > *alteSpieler;
  89. int alteSpielerAnzahl;
  90. TextFeld *spielerName;
  91. Knopf *einladen;
  92. public:
  93. // Konstruktor
  94. ChatroomFenster( Schrift *zSchrift, int chatroomId );
  95. // Destruktor
  96. ~ChatroomFenster();
  97. // nicht constant
  98. void addSpieler( int accountId ) override;
  99. void removeSpieler( int accountId ) override;
  100. bool tick( double tickVal ) override;
  101. void doPublicMausEreignis( MausEreignis &me ) override;
  102. void doTastaturEreignis( TastaturEreignis &te ) override;
  103. void render( int x, Bild &zRObj ) override;
  104. bool druckFreund( void *obj, MausEreignis &me );
  105. bool druckEntfernen( void *obj, MausEreignis &me );
  106. // constant
  107. virtual int getChatroomId() const;
  108. // Reference Counting
  109. virtual void *getThis();
  110. virtual void *release();
  111. };
  112. class ChatLeisteObj : public Zeichnung
  113. {
  114. private:
  115. RCArray< Chat > *chats;
  116. HScrollBar *hsb;
  117. Schrift *schrift;
  118. Punkt bildschirmGröße;
  119. int anzahl;
  120. int nowME;
  121. public:
  122. // Konstruktor
  123. ChatLeisteObj( Schrift *zSchrift );
  124. // Destruktor
  125. ~ChatLeisteObj();
  126. // nicht constant
  127. void chatNachricht( int vonAccount, char *txt );
  128. void chatroomNachricht( int chatroomId, char *txt );
  129. void addChat( int accountId, int chatroomId );
  130. void removeChat( int accountId, int chatroomId );
  131. void removeChat( Chat *zChat );
  132. void removeAll();
  133. void addSpieler( int chatroomId, int accountId );
  134. void removeSpieler( int chatroomId, int accountId );
  135. void setChatroomAdmin( int chatroomId );
  136. bool tick( double tickVal ) override;
  137. void doTastaturEreignis( TastaturEreignis &te ) override;
  138. void doPublicMausEreignis( MausEreignis &me ) override;
  139. void render( Bild &zRObj ) override;
  140. };
  141. class ChatLeiste
  142. {
  143. private:
  144. Fenster *fenster;
  145. Knopf *minMax;
  146. ChatLeisteObj *chatLeiste;
  147. Punkt bildschirmGröße;
  148. Bild *minimierenBild;
  149. Bild *maximierenBild;
  150. double tickVal;
  151. int animation;
  152. bool rend;
  153. int ref;
  154. public:
  155. // Konstruktor
  156. ChatLeiste( Schrift *zSchrift, Fenster *zNachLoginFenster );
  157. // Destruktor
  158. ~ChatLeiste();
  159. // nicht constant
  160. void chatNachricht( int vonAccount, char *txt );
  161. void chatroomNachricht( int chatroomId, int vonAccount, char *txt );
  162. void addChat( int accountId, int chatroomId );
  163. void removeChat( int accountId, int chatroomId );
  164. void removeChat( Chat *zChat );
  165. void removeAll();
  166. void addSpieler( int chatroomId, int accountId );
  167. void removeSpieler( int chatroomId, int accountId );
  168. void setChatroomAdmin( int chatroomId );
  169. bool tick( double tickVal );
  170. bool druckMinMax( MausEreignis &me );
  171. // constant
  172. // Reference Counting
  173. ChatLeiste *getThis();
  174. ChatLeiste *release();
  175. };
  176. // Nachrichten
  177. bool chatLeisteMinMaxME( void *p, void *obj, MausEreignis me );
  178. bool chatroomFensterFreundME( void *p, void *obj, MausEreignis me );
  179. bool chatroomFensterEntfernenME( void *p, void *obj, MausEreignis me );
  180. #endif