You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.2 KiB
144 lines
4.2 KiB
#ifndef __SPRITE_OBJECTS_H
|
|
#define __SPRITE_OBJECTS_H
|
|
|
|
#include <tqcanvas.h>
|
|
#include "defines.h"
|
|
|
|
#ifdef sun
|
|
#undef sun
|
|
#endif
|
|
|
|
struct AiSprite
|
|
{
|
|
double x,y,dx,dy;
|
|
bool sun, border;
|
|
};
|
|
|
|
class SunSprite:public TQCanvasSprite
|
|
{
|
|
public:
|
|
SunSprite(TQCanvasPixmapArray* seq, TQCanvas* canvas);
|
|
virtual int rtti() const {return S_SUN;}
|
|
};
|
|
|
|
|
|
class PowerupSprite:public TQCanvasSprite
|
|
{
|
|
public:
|
|
enum {PowerupMine=0, PowerupBullet, PowerupShield, PowerupEnergy,
|
|
PowerupNum};
|
|
PowerupSprite(TQCanvasPixmapArray* seq, TQCanvas* canvas, int t, double lifetime);
|
|
virtual int rtti() const {return S_POWERUP;}
|
|
|
|
double getLifetime() {return time;}
|
|
void setLifetime(double t) {time=t;}
|
|
int getType() {return type;}
|
|
private:
|
|
double time;
|
|
int type;
|
|
};
|
|
|
|
class MobileSprite:public TQCanvasSprite
|
|
{
|
|
public:
|
|
MobileSprite(TQCanvasPixmapArray* array, TQCanvas* canvas, int pn);
|
|
|
|
virtual void forward(double mult,int frame);
|
|
virtual void forward(double mult);
|
|
virtual void calculateGravity(double gravity,double mult);
|
|
int spriteFieldWidth(){return canvas()->width();}
|
|
int spriteFieldHeight(){return canvas()->height();}
|
|
AiSprite toAiSprite();
|
|
|
|
bool isStopped() {return stopped;}
|
|
void stop(bool s=true) {stopped=s;}
|
|
int getPlayerNumber() {return playerNumber;}
|
|
protected:
|
|
void checkBounds();
|
|
bool stopped;
|
|
int playerNumber;
|
|
};
|
|
|
|
|
|
class ShipSprite:public MobileSprite
|
|
{
|
|
public:
|
|
ShipSprite(TQCanvasPixmapArray* seq, TQCanvas* 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;
|
|
};
|
|
|
|
class BulletSprite:public MobileSprite
|
|
{
|
|
public:
|
|
BulletSprite(TQCanvasPixmapArray* seq, TQCanvas* canvas, int pn,double lifetime);
|
|
virtual int rtti() const {return S_BULLET;}
|
|
virtual void forward(double mult);
|
|
virtual void forward(double mult,int fr);
|
|
bool timeOut() {return time<=0;}
|
|
private:
|
|
double time;
|
|
};
|
|
|
|
class MineSprite:public MobileSprite
|
|
{
|
|
public:
|
|
MineSprite(TQCanvasPixmapArray* seq, TQCanvas* canvas, int pn,double atime,double f);
|
|
virtual int rtti() const {return S_MINE;}
|
|
bool isActive() {return active;}
|
|
double getFuel() {return fuel;}
|
|
void setFuel(double f) {fuel=(f<0.0?0.0:f);}
|
|
virtual void forward(double mult);
|
|
void explode(TQCanvasPixmapArray* s);
|
|
bool explodes() {return expl;}
|
|
bool over() {return (expl&&(explosiontime>(timeToGo-0.1)));}
|
|
virtual void calculateGravity(double gravity,double mult);
|
|
private:
|
|
bool expl,active;
|
|
double activateTime,fuel,timeToGo,explosiontime;
|
|
};
|
|
|
|
class ExplosionSprite:public TQCanvasSprite
|
|
{
|
|
public:
|
|
ExplosionSprite(TQCanvasPixmapArray *seq, TQCanvas* field, MobileSprite *sp);
|
|
virtual int rtti() const {return S_EXPLOSION;}
|
|
bool isOver() {return over;}
|
|
virtual void forward(double mult);
|
|
void setSequence(TQCanvasPixmapArray *seq);
|
|
private:
|
|
double timeToGo,time;
|
|
bool over;
|
|
MobileSprite *obj;
|
|
};
|
|
|
|
#endif
|