Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Committer:
el17sm
Date:
Sat May 04 15:39:20 2019 +0000
Revision:
29:6b8411bb040a
Parent:
28:98848e6a77a2
added Room complete;; started Floor engine;; ; To do:; Floor generation;; More enemies;; Bosses;; Title Screen;; Score;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17sm 25:112cbcb0b4a7 1 #include "Room.h"
el17sm 26:abbc19edc5c1 2
el17sm 26:abbc19edc5c1 3 // Constructor
el17sm 28:98848e6a77a2 4 Room::Room(int no_of_enemies)
el17sm 26:abbc19edc5c1 5 {
el17sm 29:6b8411bb040a 6 for (int id = 0; id < MAX_ENEMIES; id++)
el17sm 27:a1b41626f57c 7 {
el17sm 29:6b8411bb040a 8 valid_enemies[id] = id < no_of_enemies;
el17sm 29:6b8411bb040a 9 if (id < no_of_enemies) {
el17sm 29:6b8411bb040a 10 enemies_type[id] = rand() % 2;
el17sm 29:6b8411bb040a 11 _enemy_coord[id][0] = 11 + (rand() % 60);
el17sm 29:6b8411bb040a 12 _enemy_coord[id][1] = 18 + (rand() % 19);
el17sm 28:98848e6a77a2 13 }
el17sm 27:a1b41626f57c 14 }
el17sm 29:6b8411bb040a 15
el17sm 28:98848e6a77a2 16 _room_type = 0;
el17sm 28:98848e6a77a2 17 _doorways[0] = true;
el17sm 28:98848e6a77a2 18 _doorways[1] = true;
el17sm 28:98848e6a77a2 19 _doorways[2] = true;
el17sm 28:98848e6a77a2 20 _doorways[3] = true;
el17sm 27:a1b41626f57c 21 }
el17sm 27:a1b41626f57c 22
el17sm 29:6b8411bb040a 23 // Deconstructor
el17sm 27:a1b41626f57c 24 Room::~Room()
el17sm 27:a1b41626f57c 25 {
el17sm 28:98848e6a77a2 26 terminate();
el17sm 27:a1b41626f57c 27 }
el17sm 27:a1b41626f57c 28
el17sm 27:a1b41626f57c 29 // Accessors
el17sm 27:a1b41626f57c 30 int * Room::get_current_map_2d(){
el17sm 29:6b8411bb040a 31 return ((int *)level_map[_room_type][0]);
el17sm 29:6b8411bb040a 32 }
el17sm 29:6b8411bb040a 33
el17sm 29:6b8411bb040a 34 bool * Room::get_doorways(){
el17sm 29:6b8411bb040a 35 return (bool *)_doorways;
el17sm 26:abbc19edc5c1 36 }
el17sm 26:abbc19edc5c1 37
el17sm 26:abbc19edc5c1 38 // Functions
el17sm 28:98848e6a77a2 39 void Room::load()
el17sm 26:abbc19edc5c1 40 {
el17sm 29:6b8411bb040a 41 for (int id = 0; id < MAX_ENEMIES; id++) {
el17sm 29:6b8411bb040a 42 if (valid_enemies[id]) {
el17sm 29:6b8411bb040a 43 switch(enemies_type[id]){
el17sm 28:98848e6a77a2 44 case 0 :
el17sm 29:6b8411bb040a 45 enemies[id] = new Headless(_enemy_coord[id][0], _enemy_coord[id][1]);
el17sm 28:98848e6a77a2 46 break;
el17sm 28:98848e6a77a2 47 case 1 :
el17sm 29:6b8411bb040a 48 enemies[id] = new Snake(_enemy_coord[id][0], _enemy_coord[id][1]);
el17sm 28:98848e6a77a2 49 break;
el17sm 28:98848e6a77a2 50 }
el17sm 29:6b8411bb040a 51 // for every enemy
el17sm 29:6b8411bb040a 52 // if (collision) {
el17sm 29:6b8411bb040a 53 // relocate enemy
el17sm 29:6b8411bb040a 54 // goto back
el17sm 29:6b8411bb040a 55 // }
el17sm 28:98848e6a77a2 56 }
el17sm 27:a1b41626f57c 57 }
el17sm 28:98848e6a77a2 58 }
el17sm 28:98848e6a77a2 59
el17sm 28:98848e6a77a2 60 void Room::unload()
el17sm 28:98848e6a77a2 61 {
el17sm 28:98848e6a77a2 62 for (int i = 0; i < MAX_ENEMIES; i++) {
el17sm 28:98848e6a77a2 63 if (valid_enemies[i]) {
el17sm 28:98848e6a77a2 64 delete enemies[i];
el17sm 28:98848e6a77a2 65 }
el17sm 28:98848e6a77a2 66 };
el17sm 26:abbc19edc5c1 67 }
el17sm 26:abbc19edc5c1 68
el17sm 27:a1b41626f57c 69 void Room::draw_room(N5110 &lcd)
el17sm 26:abbc19edc5c1 70 {
el17sm 29:6b8411bb040a 71 lcd.drawSprite(0, 0, screen_height, screen_width, (int *)level_map[_room_type][1]); // drawing 3d map
el17sm 29:6b8411bb040a 72 //draw_walls(lcd);
el17sm 29:6b8411bb040a 73
el17sm 29:6b8411bb040a 74 }
el17sm 29:6b8411bb040a 75
el17sm 29:6b8411bb040a 76 void Room::draw_walls(N5110 &lcd)
el17sm 29:6b8411bb040a 77 {
el17sm 29:6b8411bb040a 78 if(_doorways[0]) { // N
el17sm 29:6b8411bb040a 79 lcd.drawSprite(36, 0, 12, 10, (int *)wall_n);
el17sm 29:6b8411bb040a 80 }
el17sm 29:6b8411bb040a 81 if(_doorways[1]) { // E
el17sm 29:6b8411bb040a 82 lcd.drawSprite(81, 15, 3, 11, (int *)wall_x[0]);
el17sm 29:6b8411bb040a 83 }
el17sm 29:6b8411bb040a 84 if(_doorways[2]) { // S
el17sm 29:6b8411bb040a 85 lcd.drawSprite(36, 45, 12, 3, (int *)wall_s);
el17sm 29:6b8411bb040a 86 }
el17sm 29:6b8411bb040a 87 if(_doorways[3]) { // W
el17sm 29:6b8411bb040a 88 lcd.drawSprite(0, 15, 3, 11, (int *)wall_x[1]);
el17sm 29:6b8411bb040a 89 }
el17sm 26:abbc19edc5c1 90 }
el17sm 26:abbc19edc5c1 91
el17sm 27:a1b41626f57c 92 void Room::draw_room_overlay(N5110 &lcd)
el17sm 27:a1b41626f57c 93 {
el17sm 29:6b8411bb040a 94 lcd.drawSpriteTransparent(0, 0, screen_height, screen_width, (int *)level_map[_room_type][2]); // drawing 3d map overlay
el17sm 29:6b8411bb040a 95 //draw_walls_overlay(lcd);
el17sm 28:98848e6a77a2 96 }
el17sm 28:98848e6a77a2 97
el17sm 29:6b8411bb040a 98 void Room::draw_walls_overlay(N5110 &lcd)
el17sm 28:98848e6a77a2 99 {
el17sm 29:6b8411bb040a 100 if(_doorways[0]) { // N
el17sm 29:6b8411bb040a 101 lcd.drawSpriteTransparent(36, 0, 12, 10, (int *)wall_n);
el17sm 29:6b8411bb040a 102 }
el17sm 29:6b8411bb040a 103 if(_doorways[1]) { // E
el17sm 29:6b8411bb040a 104 lcd.drawSpriteTransparent(81, 15, 3, 11, (int *)wall_x[0]);
el17sm 29:6b8411bb040a 105 }
el17sm 29:6b8411bb040a 106 if(_doorways[2]) { // S
el17sm 29:6b8411bb040a 107 lcd.drawSpriteTransparent(36, 45, 12, 3, (int *)wall_s);
el17sm 29:6b8411bb040a 108 }
el17sm 29:6b8411bb040a 109 if(_doorways[3]) { // W
el17sm 29:6b8411bb040a 110 lcd.drawSpriteTransparent(0, 15, 3, 11, (int *)wall_x[1]);
el17sm 28:98848e6a77a2 111 }
el17sm 27:a1b41626f57c 112 }