123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- #pragma once
- #include "SpielKlasse.h"
- #include "Variablen.h"
- #include "Trigger.h"
- #include "Bariere.h"
- #include "Base.h"
- #include "Drop.h"
- #include "Geschoss.h"
- #include "Umlenkung.h"
- #include "Tunnel.h"
- #include "Schiene.h"
- #include "Schalter.h"
- #include "Statistik.h"
- #include "Reader.h"
- #include <Critical.h>
- #include <Datei.h>
- #include <Random.h>
- #include <Punkt.h>
- class Statistik;
- class StatistikV;
- class Spiel : public SpielKlasse
- {
- private:
- bool isRunning;
- RandomGenerator randG;
- SSDatenbankV *psqldb;
- RCArray< SSKlientV > *zKlients;
- RCArray< VarPointer > variablen;
- RCArray< Spieler > spieler;
- RCArray< Team > teams;
- RCArray< Bariere > barieren;
- RCArray< Base > basen;
- RCArray< Drop > drops;
- RCArray< Gegenstand > items;
- RCArray< Geschoss > shots;
- RCArray< FeuerballTreffer > feuer;
- RCArray< Schalter > schalter;
- RCArray< Schiene > schienen;
- RCArray< Timer > timer;
- RCArray< Tunnel > tunnel;
- RCArray< Umlenkung > umlenkungen;
- RCArray< Trigger > trigger;
- RCArray< TriggerRun > triggerRuns;
- Array< int > *zAccounts;
- Statistik *stat;
- Text mapPfad;
- Critical c;
- Datei *log;
- Punkt mapSize;
- Team *zWinner;
- Trigger *lastRunnedTrigger;
- Bariere *zuletztEingeschalteteBariere;
- Bariere *zuletztAusgeschalteteBariere;
- Bariere *zuletztBewegteBariere;
- Base *lastTeamChangedBase;
- Drop *lastDropedDrop;
- GegenstandTyp zuletztAufgehobenerGegenstand;
- GegenstandTyp zuletztBenutzterGegenstand;
- GegenstandTyp zuletztGedropterGegenstand;
- Geschoss *zuletztAbgefeuertesGeschoss;
- Geschoss *zuletztUmgelenktesGeschoss;
- Geschoss *zuletztBariereGetroffenesGeschoss;
- Geschoss *zuletztTunnelBenutztesGeschoss;
- Geschoss *zuletztGeschossGetroffenesGeschoss;
- Schalter *zuletztAktivierterSchalter;
- Spieler *zuletztSchadenGemachterSpieler;
- Spieler *zuletztSchadenGenommenerSpieler;
- Spieler *zuletztGeheilterSpieler;
- Spieler *zuletztLevelUpSpieler;
- Spieler *zuletztErfahrungBekommenerSpieler;
- Spieler *zuletztGegenstandAktivierterSpieler;
- Spieler *zuletztGegenstandAufgehobenerSpieler;
- Spieler *zuletztSchalterAktivierterSpieler;
- Spieler *zuletztTunnelBenutzterSpieler;
- Spieler *zuletztGestorbenerSpieler;
- Spieler *zuletztWiederbelebterSpieler;
- Spieler *zuletztGeschossenerSpieler;
- Timer *zuletztAbgelaufenerTimer;
- Timer *zuletztGestarteterTimer;
- Timer *zuletztPausierterTimer;
- Timer *zuletztFortgesetzterTimer;
- Tunnel *zuletztBenutzterTunnel;
- Umlenkung *zuletztBenutzteUmlenkung;
- int nextId;
- bool ende;
- int spielerAnzahl;
- int spielId;
- int karteId;
- int gameTicks;
- bool pause;
- double nextAutoVerschiebung;
- double nextAutoSchaltung;
- int ref;
- public:
- // Konstruktor
- Spiel();
- // Destruktor
- ~Spiel();
- // nicht constant
- void setPSQLK( SSDatenbankV *psqldb ) override; // call 1
- void setSpielId( int id ) override; // call 2
- void setKarteId( int karteId ) override; // call 3
- void setTempPfad( char *pfad ) override; // call 3.5
- void setAccounts( int anzahl, Array< int > *zAccounts ) override; // call 4
- void setKlients( int anzahl, RCArray< SSKlientV > *zKlients ) override; // call 5
- void setSpielerNummern( int anzahl, Array< int > *spielerNummern ) override; // call 6
- void run() override; // call 7
- void klientOffline( int accountId ) override;
- void klientOnline( int accountId, SSKlientV *zKlient ) override;
- void nachricht( int accountId, int len, char *bytes ) override;
- void setMapSize( int width, int height );
- void setPausiert( bool pausiert );
- void tick( double zeit );
- void addVariable( const char *name, Variable *var );
- void setVariable( const char *name, Variable *var );
- void addTeam( Team *team );
- void addSpieler( Spieler *spieler );
- void addBariere( Bariere *bariere );
- void addBase( Base *base );
- void addDrop( Drop *drop );
- void addGegenstand( Gegenstand *gegenstand );
- void addGeschoss( Geschoss *geschoss );
- void addSchalter( Schalter *schalter );
- void addSchiene( Schiene *schiene );
- void addTimer( Timer *timer );
- void addTunnel( Tunnel *tunnel );
- void addUmlenkung( Umlenkung *umlenkung );
- void addTrigger( Trigger *trigger );
- void addTriggerRun( TriggerRun *tRun );
- void spielerActivate( Spieler *zSpieler );
- void activateShalter( int id );
- void throwEvent( Ereignis *e );
- Variable *getVariable( const char *name ) const;
- Variable *zVariable( const char *name ) const;
- bool istPausiert() const;
- bool needEvent( EreignisTyp typ ) const;
- Team *getTeam( int id ) const;
- Spieler *getSpieler( int id ) const;
- Iterator< Spieler * > getSpieler() const;
- Iterator< Bariere * > getBarieren() const;
- Bariere *getBariere( int id ) const;
- Base *getBase( int id ) const;
- Drop *getDrop( int id ) const;
- Schalter *getSchalter( int id ) const;
- Schiene *getSchiene( int id ) const;
- Timer *getTimer( int id ) const;
- Tunnel *getTunnel( int id ) const;
- Umlenkung *getUmlenkung( int id ) const;
- Trigger *getTrigger( int id ) const;
- int getNextId();
- double getRand();
- int getTickCount() const;
- void setEnde( Team *zGewinner );
- Trigger *getRandomTrigger();
- Trigger *getLastRunnedTrigger() const;
- Bariere *getRandomBariere();
- void setZuletztEingeschalteteBariere( Bariere *b );
- Bariere *getZuletztEingeschalteteBariere() const;
- void setZuletztAusgeschalteteBariere( Bariere *b );
- Bariere *getZuletztAusgeschalteteBariere() const;
- void setZuletztBewegteBariere( Bariere *b );
- Bariere *getZuletztBewegteBariere() const;
- Base *getRandomBase();
- void setLastTeamChangedBase( Base *b );
- Base *getLastTeamChangedBase() const;
- Drop *getRandomDrop();
- void setLastDrop( Drop *d );
- Drop *getLastDrop() const;
- void setItemZuletztAufgehoben( GegenstandTyp g );
- GegenstandTyp getItemZuletztAufgehoben() const;
- void setItemZuletztAktiviert( GegenstandTyp g );
- GegenstandTyp getItemZuletztAktiviert() const;
- GegenstandTyp getItemZuletztGedropt() const;
- Geschoss *getRandomGeschoss();
- Geschoss *getGeschossZuletztAbgefeuert() const;
- void setGeschossZuletztUmgelenkt( Geschoss *g );
- Geschoss *getGeschossZuletztUmgelenkt() const;
- Geschoss *getGeschossZuletztBariereGetroffen() const;
- void setGeschossZuletztTunnelBenutzt( Geschoss *g );
- Geschoss *getGeschossZuletztTunnelBenutzt() const;
- void setGeschossZuletztGeschossGetroffen( Geschoss *g );
- Geschoss *getGeschossZuletztGeschossGetroffen() const;
- Schalter *getRandomSchalter();
- void setSchalterZuletztAktiviert( Schalter *s );
- Schalter *getSchalterZuletztAktiviert() const;
- Spieler *getRandomSpieler();
- Spieler *getRandomSpieler( Team *zTeam );
- void setSpielerZuletztSchadenGemacht( Spieler *s );
- Spieler *getSpielerZuletztSchadenGemacht() const;
- void setSpielerZuletztSchadenGenommen( Spieler *s );
- Spieler *getSpielerZuletztSchadenGenommen() const;
- void setSpielerZuletztGeheilt( Spieler *s );
- Spieler *getSpielerZuletztGeheilt() const;
- void setSpielerZuletztLevelUp( Spieler *s );
- Spieler *getSpielerZuletztLevelUp() const;
- void setSpielerZuletztErfahrungBekommen( Spieler *s );
- Spieler *getSpielerZuletztErfahrungBekommen() const;
- void setSpielerZuletztGegenstandAktiviert( Spieler *s );
- Spieler *getSpielerZuletztGegenstandAktiviert() const;
- void setSpielerZuletztGegenstandAufgehoben( Spieler *s );
- Spieler *getSpielerZuletztGegenstandAufgehoben() const;
- void setSpielerZuletztSchalterAktiviert( Spieler *s );
- Spieler *getSpielerZuletztSchalterAktiviert() const;
- void setSpielerZuletztTunnelBenutzt( Spieler *s );
- Spieler *getSpielerZuletztTunnelBenutzt() const;
- void setSpielerZuletztGestorben( Spieler *s );
- Spieler *getSpielerZuletztGestorben() const;
- void setSpielerZuletztWiederbelebt( Spieler *s );
- Spieler *getSpielerZuletztWiederbelebt() const;
- void setSpielerZuletztGeschossen( Spieler *s );
- Spieler *getSpielerZuletztGeschossen() const;
- Team *getRandomTeam();
- Timer *getRandomTimer();
- void setTimerZuletztAbgelaufen( Timer *t );
- Timer *getTimerZuletztAbgelaufen() const;
- void setTimerZuletztGestartet( Timer *t );
- Timer *getTimerZuletztGestartet() const;
- void setTimerZuletztPausiert( Timer *t );
- Timer *getTimerZuletztPausiert() const;
- void setTimerZuletztFortgesetzt( Timer *t );
- Timer *getTimerZuletztFortgesetzt() const;
- Tunnel *getRandomTunnel();
- void setTunnelZuletztBenutzt( Tunnel *t );
- Tunnel *getTunnelZuletztBenutzt() const;
- Umlenkung *getRandomUmlenkung();
- void setUmlenkungZuletztBenutzt( Umlenkung *t );
- Umlenkung *getUmlenkungZuletztBenutzt() const;
- // constant
- StatistikV *getStatistik() const override;
- // Reference Counting
- SpielKlasse *getThis() override;
- SpielKlasse *release() override;
- };
|