#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 #include #include #include 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; 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; };