Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Entity.h

Committer:
el17sm
Date:
2019-04-20
Revision:
8:27244a0c3414
Parent:
7:4aaa37a711a1

File content as of revision 8:27244a0c3414:

#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;
        int hp;
        int face;
        
    public:
        // Functions
        virtual void move(float mapped_x, float mapped_y) = 0;
        
        bool matrix_collision_test(float pos_x, float pos_y, int map_no){
            for (int j = pos_y; j < (int)pos_y + hitbox.height; j++){
                for(int i = pos_x; i < (int)pos_x + hitbox.width; i++){
                    if ((j>=48) || (i>=84) || (j<0) || (i<0)) {}
                    else if ((level_map[0][j][i] == 1)) {
                        return true;
                    }
                }
            }
            return false;
        }
        
        // Accessors
        bool get_moving();
        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();

};

#endif