#ifndef Spieler_H #define Spieler_H #include #include #include #include #include "../Team/Team.h" #include "../Karte/Strukturen.h" #include "DeadPlayer.h" class Team; class Laser; class Karte; class SpielerGUI; enum TastaturStatus { T_GAS, T_ROT_L, T_ROT_R, T_FEUER, T_MAX }; class Spieler : public Model2DObject { friend class SpielerGUI; private: int accountId; int sNum; bool tastatur[ T_MAX ]; Team *zteam; KSGClient::InformationServerClient *info; Text *name; Vertex stL; Vertex kL; Vertex stR; Vertex kR; Vertex stM; Vertex kM; struct SpielerDataSave { float rSpeed; Vertex pos; Vertex speed; float rotation; int farbe; bool amLeben; double schussAbk; double energieAbk; double repAbk; double reinkAbk; int maxReinkAbk; Vertex startPos; double beschleunigung; double energie; double stabilität; double reparatur; double laserIntensität; double laserEffizienz; double akkuLeistung; double maxEnergie; double maxStabilität; double laserTempo; double netzwerk; double wendigkeit; double antriebEffizienz; double energieSchild; double energieSchildEffizienz; double zeitAmLeben; double zeitTod; double schadenBekommen; double schadenGemacht; double treibstoffVerbraucht; int schüsse; int treffer; int punkte; int kills; int tode; }; int farbe; bool amLeben; double schussAbk; double energieAbk; double repAbk; double reinkAbk; int maxReinkAbk; Vertex startPos; double beschleunigung; double energie; double stabilität; double reparatur; double laserIntensität; double laserEffizienz; double akkuLeistung; double maxEnergie; double maxStabilität; double laserTempo; double netzwerk; double wendigkeit; double antriebEffizienz; double energieSchild; double energieSchildEffizienz; double zeitAmLeben; double zeitTod; double schadenBekommen; double schadenGemacht; double treibstoffVerbraucht; int schüsse; int treffer; int punkte; int kills; int tode; SpielerDataSave last; int skillPunkte; Textur2D *flammenM; Textur2D *flammenL; Textur2D *flammenR; TextFeld *nText; DeadPlayer *deadPlayer; float ep; float nextSkillEp; double calculateLaserCost(); public: // Konstruktor Spieler( KSGClient::InformationServerClient *zInfoK, Schrift *zSchrift, SpielerStr *zStr ); // Destruktor ~Spieler(); // nicht constant void setModelData( Model2DData *data, Animation2DData *zFStart, Animation2DData *zFBurn ); void setAccountId( int accId ); void setTeam( Team *zTeam ); void setSpielerFarbe( int fc, Bild *zTextur ); void setTastataturStatus( TastaturStatus ts, bool aktiv ); bool tick( const WeltInfo &info, double zeit ) override; void render( Mat3< float > &kamMat, Bild &zRObj, const char *kamName ) override; void renderLeben( const Mat3< float > &kamMat, Bild &zRObj ); void setSkill( int art ); void nimmSchaden( double &intensität ); void calcDeadPlayerObject( Laser *zSchuss ); void machSchaden( double intensität ); void addKill(); DeadPlayer *sterben(); void wiederbelebung(); void hatGeschossen(); void addTreffer( float indens ); void addEp( float ep ); void save(); void load(); // constant float getEp() const; float getMaxEp() const; int getAccountId() const; Text *getName() const; Text *zName() const; bool hatSkill() const; bool istAmLeben() const; // Statistik Werte int getSpielerNummer() const; Team *zTeam() const; int getSpielerFarbe() const; int getSchadenBekommen() const; int getSchadenGemacht() const; int getTreibstoffVerbraucht() const; int getSchüsse() const; int getTreffer() const; int getPunkte() const; int getKills() const; int getTode() const; int getZeitAmLeben() const; int getZeitTod() const; double getTeamMaxEnergieBonus() const; double getTeamMaxStabilitätBonus() const; double getTeamReparaturBonus() const; double getTeamLaserIntensitätBonus() const; double getTeamLaserEffizienzBonus() const; double getTeamAkkuLeistungBonus() const; double getTeamLaserTempoBonus() const; double getTeamBeschleunigungBonus() const; double getTeamWendigkeitBonus() const; double getTeamAntriebEffizienzBonus() const; double getTeamEnergieSchildBonus() const; double getTeamEnergieSchildEffizienzBonus() const; int getSkillP() const; }; #endif