Spiel.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. #ifndef SpielKlasse_H
  2. #define SpielKlasse_H
  3. #include "SpielV.h"
  4. #include "SpielChat.h"
  5. #include "Ende.h"
  6. #include "STKNachricht.h"
  7. #include <Bildschirm.h>
  8. #include <Kamera2D.h>
  9. #include <Random.h>
  10. #include "Spieler.h"
  11. #include "Bariere.h"
  12. #include "Base.h"
  13. #include "Drop.h"
  14. #include "Geschoss.h"
  15. #include "Schalter.h"
  16. #include "Schiene.h"
  17. #include "Trigger.h"
  18. #include "Tunnel.h"
  19. #include "Umlenkung.h"
  20. #include "DrachenAuge.h"
  21. #include "Brand.h"
  22. #include "Resource.h"
  23. #include "SpielerGUI.h"
  24. #include "SingleAnnimation.h"
  25. #include "Bestenliste.h"
  26. class Spiel : public SpielV
  27. {
  28. private:
  29. RCArray< STKNachricht > *stkn;
  30. Schrift *schrift;
  31. KSGClient::InformationServerClient *infoKlient;
  32. KSGClient::SpielServerClient *spielKlient;
  33. Bildschirm *zScreen;
  34. SpielChat *chat;
  35. Ende *end;
  36. SpielerGUI *spielerGUI;
  37. RCArray< DeadPlayer > *deads;
  38. RandomGenerator randG;
  39. RCArray< VarPointer > variablen;
  40. RCArray< Spieler > spieler;
  41. RCArray< Team > teams;
  42. RCArray< Bariere > barieren;
  43. RCArray< Base > basen;
  44. RCArray< Drop > drops;
  45. RCArray< Gegenstand > items;
  46. RCArray< Geschoss > shots;
  47. RCArray< FeuerballTreffer > feuer;
  48. RCArray< Schalter > schalter;
  49. RCArray< Schiene > schienen;
  50. RCArray< Timer > timer;
  51. RCArray< Tunnel > tunnel;
  52. RCArray< Umlenkung > umlenkungen;
  53. RCArray< Trigger > trigger;
  54. RCArray< TriggerRun > triggerRuns;
  55. RCArray< SingleAnimation > animations;
  56. RCArray< Bestenliste > bestenlisten;
  57. Punkt mapSize;
  58. Team *zWinner;
  59. Critical c;
  60. Trigger *lastRunnedTrigger;
  61. Bariere *zuletztEingeschalteteBariere;
  62. Bariere *zuletztAusgeschalteteBariere;
  63. Bariere *zuletztBewegteBariere;
  64. Base *lastTeamChangedBase;
  65. Drop *lastDropedDrop;
  66. GegenstandTyp zuletztAufgehobenerGegenstand;
  67. GegenstandTyp zuletztBenutzterGegenstand;
  68. GegenstandTyp zuletztGedropterGegenstand;
  69. Geschoss *zuletztAbgefeuertesGeschoss;
  70. Geschoss *zuletztUmgelenktesGeschoss;
  71. Geschoss *zuletztBariereGetroffenesGeschoss;
  72. Geschoss *zuletztTunnelBenutztesGeschoss;
  73. Geschoss *zuletztGeschossGetroffenesGeschoss;
  74. Schalter *zuletztAktivierterSchalter;
  75. Spieler *zuletztSchadenGemachterSpieler;
  76. Spieler *zuletztSchadenGenommenerSpieler;
  77. Spieler *zuletztGeheilterSpieler;
  78. Spieler *zuletztLevelUpSpieler;
  79. Spieler *zuletztErfahrungBekommenerSpieler;
  80. Spieler *zuletztGegenstandAktivierterSpieler;
  81. Spieler *zuletztGegenstandAufgehobenerSpieler;
  82. Spieler *zuletztSchalterAktivierterSpieler;
  83. Spieler *zuletztTunnelBenutzterSpieler;
  84. Spieler *zuletztGestorbenerSpieler;
  85. Spieler *zuletztWiederbelebterSpieler;
  86. Spieler *zuletztGeschossenerSpieler;
  87. Timer *zuletztAbgelaufenerTimer;
  88. Timer *zuletztGestarteterTimer;
  89. Timer *zuletztPausierterTimer;
  90. Timer *zuletztFortgesetzterTimer;
  91. Tunnel *zuletztBenutzterTunnel;
  92. Umlenkung *zuletztBenutzteUmlenkung;
  93. ResourceRegistry *resources;
  94. int nextId;
  95. bool begonnen;
  96. double rZeit;
  97. int gameTicks;
  98. int spielerAnzahl;
  99. int karteId;
  100. int ladenProzent;
  101. int spielerNummer;
  102. char *tasten;
  103. bool pause;
  104. double nextAutoVerschiebung;
  105. double nextAutoSchaltung;
  106. int ref;
  107. bool istAmLeben() const;
  108. void tick();
  109. Spieler *zEigenerSpieler() const;
  110. Team *zEigenesTeam() const;
  111. public:
  112. // Konstruktor
  113. Spiel();
  114. // Destruktor
  115. ~Spiel();
  116. // nicht constant
  117. void lock();
  118. void unlock();
  119. void setSchrift( Schrift *schrift ) override; // call 4
  120. void setBildschirm( Bildschirm *zScreen ) override; // call 3
  121. void nachricht( int län, char *bytes ) override;
  122. void setKlients( KSGClient::InformationServerClient *infoKlient, KSGClient::SpielServerClient *spielKlient ) override; // call 2
  123. void setKarteId( int karteId ) override; // call 1
  124. void ladeDaten() override; // call 5
  125. void doPublicMausEreignis( MausEreignis &me ) override;
  126. void doTastaturEreignis( TastaturEreignis &te ) override;
  127. void stknVerarbeitung();
  128. bool tick( double zeit ) override;
  129. void render( Bild &zRObj ) override;
  130. void setMapSize( int width, int height );
  131. void setPausiert( bool pausiert );
  132. void addVariable( const char *name, Variable *var );
  133. void setVariable( const char *name, Variable *var );
  134. void addTeam( Team *team );
  135. void addSpieler( Spieler *spieler );
  136. void addBariere( Bariere *bariere );
  137. void addBase( Base *base );
  138. void addDrop( Drop *drop );
  139. void addGegenstand( Gegenstand *gegenstand );
  140. void addGeschoss( Geschoss *geschoss );
  141. void addSchalter( Schalter *schalter );
  142. void addSchiene( Schiene *schiene );
  143. void addTimer( Timer *timer );
  144. void addTunnel( Tunnel *tunnel );
  145. void addUmlenkung( Umlenkung *umlenkung );
  146. void addTrigger( Trigger *trigger );
  147. void addTriggerRun( TriggerRun *tRun );
  148. void spielerActivate( Spieler *zSpieler );
  149. void activateShalter( int id );
  150. void throwEvent( Ereignis *e );
  151. Variable *getVariable( const char *name ) const;
  152. Variable *zVariable( const char *name ) const;
  153. bool istPausiert() const;
  154. bool needEvent( EreignisTyp typ ) const;
  155. Team *getTeam( int id ) const;
  156. Spieler *getSpieler( int id ) const;
  157. Iterator< Spieler * > getSpieler() const;
  158. Iterator< Bariere * > getBarieren() const;
  159. Bariere *getBariere( int id ) const;
  160. Base *getBase( int id ) const;
  161. Drop *getDrop( int id ) const;
  162. Schalter *getSchalter( int id ) const;
  163. Schiene *getSchiene( int id ) const;
  164. Timer *getTimer( int id ) const;
  165. Tunnel *getTunnel( int id ) const;
  166. Umlenkung *getUmlenkung( int id ) const;
  167. Trigger *getTrigger( int id ) const;
  168. int getNextId();
  169. double getRand();
  170. int getTickCount() const;
  171. void setEnde( Team *zGewinner );
  172. Trigger *getRandomTrigger();
  173. Trigger *getLastRunnedTrigger() const;
  174. Bariere *getRandomBariere();
  175. void setZuletztEingeschalteteBariere( Bariere *b );
  176. Bariere *getZuletztEingeschalteteBariere() const;
  177. void setZuletztAusgeschalteteBariere( Bariere *b );
  178. Bariere *getZuletztAusgeschalteteBariere() const;
  179. void setZuletztBewegteBariere( Bariere *b );
  180. Bariere *getZuletztBewegteBariere() const;
  181. Base *getRandomBase();
  182. void setLastTeamChangedBase( Base *b );
  183. Base *getLastTeamChangedBase() const;
  184. Drop *getRandomDrop();
  185. void setLastDrop( Drop *d );
  186. Drop *getLastDrop() const;
  187. void setItemZuletztAufgehoben( GegenstandTyp g );
  188. GegenstandTyp getItemZuletztAufgehoben() const;
  189. void setItemZuletztAktiviert( GegenstandTyp g );
  190. GegenstandTyp getItemZuletztAktiviert() const;
  191. GegenstandTyp getItemZuletztGedropt() const;
  192. Geschoss *getRandomGeschoss();
  193. Geschoss *getGeschossZuletztAbgefeuert() const;
  194. void setGeschossZuletztUmgelenkt( Geschoss *g );
  195. Geschoss *getGeschossZuletztUmgelenkt() const;
  196. Geschoss *getGeschossZuletztBariereGetroffen() const;
  197. void setGeschossZuletztTunnelBenutzt( Geschoss *g );
  198. Geschoss *getGeschossZuletztTunnelBenutzt() const;
  199. void setGeschossZuletztGeschossGetroffen( Geschoss *g );
  200. Geschoss *getGeschossZuletztGeschossGetroffen() const;
  201. Schalter *getRandomSchalter();
  202. void setSchalterZuletztAktiviert( Schalter *s );
  203. Schalter *getSchalterZuletztAktiviert() const;
  204. Spieler *getRandomSpieler();
  205. Spieler *getRandomSpieler( Team *zTeam );
  206. void setSpielerZuletztSchadenGemacht( Spieler *s );
  207. Spieler *getSpielerZuletztSchadenGemacht() const;
  208. void setSpielerZuletztSchadenGenommen( Spieler *s );
  209. Spieler *getSpielerZuletztSchadenGenommen() const;
  210. void setSpielerZuletztGeheilt( Spieler *s );
  211. Spieler *getSpielerZuletztGeheilt() const;
  212. void setSpielerZuletztLevelUp( Spieler *s );
  213. Spieler *getSpielerZuletztLevelUp() const;
  214. void setSpielerZuletztErfahrungBekommen( Spieler *s );
  215. Spieler *getSpielerZuletztErfahrungBekommen() const;
  216. void setSpielerZuletztGegenstandAktiviert( Spieler *s );
  217. Spieler *getSpielerZuletztGegenstandAktiviert() const;
  218. void setSpielerZuletztGegenstandAufgehoben( Spieler *s );
  219. Spieler *getSpielerZuletztGegenstandAufgehoben() const;
  220. void setSpielerZuletztSchalterAktiviert( Spieler *s );
  221. Spieler *getSpielerZuletztSchalterAktiviert() const;
  222. void setSpielerZuletztTunnelBenutzt( Spieler *s );
  223. Spieler *getSpielerZuletztTunnelBenutzt() const;
  224. void setSpielerZuletztGestorben( Spieler *s );
  225. Spieler *getSpielerZuletztGestorben() const;
  226. void setSpielerZuletztWiederbelebt( Spieler *s );
  227. Spieler *getSpielerZuletztWiederbelebt() const;
  228. void setSpielerZuletztGeschossen( Spieler *s );
  229. Spieler *getSpielerZuletztGeschossen() const;
  230. Team *getRandomTeam();
  231. Timer *getRandomTimer();
  232. void setTimerZuletztAbgelaufen( Timer *t );
  233. Timer *getTimerZuletztAbgelaufen() const;
  234. void setTimerZuletztGestartet( Timer *t );
  235. Timer *getTimerZuletztGestartet() const;
  236. void setTimerZuletztPausiert( Timer *t );
  237. Timer *getTimerZuletztPausiert() const;
  238. void setTimerZuletztFortgesetzt( Timer *t );
  239. Timer *getTimerZuletztFortgesetzt() const;
  240. Tunnel *getRandomTunnel();
  241. void setTunnelZuletztBenutzt( Tunnel *t );
  242. Tunnel *getTunnelZuletztBenutzt() const;
  243. Umlenkung *getRandomUmlenkung();
  244. void setUmlenkungZuletztBenutzt( Umlenkung *t );
  245. Umlenkung *getUmlenkungZuletztBenutzt() const;
  246. ResourceRegistry *zResources() const;
  247. void addAnimation( SingleAnimation *animation );
  248. void addBestenliste( Bestenliste *b );
  249. // constant
  250. int läuft() const override;
  251. // Reference Counting
  252. SpielV *getThis() override;
  253. SpielV *release() override;
  254. };
  255. #endif