This repository has been archived on 2026-05-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
spaceshooter/cpp/Character.h

55 lines
1.7 KiB
C
Raw Permalink Normal View History

#ifndef __CHARACTER_H__
#define __CHARACTER_H__
#include <libgame/libgame.h>
#define STATE_SPREADSHOT 0x00200000
#define STATE_FIRING 0x00400000
class Character : public Actor
{
unsigned int lastDirChangeTime; // used by the Wavy Enemy subtype (ACTORTYPE_ENEMY3)
unsigned int lastFireTime;
public:
Character();
virtual void collide(Character *ptr);
// ... don't move the order of the 'damage' element. It will break the Projectile class.
// (It makes senseif you look at it long enough. No, I didn't design it that way. Yes, I'm ashamed of it.
// Yes, I'll fix it later.)
int damage; // the damage dealt when something runs in to us
Actor *target;
Animation *projectileAnim;
std::string projectileSound;
std::string deathSound;
int health;
int weaponDamage; // the damage dealt when we use our weapon on something
int score;
virtual void fireProjectile(Vector velocity = (Vector){0,10,0}, int playSound = 1);
virtual void update();
};
class Projectile : public Actor
{
public:
// we don't use the health or weaponDamage items in the Character class,
// but because of the way I handled characters damaging each other, this was
// a simpler hack than redoing the classes properly.
void collide(Character *ptr);
int damage;
};
class Player : public Character
{
Uint32 playerShieldTimer; // used to track the amount of time the player's shield has been fading
Uint32 playerFailTimer; // timer for player fail
Uint32 playerDieTimer; // timer for when the player dies
public:
int lives;
void collide(Character *ptr);
void update();
};
#endif // __CHARACTER_H__