// Game framework code
class BaseCharacter
{
public:
float GetHealth();
BaseSpriteComponent* GetSpriteComponent();
protected:
BaseSpriteComponent* sprite;
float health;
};
// Game framework code
class PlatformerCharacter : BaseCharacter
{
public:
void Move(float speed);
void Jump();
void Crouch();
bool IsInAir();
Physics2DComponent* GetPhysicsBodyComponent();
protected:
Physics2DComponent* physics_body;
float speed;
bool in_air;
};
// Game framework code
class ScrollerCharacter : BaseCharacter
{
public:
virtual void Move(Vector2D direction);
protected:
};
// Game framework code
class FireGun : public BaseWeapon
{
public:
virtual void Fire() override;
protected:
Particle2DEmitterComponent* particles;
};
// User game code
class MyPlayer : public PlatformerCharacter
{
public:
void Fire();
void SetWeapon(BaseWeapon* new_weapon);
BaseWeapon* GetWeapon();
protected:
BaseWeapon* weapon;
};