#ifndef Spieler_H #define Spieler_H #include #include #include "Strukturen.h" #include "Skill.h" class Team; class Laser; class Karte; class Klient; class SSKlientV; using namespace Framework; enum TastaturStatus { T_GAS, T_ROT_L, T_ROT_R, T_FEUER, T_MAX }; class Spieler : public Model2DObject { private: // antrieb Vertex stL; Vertex kL; Vertex stR; Vertex kR; Vertex stM; Vertex kM; WeltInfo wInfo; RCArray< ActiveSkill > *activeSkills; int level; int accountId; int sNum; int farbe; Team *team; Klient *klient; bool tastatur[ T_MAX ]; bool amLeben; double schussAbk; double energieAbk; double repAbk; double reinkAbk; int maxReinkAbk; // Raumschiff Eigenschaftend Vertex startPos; double beschleunigung; double energie; double stability; double reparatur; double laserIntensity; double laserEffizienz; double akkuLeistung; double maxEnergie; double maxStability; double laserTempo; double netzwerk; double wendigkeit; double antriebEffizienz; double energieSchild; double energieSchildEffizienz; int skillPunkte; // Statistik Werte double schadenBekommen; double schadenGemacht; double treibstoffVerbraucht; int shots; int treffer; int punkte; int kills; int tode; double zeitAmLeben; double zeitTod; float ep; float nextSkillEp; bool needWiederbelebung; double calculateBeschleunigung(); double calculateReparatur(); double calculateLaserIntensity(); double calculateLaserEffizienz(); double calculateAkkuLeistung(); double calculateMaxEnergie(); double calculateMaxStability(); double calculateLaserTempo(); double calculateWendigkeit(); double calculateAntriebEffizienz(); double calculateEnergieSchild(); double calculateEnergieSchildEffizienz(); public: // Konstruktor Spieler( SpielerStr *zStr ); // Destruktor ~Spieler(); // nicht constant void addSkill( ActiveSkill *skill ); void useSkill( int id ); void offline(); void online( SSKlientV *zKlient ); void setModelData( Model2DData *data ); void setAccountId( int id ); void setTeam( Team *team ); void setSpielerFarbe( int farbe ); void setKlient( Klient *klient ); bool setTastataturStatus( TastaturStatus ts, bool aktiv ); bool tick( const WeltInfo &info, double zeit ) override; bool setSkill( int art ); Laser *getLaser( int sId ); bool nimmSchaden( double &intensity, int sLevel ); void machSchaden( double intensity, int sLevel, bool erf = 1 ); void addKill( int sLevel, bool erf = 1 ); void addTreffer( float intensity, int sLevel, bool erf = 1 ); void wiederbeleben(); void addEp( float ep ); // constant int getAccountId() const; bool istOnline() const; Klient *zKlient() const; bool istTreffer( Vec2< float > pos ) const; // Raumschiff Eigenschaften double getTeamMaxEnergieBonus() const; double getTeamMaxStabilityBonus() const; double getTeamReparaturBonus() const; double getTeamLaserIntensityBonus() 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; bool istAmLeben() const; // Statistik Werte int getSpielerNummer() const; Team *zTeam() const; int getSpielerFarbe() const; int getSchadenBekommen() const; int getSchadenGemacht() const; int getTreibstoffVerbraucht() const; int getShots() const; int getTreffer() const; int getPunkte() const; int getKills() const; int getTode() const; int getZeitAmLeben() const; int getZeitTod() const; bool doNeedWiederbelebung() const; float getEp() const; int getSkillP() const; int getLevel() const; // Reference Counting Spieler *getThis(); Spieler *release(); }; #endif