#pragma once class ActiveSkill { protected: bool active; double time; double maxTime; int ref; double reloadTimeFactor; // skill bonus added when active double beschleunigungBonus; double reparaturBonus; double laserIntensityBonus; double laserEffizienzBonus; double akkuLeistungBonus; double maxEnergieBonus; double maxStabilityBonus; double laserTempoBonus; double wendigkeitBonus; double antriebEffizienzBonus; double energieSchildBonus; double energieSchildEffizienzBonus; // skil multiplier when active double beschleunigungFactor; double reparaturFactor; double laserIntensityFactor; double laserEffizienzFactor; double akkuLeistungFactor; double maxEnergieFactor; double maxStabilityFactor; double laserTempoFactor; double wendigkeitFactor; double antriebEffizienzFactor; double energieSchildFactor; double energieSchildEffizienzFactor; public: ActiveSkill(); ~ActiveSkill(); void tick( double time ); bool isActive() const; void activate(); void reset(); double getBeschleunigungBonus(); double getReparaturBonus(); double getLaserIntensityBonus(); double getLaserEffizienzBonus(); double getAkkuLeistungBonus(); double getMaxEnergieBonus(); double getMaxStabilityBonus(); double getLaserTempoBonus(); double getWendigkeitBonus(); double getAntriebEffizienzBonus(); double getEnergieSchildBonus(); double getEnergieSchildEffizienzBonus(); double getBeschleunigungFactor(); double getReparaturFactor(); double getLaserIntensityFactor(); double getLaserEffizienzFactor(); double getAkkuLeistungFactor(); double getMaxEnergieFactor(); double getMaxStabilityFactor(); double getLaserTempoFactor(); double getWendigkeitFactor(); double getAntriebEffizienzFactor(); double getEnergieSchildFactor(); double getEnergieSchildEffizienzFactor(); ActiveSkill *getThis(); ActiveSkill *release(); }; class SpeedBoost : public ActiveSkill { public: SpeedBoost(); }; class ShieldBoost : public ActiveSkill { public: ShieldBoost(); };