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

Dependencies:   mbed MotionSensor

Room/Room.h

Committer:
el17sm
Date:
2019-05-02
Revision:
28:98848e6a77a2
Parent:
27:a1b41626f57c
Child:
29:6b8411bb040a

File content as of revision 28:98848e6a77a2:

#ifndef ROOM_H
#define ROOM_H
#include "sprites.h"
#include "Entity.h"
#include "Player.h"
#include "Headless.h"
#include "Snake.h"
#include "N5110.h"

#define MAX_ENEMIES 10

class Room // contains the type of room, number of enemies inside it, the doorways existing in the room, functions to spawn enemies
{
    private:
    bool _doorways[4];
    int _room_type;
    int _current_map[3][48][84];
    
    // Functions
    void overlap(int x, int y, int width, int height, int * object, int * map);
    void overlap_wall(int side);
    
    public:
    // Constructors
    Room(int no_of_enemies);
    // Deconstructors
    ~Room();
    
    // Accessors
    int * get_current_map_2d();
    
    // Functions
    void load();
    void unload();
    void draw_room(N5110 &lcd);
    void draw_room_overlay(N5110 &lcd);
    
    // Variables
    Entity *enemies[MAX_ENEMIES];
    bool valid_enemies[MAX_ENEMIES];
    int enemies_type[MAX_ENEMIES];
};

const int wall_x[2][11][3] = { // [E/W][Size_Y][Size_X]
    {   // E
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
        {1,2,2},
    },
    {   // W
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
        {2,2,1},
    }
};

const int wall_n[2][10][12] = { // [2d/3d][Size_Y][Size_X]
    {   // N
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {1,1,1,1,1,1,1,1,1,1,1,1,},
    },
    {   
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {1,1,1,1,1,1,1,1,1,1,1,1,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {1,1,1,1,1,1,1,1,1,1,1,1,},
    },
};

const int wall_s[2][3][12] = { // [2d/3d][Size_Y][Size_X]
    {
        {1,1,1,1,1,1,1,1,1,1,1,1,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
        {0,0,0,0,0,0,0,0,0,0,0,0,},
    },
    {
        {1,1,1,1,1,1,1,1,1,1,1,1,},
        {2,2,2,2,2,2,2,2,2,2,2,2,},
        {2,2,2,2,2,2,2,2,2,2,2,2,},
    },
};

#endif