Source Code (Use browser search to find items of interest.)
Class Index
kspaceduel'ShipSprite (./kdegames/kspaceduel/sprites.h:63)
class ShipSprite:public MobileSprite
{
public:
ShipSprite(QCanvasPixmapArray* seq, QCanvas* canvas, int pn);
virtual int rtti() const {return S_SHIP;}
int getHitPoints() {return hitpoints;}
void setHitPoints(int hp) {hitpoints=(hp<0?0:hp);}
double getEnergy() {return energy;}
void setEnergy(double e) {energy=(e<0?0:e);}
void setWins(int w) {wins=w;}
int getWins() {return wins;}
void setExplosion(int f) {explosion=f;}
int getExplosion() {return explosion;}
void setRotation(double r);
double getRotation() {return rotation;}
void rotateRight(double rotationEnergyNeed,double rotationSpeed);
void rotateLeft(double rotationEnergyNeed,double rotationSpeed);
void bullet(double reloadTime) {reloadBulletTime=reloadTime;}
bool reloadsBullet(double t=0.0) {return reloadBulletTime>t;}
void mine(double reloadTime) {reloadMineTime=reloadTime;}
bool reloadsMine(double t=0.0) {return reloadMineTime>t;}
bool explodes() {return explosion>=0;}
void setMinePowerups(int m) {minePowerups=m;}
int getMinePowerups() {return minePowerups;}
void setBulletPowerups(int b) {bulletPowerups=b;}
int getBulletPowerups() {return bulletPowerups;}
virtual void forward(double mult);
virtual void forward(double mult,int fr);
virtual void calculateGravityAndEnergy(double gravity,double sunEnergy,
double mult);
private:
int hitpoints, wins, explosion;
double energy,rotation,reloadBulletTime,reloadMineTime;
int bulletPowerups,minePowerups;
};
kspaceduel'ShipSprite::ShipSprite() (./kdegames/kspaceduel/sprites.cpp:109)
ShipSprite::ShipSprite(QCanvasPixmapArray* seq, QCanvas* canvas, int pn)
:MobileSprite(seq,canvas,pn)
{
hitpoints=99;
energy=99.9;
explosion=-1;
setZ(-20);
rotation=0;
bulletPowerups=0;
minePowerups=0;
}
kspaceduel'ShipSprite::setRotation() (./kdegames/kspaceduel/sprites.cpp:121)
void ShipSprite::setRotation(double r)
{
int nf,of=frame();
rotation=r;
if(rotation<0)
rotation-=((int)(rotation/(2*M_PI))-1)*2*M_PI;
if(rotation>=2*M_PI)
rotation-=(int)(rotation/(2*M_PI))*2*M_PI;
nf=(int)(rotation/(2*M_PI)*ROTNUM)%ROTNUM;
if(nf!=of)
setFrame(nf);
}
kspaceduel'ShipSprite::forward() (./kdegames/kspaceduel/sprites.cpp:134)
void ShipSprite::forward(double mult)
{
MobileSprite::forward(mult);
if(explosion>0)
{
explosion--;
if(explosion==0)
hide();
}
if(reloadBulletTime>0)
reloadBulletTime-=mult;
if(reloadMineTime>0)
reloadMineTime-=mult;
}
kspaceduel'ShipSprite::forward() (./kdegames/kspaceduel/sprites.cpp:149)
void ShipSprite::forward(double mult,int fr)
{
MobileSprite::forward(mult,fr);
rotation=fr/ROTNUM*M_PI*2;
if(explosion>0)
{
explosion--;
if(explosion==0)
hide();
}
if(reloadBulletTime>0)
reloadBulletTime-=mult;
if(reloadMineTime>0)
reloadMineTime-=mult;
}
kspaceduel'ShipSprite::calculateGravityAndEnergy() (./kdegames/kspaceduel/sprites.cpp:165)
void ShipSprite::calculateGravityAndEnergy(double gravity,double sunEnergy,
double mult)
{
double nx,ny,ex,ey,abs_2,phi,sq,eg;
if(!stopped)
{
ex=x()-canvas()->width()/2.0;
ey=y()-canvas()->height()/2.0;
abs_2=ex*ex+ey*ey;
sq=sqrt(abs_2);
if ( explodes() && (sq<20) )
stopped = true;
else
{
nx=ex/sq;
ny=ey/sq;
eg=gravity*mult;
setVelocity(xVelocity()-eg*nx/abs_2,
yVelocity()-eg*ny/abs_2);
if(hitpoints!=0)
{
if(energy<99.8)
{
phi=rectToAngle(nx,ny);
energy+=fabs(sunEnergy*mult/(abs_2)*cos(phi+rotation));
}
}
}
}
}
kspaceduel'ShipSprite::rotateRight() (./kdegames/kspaceduel/sprites.cpp:199)
void ShipSprite::rotateRight(double rotationEnergyNeed,double rotationSpeed)
{
if(energy>rotationEnergyNeed)
{
energy-=rotationEnergyNeed;
setRotation(rotation-rotationSpeed);
}
}
kspaceduel'ShipSprite::rotateLeft() (./kdegames/kspaceduel/sprites.cpp:208)
void ShipSprite::rotateLeft(double rotationEnergyNeed,double rotationSpeed)
{
if(energy>rotationEnergyNeed)
{
energy-=rotationEnergyNeed;
setRotation(rotation+rotationSpeed);
}
}