Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MotionSensor
Room/Room.cpp@29:6b8411bb040a, 2019-05-04 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |