A rouge-like rpg, heavily inspired on the binding of isaac. Running on a FRDM-K64F Mbed board. C++.

Dependencies:   mbed MotionSensor

Entity/Entity.h

Committer:
el17sm
Date:
2019-04-26
Revision:
24:26369d92a06a
Parent:
23:5a8f75e93508
Child:
26:abbc19edc5c1

File content as of revision 24:26369d92a06a:

#ifndef ENTITY_H
#define ENTITY_H
#include "sprites.h"
#include "math.h"

class Entity
{
protected:
    bool moving;
    struct Hitbox {
        int width;
        int height;
    };
    Hitbox hitbox;
    struct SpriteSize {
        int width;
        int height;
        // Top-left corner of sprite is offset_x
        // to the right of top-left corner of hitbox
        int offset_x;
        // Top-left corner of sprite is offset_y
        // above of top-left corner of hitbox
        int offset_y;
    };
    SpriteSize sprite_size;
    struct Position {
        float x;
        float y;
    };
    Position position;
    Position prev_pos;
    struct FrameCount  {
        int count;
        int number;
        int max;
    };
    FrameCount frame;
    int hp;
    int attack;
    int face;
    float velocity;

public:
    // Function
    virtual void move(float, float) = 0; // movement control and miscellaneous updates
    virtual int * get_frame() = 0;
    virtual void take_damage(int) = 0;
    bool matrix_collision_test(float, float, int);
    void undo_move_x(bool);
    void undo_move_y(bool);
    void update_prev_pos();
    bool death_check();

    // Mutator
    void position_add_x(float);
    void position_add_y(float);
    
    // Accessors
    bool get_moving();
    int get_hitbox_width();
    int get_hitbox_height();
    int get_face();
    int get_sprite_width();
    int get_sprite_height();
    int get_offset_x();
    int get_offset_y();
    int get_pos_x();
    int get_pos_y();
    int get_prev_pos_x();
    int get_prev_pos_y();
    int get_attack();
    int get_hp();

};

#endif