#pragma once #include <Bild.h> using namespace Framework; class ActiveSkill { protected: struct SkillDataSave { bool active; double time; } current, last; double maxTime; int ref; double reloadTimeFactor; Bild *bild; // skill bonus added when active double beschleunigungBonus; double reparaturBonus; double laserIntensit�tBonus; double laserEffizienzBonus; double akkuLeistungBonus; double maxEnergieBonus; double maxStabilit�tBonus; double laserTempoBonus; double wendigkeitBonus; double antriebEffizienzBonus; double energieSchildBonus; double energieSchildEffizienzBonus; // skil multiplier when active double beschleunigungFactor; double reparaturFactor; double laserIntensit�tFactor; double laserEffizienzFactor; double akkuLeistungFactor; double maxEnergieFactor; double maxStabilit�tFactor; double laserTempoFactor; double wendigkeitFactor; double antriebEffizienzFactor; double energieSchildFactor; double energieSchildEffizienzFactor; public: ActiveSkill( Bild *bild ); ~ActiveSkill(); void save(); void load(); void tick( double time ); void render( int x, int y, Bild &zRObj ); bool isActive() const; void activate(); void reset(); double getBeschleunigungBonus(); double getReparaturBonus(); double getLaserIntensit�tBonus(); double getLaserEffizienzBonus(); double getAkkuLeistungBonus(); double getMaxEnergieBonus(); double getMaxStabilit�tBonus(); double getLaserTempoBonus(); double getWendigkeitBonus(); double getAntriebEffizienzBonus(); double getEnergieSchildBonus(); double getEnergieSchildEffizienzBonus(); double getBeschleunigungFactor(); double getReparaturFactor(); double getLaserIntensit�tFactor(); double getLaserEffizienzFactor(); double getAkkuLeistungFactor(); double getMaxEnergieFactor(); double getMaxStabilit�tFactor(); double getLaserTempoFactor(); double getWendigkeitFactor(); double getAntriebEffizienzFactor(); double getEnergieSchildFactor(); double getEnergieSchildEffizienzFactor(); ActiveSkill *getThis(); ActiveSkill *release(); }; class SpeedBoost : public ActiveSkill { public: SpeedBoost( Bild *bild ); }; class ShieldBoost : public ActiveSkill { public: ShieldBoost( Bild *bild ); };