#pragma once #include using namespace Framework; class ActiveSkill : public virtual ReferenceCounter { protected: struct SkillDataSave { bool active; double time; } current, last; double maxTime; 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(); }; class SpeedBoost : public ActiveSkill { public: SpeedBoost( Bild *bild ); }; class ShieldBoost : public ActiveSkill { public: ShieldBoost( Bild *bild ); };