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-05-04
Revision:
29:6b8411bb040a
Parent:
28:98848e6a77a2
Child:
32:fe6359ef9916

File content as of revision 29:6b8411bb040a:

#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;
    bool _damage_self_upon_collision;
    int _hp_drop_chance;

public:
    // Function
    virtual void move(float, float, int * map, bool * doorways) = 0; // movement control and miscellaneous updates
    virtual int * get_frame() = 0;
    virtual void take_damage(int) = 0;
    void undo_move_x(bool);
    void undo_move_y(bool);
    void update_prev_pos();
    bool entity_to_map_collision_test(float pos_x, float pos_y, int * map, bool * doorways);

    // Mutator
    void set_position(float x, float y);
    void position_add_x(float);
    void position_add_y(float);
    
    // Accessors
    bool get_moving();
    bool is_damaged_by_collision();
    int get_hp_drop_chance();
    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();
    float get_velocity();

};

#endif