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

Dependencies:   mbed MotionSensor

Committer:
el17sm
Date:
Tue May 07 17:02:30 2019 +0000
Revision:
41:0697508a28ba
Parent:
40:cbcbf6fc1421
Child:
44:cc4cecfc639f
Added room types and wall entity

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17sm 25:112cbcb0b4a7 1 #ifndef ROOM_H
el17sm 25:112cbcb0b4a7 2 #define ROOM_H
el17sm 27:a1b41626f57c 3 #include "sprites.h"
el17sm 29:6b8411bb040a 4
el17sm 26:abbc19edc5c1 5 #include "Entity.h"
el17sm 25:112cbcb0b4a7 6 #include "Player.h"
el17sm 25:112cbcb0b4a7 7 #include "Headless.h"
el17sm 25:112cbcb0b4a7 8 #include "Snake.h"
el17sm 36:92d131695e7c 9 #include "Skull.h"
el17sm 40:cbcbf6fc1421 10 #include "Walls.h"
el17sm 29:6b8411bb040a 11
el17sm 26:abbc19edc5c1 12 #include "N5110.h"
el17sm 25:112cbcb0b4a7 13
el17sm 26:abbc19edc5c1 14 #define MAX_ENEMIES 10
el17sm 26:abbc19edc5c1 15
el17sm 26:abbc19edc5c1 16 class Room // contains the type of room, number of enemies inside it, the doorways existing in the room, functions to spawn enemies
el17sm 25:112cbcb0b4a7 17 {
el17sm 29:6b8411bb040a 18 private:
el17sm 27:a1b41626f57c 19 bool _doorways[4];
el17sm 28:98848e6a77a2 20 int _room_type;
el17sm 29:6b8411bb040a 21 int _enemy_coord[MAX_ENEMIES][2]; // _enemy_coord[EnemyID][x/y]
el17sm 41:0697508a28ba 22 char _wall_stat[2][4]; // _wall_coord[WallID][x/y/width/height]
el17sm 27:a1b41626f57c 23
el17sm 27:a1b41626f57c 24 // Functions
el17sm 41:0697508a28ba 25 void draw_doorways(N5110 &lcd);
el17sm 41:0697508a28ba 26 void draw_doorways_overlay(N5110 &lcd);
el17sm 41:0697508a28ba 27 void draw_enemies(N5110 &lcd, int j);
el17sm 41:0697508a28ba 28 void draw_collectibles(N5110 &lcd, int j);
el17sm 41:0697508a28ba 29 void draw_walls(N5110 &lcd, int j);
el17sm 41:0697508a28ba 30 void init_normal_room();
el17sm 41:0697508a28ba 31 void init_middle_walled_room();
el17sm 41:0697508a28ba 32 void init_side_walled_room();
el17sm 41:0697508a28ba 33 void init_boss_room();
el17sm 25:112cbcb0b4a7 34
el17sm 29:6b8411bb040a 35 public:
el17sm 26:abbc19edc5c1 36 // Constructors
el17sm 36:92d131695e7c 37 Room(int no_of_enemies, int room_type);
el17sm 27:a1b41626f57c 38 // Deconstructors
el17sm 27:a1b41626f57c 39 ~Room();
el17sm 27:a1b41626f57c 40
el17sm 27:a1b41626f57c 41 // Accessors
el17sm 34:1d5b4da3935e 42 char * get_current_map_2d();
el17sm 29:6b8411bb040a 43 bool * get_doorways();
el17sm 25:112cbcb0b4a7 44
el17sm 26:abbc19edc5c1 45 // Functions
el17sm 28:98848e6a77a2 46 void load();
el17sm 28:98848e6a77a2 47 void unload();
el17sm 27:a1b41626f57c 48 void draw_room(N5110 &lcd);
el17sm 27:a1b41626f57c 49 void draw_room_overlay(N5110 &lcd);
el17sm 41:0697508a28ba 50 void draw(N5110 &lcd, int j);
el17sm 26:abbc19edc5c1 51
el17sm 26:abbc19edc5c1 52 // Variables
el17sm 26:abbc19edc5c1 53 Entity *enemies[MAX_ENEMIES];
el17sm 26:abbc19edc5c1 54 bool valid_enemies[MAX_ENEMIES];
el17sm 36:92d131695e7c 55 Entity *collectibles[MAX_ENEMIES];
el17sm 36:92d131695e7c 56 bool valid_collectibles[MAX_ENEMIES];
el17sm 41:0697508a28ba 57 Entity *walls[2];
el17sm 41:0697508a28ba 58 bool valid_walls[2];
el17sm 28:98848e6a77a2 59 int enemies_type[MAX_ENEMIES];
el17sm 25:112cbcb0b4a7 60 };
el17sm 25:112cbcb0b4a7 61
el17sm 33:4f3948dcd2f7 62 const char wall_x[2][11][3] = { // [E/W][Size_Y][Size_X]
el17sm 27:a1b41626f57c 63 { // E
el17sm 28:98848e6a77a2 64 {1,2,2},
el17sm 28:98848e6a77a2 65 {1,2,2},
el17sm 28:98848e6a77a2 66 {1,2,2},
el17sm 28:98848e6a77a2 67 {1,2,2},
el17sm 28:98848e6a77a2 68 {1,2,2},
el17sm 28:98848e6a77a2 69 {1,2,2},
el17sm 28:98848e6a77a2 70 {1,2,2},
el17sm 28:98848e6a77a2 71 {1,2,2},
el17sm 28:98848e6a77a2 72 {1,2,2},
el17sm 28:98848e6a77a2 73 {1,2,2},
el17sm 28:98848e6a77a2 74 {1,2,2},
el17sm 27:a1b41626f57c 75 },
el17sm 27:a1b41626f57c 76 { // W
el17sm 28:98848e6a77a2 77 {2,2,1},
el17sm 28:98848e6a77a2 78 {2,2,1},
el17sm 28:98848e6a77a2 79 {2,2,1},
el17sm 28:98848e6a77a2 80 {2,2,1},
el17sm 28:98848e6a77a2 81 {2,2,1},
el17sm 28:98848e6a77a2 82 {2,2,1},
el17sm 28:98848e6a77a2 83 {2,2,1},
el17sm 28:98848e6a77a2 84 {2,2,1},
el17sm 28:98848e6a77a2 85 {2,2,1},
el17sm 28:98848e6a77a2 86 {2,2,1},
el17sm 28:98848e6a77a2 87 {2,2,1},
el17sm 27:a1b41626f57c 88 }
el17sm 27:a1b41626f57c 89 };
el17sm 27:a1b41626f57c 90
el17sm 33:4f3948dcd2f7 91 const char wall_n[10][12] = { // [Size_Y][Size_X]
el17sm 29:6b8411bb040a 92 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 93 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 94 {1,1,1,1,1,1,1,1,1,1,1,1,},
el17sm 29:6b8411bb040a 95 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 96 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 97 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 98 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 99 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 100 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 29:6b8411bb040a 101 {1,1,1,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 102 };
el17sm 27:a1b41626f57c 103
el17sm 33:4f3948dcd2f7 104 const char wall_s[3][12] = { // [Size_Y][Size_X]
el17sm 29:6b8411bb040a 105 {1,1,1,1,1,1,1,1,1,1,1,1,},
el17sm 29:6b8411bb040a 106 {2,2,2,2,2,2,2,2,2,2,2,2,},
el17sm 29:6b8411bb040a 107 {2,2,2,2,2,2,2,2,2,2,2,2,},
el17sm 27:a1b41626f57c 108 };
el17sm 27:a1b41626f57c 109
el17sm 25:112cbcb0b4a7 110 #endif