Spiel.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #pragma once
  2. #include "SpielKlasse.h"
  3. #include "Variablen.h"
  4. #include "Trigger.h"
  5. #include "Bariere.h"
  6. #include "Base.h"
  7. #include "Drop.h"
  8. #include "Geschoss.h"
  9. #include "Umlenkung.h"
  10. #include "Tunnel.h"
  11. #include "Schiene.h"
  12. #include "Schalter.h"
  13. #include "Statistik.h"
  14. #include "Reader.h"
  15. #include <Critical.h>
  16. #include <Datei.h>
  17. #include <Random.h>
  18. #include <Punkt.h>
  19. class Statistik;
  20. class StatistikV;
  21. class Spiel : public SpielKlasse
  22. {
  23. private:
  24. bool isRunning;
  25. RandomGenerator randG;
  26. SSDatenbankV *psqldb;
  27. RCArray< SSKlientV > *zKlients;
  28. RCArray< VarPointer > variablen;
  29. RCArray< Spieler > spieler;
  30. RCArray< Team > teams;
  31. RCArray< Bariere > barieren;
  32. RCArray< Base > basen;
  33. RCArray< Drop > drops;
  34. RCArray< Gegenstand > items;
  35. RCArray< Geschoss > shots;
  36. RCArray< FeuerballTreffer > feuer;
  37. RCArray< Schalter > schalter;
  38. RCArray< Schiene > schienen;
  39. RCArray< Timer > timer;
  40. RCArray< Tunnel > tunnel;
  41. RCArray< Umlenkung > umlenkungen;
  42. RCArray< Trigger > trigger;
  43. RCArray< TriggerRun > triggerRuns;
  44. Array< int > *zAccounts;
  45. Statistik *stat;
  46. Text mapPfad;
  47. Critical c;
  48. Datei *log;
  49. Punkt mapSize;
  50. Team *zWinner;
  51. Trigger *lastRunnedTrigger;
  52. Bariere *zuletztEingeschalteteBariere;
  53. Bariere *zuletztAusgeschalteteBariere;
  54. Bariere *zuletztBewegteBariere;
  55. Base *lastTeamChangedBase;
  56. Drop *lastDropedDrop;
  57. GegenstandTyp zuletztAufgehobenerGegenstand;
  58. GegenstandTyp zuletztBenutzterGegenstand;
  59. GegenstandTyp zuletztGedropterGegenstand;
  60. Geschoss *zuletztAbgefeuertesGeschoss;
  61. Geschoss *zuletztUmgelenktesGeschoss;
  62. Geschoss *zuletztBariereGetroffenesGeschoss;
  63. Geschoss *zuletztTunnelBenutztesGeschoss;
  64. Geschoss *zuletztGeschossGetroffenesGeschoss;
  65. Schalter *zuletztAktivierterSchalter;
  66. Spieler *zuletztSchadenGemachterSpieler;
  67. Spieler *zuletztSchadenGenommenerSpieler;
  68. Spieler *zuletztGeheilterSpieler;
  69. Spieler *zuletztLevelUpSpieler;
  70. Spieler *zuletztErfahrungBekommenerSpieler;
  71. Spieler *zuletztGegenstandAktivierterSpieler;
  72. Spieler *zuletztGegenstandAufgehobenerSpieler;
  73. Spieler *zuletztSchalterAktivierterSpieler;
  74. Spieler *zuletztTunnelBenutzterSpieler;
  75. Spieler *zuletztGestorbenerSpieler;
  76. Spieler *zuletztWiederbelebterSpieler;
  77. Spieler *zuletztGeschossenerSpieler;
  78. Timer *zuletztAbgelaufenerTimer;
  79. Timer *zuletztGestarteterTimer;
  80. Timer *zuletztPausierterTimer;
  81. Timer *zuletztFortgesetzterTimer;
  82. Tunnel *zuletztBenutzterTunnel;
  83. Umlenkung *zuletztBenutzteUmlenkung;
  84. int nextId;
  85. bool ende;
  86. int spielerAnzahl;
  87. int spielId;
  88. int karteId;
  89. int gameTicks;
  90. bool pause;
  91. double nextAutoVerschiebung;
  92. double nextAutoSchaltung;
  93. int ref;
  94. public:
  95. // Konstruktor
  96. Spiel();
  97. // Destruktor
  98. ~Spiel();
  99. // nicht constant
  100. void setPSQLK( SSDatenbankV *psqldb ) override; // call 1
  101. void setSpielId( int id ) override; // call 2
  102. void setKarteId( int karteId ) override; // call 3
  103. void setTempPfad( char *pfad ) override; // call 3.5
  104. void setAccounts( int anzahl, Array< int > *zAccounts ) override; // call 4
  105. void setKlients( int anzahl, RCArray< SSKlientV > *zKlients ) override; // call 5
  106. void setSpielerNummern( int anzahl, Array< int > *spielerNummern ) override; // call 6
  107. void run() override; // call 7
  108. void klientOffline( int accountId ) override;
  109. void klientOnline( int accountId, SSKlientV *zKlient ) override;
  110. void nachricht( int accountId, int len, char *bytes ) override;
  111. void setMapSize( int width, int height );
  112. void setPausiert( bool pausiert );
  113. void tick( double zeit );
  114. void addVariable( const char *name, Variable *var );
  115. void setVariable( const char *name, Variable *var );
  116. void addTeam( Team *team );
  117. void addSpieler( Spieler *spieler );
  118. void addBariere( Bariere *bariere );
  119. void addBase( Base *base );
  120. void addDrop( Drop *drop );
  121. void addGegenstand( Gegenstand *gegenstand );
  122. void addGeschoss( Geschoss *geschoss );
  123. void addSchalter( Schalter *schalter );
  124. void addSchiene( Schiene *schiene );
  125. void addTimer( Timer *timer );
  126. void addTunnel( Tunnel *tunnel );
  127. void addUmlenkung( Umlenkung *umlenkung );
  128. void addTrigger( Trigger *trigger );
  129. void addTriggerRun( TriggerRun *tRun );
  130. void spielerActivate( Spieler *zSpieler );
  131. void activateShalter( int id );
  132. void throwEvent( Ereignis *e );
  133. Variable *getVariable( const char *name ) const;
  134. Variable *zVariable( const char *name ) const;
  135. bool istPausiert() const;
  136. bool needEvent( EreignisTyp typ ) const;
  137. Team *getTeam( int id ) const;
  138. Spieler *getSpieler( int id ) const;
  139. Iterator< Spieler * > getSpieler() const;
  140. Iterator< Bariere * > getBarieren() const;
  141. Bariere *getBariere( int id ) const;
  142. Base *getBase( int id ) const;
  143. Drop *getDrop( int id ) const;
  144. Schalter *getSchalter( int id ) const;
  145. Schiene *getSchiene( int id ) const;
  146. Timer *getTimer( int id ) const;
  147. Tunnel *getTunnel( int id ) const;
  148. Umlenkung *getUmlenkung( int id ) const;
  149. Trigger *getTrigger( int id ) const;
  150. int getNextId();
  151. double getRand();
  152. int getTickCount() const;
  153. void setEnde( Team *zGewinner );
  154. Trigger *getRandomTrigger();
  155. Trigger *getLastRunnedTrigger() const;
  156. Bariere *getRandomBariere();
  157. void setZuletztEingeschalteteBariere( Bariere *b );
  158. Bariere *getZuletztEingeschalteteBariere() const;
  159. void setZuletztAusgeschalteteBariere( Bariere *b );
  160. Bariere *getZuletztAusgeschalteteBariere() const;
  161. void setZuletztBewegteBariere( Bariere *b );
  162. Bariere *getZuletztBewegteBariere() const;
  163. Base *getRandomBase();
  164. void setLastTeamChangedBase( Base *b );
  165. Base *getLastTeamChangedBase() const;
  166. Drop *getRandomDrop();
  167. void setLastDrop( Drop *d );
  168. Drop *getLastDrop() const;
  169. void setItemZuletztAufgehoben( GegenstandTyp g );
  170. GegenstandTyp getItemZuletztAufgehoben() const;
  171. void setItemZuletztAktiviert( GegenstandTyp g );
  172. GegenstandTyp getItemZuletztAktiviert() const;
  173. GegenstandTyp getItemZuletztGedropt() const;
  174. Geschoss *getRandomGeschoss();
  175. Geschoss *getGeschossZuletztAbgefeuert() const;
  176. void setGeschossZuletztUmgelenkt( Geschoss *g );
  177. Geschoss *getGeschossZuletztUmgelenkt() const;
  178. Geschoss *getGeschossZuletztBariereGetroffen() const;
  179. void setGeschossZuletztTunnelBenutzt( Geschoss *g );
  180. Geschoss *getGeschossZuletztTunnelBenutzt() const;
  181. void setGeschossZuletztGeschossGetroffen( Geschoss *g );
  182. Geschoss *getGeschossZuletztGeschossGetroffen() const;
  183. Schalter *getRandomSchalter();
  184. void setSchalterZuletztAktiviert( Schalter *s );
  185. Schalter *getSchalterZuletztAktiviert() const;
  186. Spieler *getRandomSpieler();
  187. Spieler *getRandomSpieler( Team *zTeam );
  188. void setSpielerZuletztSchadenGemacht( Spieler *s );
  189. Spieler *getSpielerZuletztSchadenGemacht() const;
  190. void setSpielerZuletztSchadenGenommen( Spieler *s );
  191. Spieler *getSpielerZuletztSchadenGenommen() const;
  192. void setSpielerZuletztGeheilt( Spieler *s );
  193. Spieler *getSpielerZuletztGeheilt() const;
  194. void setSpielerZuletztLevelUp( Spieler *s );
  195. Spieler *getSpielerZuletztLevelUp() const;
  196. void setSpielerZuletztErfahrungBekommen( Spieler *s );
  197. Spieler *getSpielerZuletztErfahrungBekommen() const;
  198. void setSpielerZuletztGegenstandAktiviert( Spieler *s );
  199. Spieler *getSpielerZuletztGegenstandAktiviert() const;
  200. void setSpielerZuletztGegenstandAufgehoben( Spieler *s );
  201. Spieler *getSpielerZuletztGegenstandAufgehoben() const;
  202. void setSpielerZuletztSchalterAktiviert( Spieler *s );
  203. Spieler *getSpielerZuletztSchalterAktiviert() const;
  204. void setSpielerZuletztTunnelBenutzt( Spieler *s );
  205. Spieler *getSpielerZuletztTunnelBenutzt() const;
  206. void setSpielerZuletztGestorben( Spieler *s );
  207. Spieler *getSpielerZuletztGestorben() const;
  208. void setSpielerZuletztWiederbelebt( Spieler *s );
  209. Spieler *getSpielerZuletztWiederbelebt() const;
  210. void setSpielerZuletztGeschossen( Spieler *s );
  211. Spieler *getSpielerZuletztGeschossen() const;
  212. Team *getRandomTeam();
  213. Timer *getRandomTimer();
  214. void setTimerZuletztAbgelaufen( Timer *t );
  215. Timer *getTimerZuletztAbgelaufen() const;
  216. void setTimerZuletztGestartet( Timer *t );
  217. Timer *getTimerZuletztGestartet() const;
  218. void setTimerZuletztPausiert( Timer *t );
  219. Timer *getTimerZuletztPausiert() const;
  220. void setTimerZuletztFortgesetzt( Timer *t );
  221. Timer *getTimerZuletztFortgesetzt() const;
  222. Tunnel *getRandomTunnel();
  223. void setTunnelZuletztBenutzt( Tunnel *t );
  224. Tunnel *getTunnelZuletztBenutzt() const;
  225. Umlenkung *getRandomUmlenkung();
  226. void setUmlenkungZuletztBenutzt( Umlenkung *t );
  227. Umlenkung *getUmlenkungZuletztBenutzt() const;
  228. // constant
  229. StatistikV *getStatistik() const override;
  230. // Reference Counting
  231. SpielKlasse *getThis() override;
  232. SpielKlasse *release() override;
  233. };