2 Copyright (C) 1998-2001 Andreas Zehender <az@azweb.de>
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 #ifndef KSPACEDUEL_SPRITES_H
19 #define KSPACEDUEL_SPRITES_H
22 #include "spritebase.h"
28 class SunSprite
:public SimpleSprite
31 SunSprite(QSvgRenderer
* svg
, const QString
& element
);
32 virtual int type() const {return S_SUN
;}
35 class PowerupSprite
:public SimpleSprite
38 enum {PowerupMine
=0, PowerupBullet
, PowerupShield
, PowerupEnergy
,
40 PowerupSprite(QSvgRenderer
* svg
, const QString
& element
, int t
, double lifetime
);
41 virtual int type() const {return S_POWERUP
;}
43 double getLifetime() {return time
;}
44 void setLifetime(double t
) {time
=t
;}
45 int getType() {return mtype
;}
51 class ShipSprite
:public MobileSprite
54 ShipSprite(QSvgRenderer
* svg
, const QString
& element
, int pn
);
55 virtual int type() const {return S_SHIP
;}
56 int getHitPoints() {return hitpoints
;}
57 void setHitPoints(int hp
) {hitpoints
=(hp
<0?0:hp
);}
58 double getEnergy() {return energy
;}
59 void setEnergy(double e
) {energy
=(e
<0?0:e
);}
60 void setWins(int w
) {wins
=w
;}
61 int getWins() {return wins
;}
62 void setExplosion(int f
) {explosion
=f
;}
63 int getExplosion() {return explosion
;}
64 void setRotation(double r
);
65 double getRotation() {return rotation
;}
66 void rotateRight(double rotationEnergyNeed
,double rotationSpeed
);
67 void rotateLeft(double rotationEnergyNeed
,double rotationSpeed
);
68 void bullet(double reloadTime
) {reloadBulletTime
=reloadTime
;}
69 bool reloadsBullet(double t
=0.0) {return reloadBulletTime
>t
;}
70 void mine(double reloadTime
) {reloadMineTime
=reloadTime
;}
71 bool reloadsMine(double t
=0.0) {return reloadMineTime
>t
;}
72 bool explodes() {return explosion
>=0;}
73 void setMinePowerups(int m
) {minePowerups
=m
;}
74 int getMinePowerups() {return minePowerups
;}
75 void setBulletPowerups(int b
) {bulletPowerups
=b
;}
76 int getBulletPowerups() {return bulletPowerups
;}
77 virtual void forward(double mult
);
78 virtual void forward(double mult
,int fr
);
79 virtual void calculateGravityAndEnergy(double gravity
,double sunEnergy
,
82 int hitpoints
, wins
, explosion
;
83 double energy
,rotation
,reloadBulletTime
,reloadMineTime
;
84 int bulletPowerups
,minePowerups
;
85 double angle
; // current rotation angle
88 class BulletSprite
:public MobileSprite
91 BulletSprite(QSvgRenderer
* svg
, const QString
& elem
, int pn
,double lifetime
);
92 virtual int type() const {return S_BULLET
;}
93 virtual void forward(double mult
);
94 virtual void forward(double mult
,int fr
);
95 bool timeOut() {return time
<=0;}
100 class MineSprite
:public AnimatedSprite
103 MineSprite(QSvgRenderer
* svg
, const QList
<QString
> &animation
, const QList
<QString
> &exploanimation
, int pn
,double atime
,double f
);
104 virtual int type() const {return S_MINE
;}
105 bool isActive() {return active
;}
106 double getFuel() {return fuel
;}
107 void setFuel(double f
) {fuel
=(f
<0.0?0.0:f
);}
108 virtual void forward(double mult
);
110 bool explodes() {return expl
;}
111 bool over() {return (expl
&&(explosiontime
>(timeToGo
-0.1)));}
112 virtual void calculateGravity(double gravity
,double mult
);
115 double activateTime
,fuel
,timeToGo
,explosiontime
;
116 QList
<QString
> exploframes
; /* when mine explodes, we set frames to exploframes (needed because both player's mines have
117 the same explosion animation) */
120 class ExplosionSprite
:public AnimatedSprite
123 explicit ExplosionSprite(QSvgRenderer
* svg
, const QList
<QString
> &animation
, MobileSprite
*sp
= 0);
124 virtual int type() const {return S_EXPLOSION
;}
125 bool isOver() {return over
;}
126 virtual void forward(double mult
);
128 double timeToGo
,time
;
133 #endif // KSPACEDUEL_SPRITES_H