123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- #include "Skill.h"
- ActiveSkill::ActiveSkill( Bild *bild )
- : ReferenceCounter()
- {
- current.active = 0;
- current.time = 0;
- maxTime = 0;
- reloadTimeFactor = 1;
- this->bild = bild;
- beschleunigungBonus = 0;
- reparaturBonus = 0;
- laserIntensitätBonus = 0;
- laserEffizienzBonus = 0;
- akkuLeistungBonus = 0;
- maxEnergieBonus = 0;
- maxStabilitätBonus = 0;
- laserTempoBonus = 0;
- wendigkeitBonus = 0;
- antriebEffizienzBonus = 0;
- energieSchildBonus = 0;
- energieSchildEffizienzBonus = 0;
- beschleunigungFactor = 1;
- reparaturFactor = 1;
- laserIntensitätFactor = 1;
- laserEffizienzFactor = 1;
- akkuLeistungFactor = 1;
- maxEnergieFactor = 1;
- maxStabilitätFactor = 1;
- laserTempoFactor = 1;
- wendigkeitFactor = 1;
- antriebEffizienzFactor = 1;
- energieSchildFactor = 1;
- energieSchildEffizienzFactor = 1;
- save();
- }
- ActiveSkill::~ActiveSkill()
- {
- if( bild )
- bild->release();
- }
- void ActiveSkill::save()
- {
- last = current;
- }
- void ActiveSkill::load()
- {
- current = last;
- }
- void ActiveSkill::tick( double time )
- {
- if( current.active )
- {
- if( current.time < time )
- current.active = 0;
- else
- current.time -= time;
- }
- if( !current.active )
- {
- current.time += time * reloadTimeFactor;
- if( current.time > maxTime )
- current.time = maxTime;
- }
- }
- void ActiveSkill::render( int x, int y, Bild &zRObj )
- {
- zRObj.drawBildSkall( x, y, 50, 50, *bild );
- int length = (int)( ( current.time / maxTime ) * 50 );
- zRObj.fillRegion( x + length, y + 50, 50 - length, 4, 0xFF000000 );
- zRObj.fillRegion( x, y + 50, length, 4, 0xFFFFFFFF );
- }
- bool ActiveSkill::isActive() const
- {
- return current.active;
- }
- void ActiveSkill::activate()
- {
- current.active = 1;
- }
- void ActiveSkill::reset()
- {
- current.time = 0;
- current.active = 0;
- }
- double ActiveSkill::getBeschleunigungBonus()
- {
- return current.active ? beschleunigungBonus : 0;
- }
- double ActiveSkill::getReparaturBonus()
- {
- return current.active ? reparaturBonus : 0;
- }
- double ActiveSkill::getLaserIntensitätBonus()
- {
- return current.active ? laserIntensitätBonus : 0;
- }
- double ActiveSkill::getLaserEffizienzBonus()
- {
- return current.active ? laserEffizienzBonus : 0;
- }
- double ActiveSkill::getAkkuLeistungBonus()
- {
- return current.active ? akkuLeistungBonus : 0;
- }
- double ActiveSkill::getMaxEnergieBonus()
- {
- return current.active ? maxEnergieBonus : 0;
- }
- double ActiveSkill::getMaxStabilitätBonus()
- {
- return current.active ? maxStabilitätBonus : 0;
- }
- double ActiveSkill::getLaserTempoBonus()
- {
- return current.active ? laserTempoBonus : 0;
- }
- double ActiveSkill::getWendigkeitBonus()
- {
- return current.active ? wendigkeitBonus : 0;
- }
- double ActiveSkill::getAntriebEffizienzBonus()
- {
- return current.active ? antriebEffizienzBonus : 0;
- }
- double ActiveSkill::getEnergieSchildBonus()
- {
- return current.active ? energieSchildBonus : 0;
- }
- double ActiveSkill::getEnergieSchildEffizienzBonus()
- {
- return current.active ? energieSchildEffizienzBonus : 0;
- }
- double ActiveSkill::getBeschleunigungFactor()
- {
- return current.active ? beschleunigungFactor : 1;
- }
- double ActiveSkill::getReparaturFactor()
- {
- return current.active ? reparaturFactor : 1;
- }
- double ActiveSkill::getLaserIntensitätFactor()
- {
- return current.active ? laserIntensitätFactor : 1;
- }
- double ActiveSkill::getLaserEffizienzFactor()
- {
- return current.active ? laserEffizienzFactor : 1;
- }
- double ActiveSkill::getAkkuLeistungFactor()
- {
- return current.active ? akkuLeistungFactor : 1;
- }
- double ActiveSkill::getMaxEnergieFactor()
- {
- return current.active ? maxEnergieFactor : 1;
- }
- double ActiveSkill::getMaxStabilitätFactor()
- {
- return current.active ? maxStabilitätFactor : 1;
- }
- double ActiveSkill::getLaserTempoFactor()
- {
- return current.active ? laserTempoFactor : 1;
- }
- double ActiveSkill::getWendigkeitFactor()
- {
- return current.active ? wendigkeitFactor : 1;
- }
- double ActiveSkill::getAntriebEffizienzFactor()
- {
- return current.active ? antriebEffizienzFactor : 1;
- }
- double ActiveSkill::getEnergieSchildFactor()
- {
- return current.active ? energieSchildFactor : 1;
- }
- double ActiveSkill::getEnergieSchildEffizienzFactor()
- {
- return current.active ? energieSchildEffizienzFactor : 1;
- }
- SpeedBoost::SpeedBoost( Bild *bild )
- : ActiveSkill( bild )
- {
- beschleunigungFactor = 2;
- wendigkeitFactor = 2;
- antriebEffizienzFactor = 2;
- reloadTimeFactor = 0.02;
- maxTime = 2;
- }
- ShieldBoost::ShieldBoost( Bild *bild )
- : ActiveSkill( bild )
- {
- energieSchildFactor = 2;
- energieSchildEffizienzFactor = 2;
- reloadTimeFactor = 0.01;
- maxTime = 1;
- }
|