#include "Skill.h" ActiveSkill::ActiveSkill() { active = 0; time = 0; maxTime = 0; reloadTimeFactor = 1; beschleunigungBonus = 0; reparaturBonus = 0; laserIntensityBonus = 0; laserEffizienzBonus = 0; akkuLeistungBonus = 0; maxEnergieBonus = 0; maxStabilityBonus = 0; laserTempoBonus = 0; wendigkeitBonus = 0; antriebEffizienzBonus = 0; energieSchildBonus = 0; energieSchildEffizienzBonus = 0; beschleunigungFactor = 1; reparaturFactor = 1; laserIntensityFactor = 1; laserEffizienzFactor = 1; akkuLeistungFactor = 1; maxEnergieFactor = 1; maxStabilityFactor = 1; laserTempoFactor = 1; wendigkeitFactor = 1; antriebEffizienzFactor = 1; energieSchildFactor = 1; energieSchildEffizienzFactor = 1; ref = 1; } ActiveSkill::~ActiveSkill() {} void ActiveSkill::tick( double time ) { if( active ) { if( this->time < time ) active = 0; else this->time -= time; } if( !active ) { this->time += time * reloadTimeFactor; if( this->time > maxTime ) this->time = maxTime; } } bool ActiveSkill::isActive() const { return active; } void ActiveSkill::activate() { active = 1; } void ActiveSkill::reset() { time = 0; active = 0; } double ActiveSkill::getBeschleunigungBonus() { return active ? beschleunigungBonus : 0; } double ActiveSkill::getReparaturBonus() { return active ? reparaturBonus : 0; } double ActiveSkill::getLaserIntensityBonus() { return active ? laserIntensityBonus : 0; } double ActiveSkill::getLaserEffizienzBonus() { return active ? laserEffizienzBonus : 0; } double ActiveSkill::getAkkuLeistungBonus() { return active ? akkuLeistungBonus : 0; } double ActiveSkill::getMaxEnergieBonus() { return active ? maxEnergieBonus : 0; } double ActiveSkill::getMaxStabilityBonus() { return active ? maxStabilityBonus : 0; } double ActiveSkill::getLaserTempoBonus() { return active ? laserTempoBonus : 0; } double ActiveSkill::getWendigkeitBonus() { return active ? wendigkeitBonus : 0; } double ActiveSkill::getAntriebEffizienzBonus() { return active ? antriebEffizienzBonus : 0; } double ActiveSkill::getEnergieSchildBonus() { return active ? energieSchildBonus : 0; } double ActiveSkill::getEnergieSchildEffizienzBonus() { return active ? energieSchildEffizienzBonus : 0; } double ActiveSkill::getBeschleunigungFactor() { return active ? beschleunigungFactor : 1; } double ActiveSkill::getReparaturFactor() { return active ? reparaturFactor : 1; } double ActiveSkill::getLaserIntensityFactor() { return active ? laserIntensityFactor : 1; } double ActiveSkill::getLaserEffizienzFactor() { return active ? laserEffizienzFactor : 1; } double ActiveSkill::getAkkuLeistungFactor() { return active ? akkuLeistungFactor : 1; } double ActiveSkill::getMaxEnergieFactor() { return active ? maxEnergieFactor : 1; } double ActiveSkill::getMaxStabilityFactor() { return active ? maxStabilityFactor : 1; } double ActiveSkill::getLaserTempoFactor() { return active ? laserTempoFactor : 1; } double ActiveSkill::getWendigkeitFactor() { return active ? wendigkeitFactor : 1; } double ActiveSkill::getAntriebEffizienzFactor() { return active ? antriebEffizienzFactor : 1; } double ActiveSkill::getEnergieSchildFactor() { return active ? energieSchildFactor : 1; } double ActiveSkill::getEnergieSchildEffizienzFactor() { return active ? energieSchildEffizienzFactor : 1; } ActiveSkill *ActiveSkill::getThis() { ref++; return this; } ActiveSkill *ActiveSkill::release() { if( !--ref ) delete this; return 0; } SpeedBoost::SpeedBoost() : ActiveSkill() { beschleunigungFactor = 2; wendigkeitFactor = 2; antriebEffizienzFactor = 2; reloadTimeFactor = 0.02; maxTime = 2; } ShieldBoost::ShieldBoost() : ActiveSkill() { energieSchildFactor = 2; energieSchildEffizienzFactor = 2; reloadTimeFactor = 0.01; maxTime = 1; }