//classes.h
#ifndef CLASSES_H
#define CLASSES_H


class thing {
    public: 
    int x, y;
    int dir;
    int rad; //radius, used for collision detection
    void change_xy(int ir,int sp);
};

class ship : public thing {
    public:
    int health;
    int htim; //for player health regeneration
    int sx1, sx2, sy1, sy2;  //for virt. cams. in 1 and 2 player modes
    int shooting; //to limit shots-per-second
    bool isdead;
    void shoot();
    void fix_col();
    void las_hit(); //in collisions.cpp
};

class botship : public ship {
    public:
    botship(int xx, int yy, int tp);
    int dx, dy;  //delta x, y. used for trig functions
    int type;  //for bots...determines ship that displays (bot types: 1=fast, low health, small  2=kinda fast, ok health, kinda small  3=medium speed, good health, same size as player  4= kinda slow, great health, pretty big   5=SLOW, LOTS OF HEALTH, HUGE)
    int tim;  //for bots...to limit speed
    void action(int cx, int cy);  //to rotate/shoot, close x, y...for player who is closer
};

class playership : public ship {
    public:
    void playership_init(int p); // p is for player #
    int speed;
    int tx, ty; //for star creation
    bool turbo; //keep track if player has turbo on or not
    int ttim; //for turbo timer
    int rtim; //for turbo cooldown
    int cst; //for star creation
    long score;
};
                      
class laser : public thing {  //******************lasers in vector***************************//
    public:///////////////////////////////////////////////////////////////////////////////////////
        laser(int xx, int yy, int dd);  //constructor, gives laser object pos, dir and shooter values
        int tx, ty; //to keep track of how far it has gone
        int sx1, sx2, sy1, sy2; //same as botship
};  //lasers created/deleted when shot

class particle : public thing {
    public:
    particle(int xx, int yy, int dd, int rd);
    int sx1, sy1, sx2, sy2; //for cameras
    int tx, ty; //used to find dis
    int dist;  //distance to travel before erase()
};

class star {
    public:
        star (int xx, int yy);
        int x, y;
        int sx1, sy1;
        int sx2, sy2;
    };
#endif
