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:
Thu May 09 09:50:19 2019 +0000
Revision:
57:1c12361b6e3d
Parent:
51:4d0cd75e7ed3
All protected member has a _ before them

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17sm 7:4aaa37a711a1 1 #include "Entity.h"
el17sm 7:4aaa37a711a1 2
el17sm 28:98848e6a77a2 3 // Functions
el17sm 51:4d0cd75e7ed3 4 void Entity::undo_move_x(bool condition)
el17sm 22:7abf4581bc9b 5 {
el17sm 51:4d0cd75e7ed3 6 if (condition) {
el17sm 57:1c12361b6e3d 7 _position.x = _prev_pos.x;
el17sm 13:d04a6caba40d 8 }
el17sm 13:d04a6caba40d 9 }
el17sm 51:4d0cd75e7ed3 10 void Entity::undo_move_y(bool condition)
el17sm 22:7abf4581bc9b 11 {
el17sm 51:4d0cd75e7ed3 12 if (condition) {
el17sm 57:1c12361b6e3d 13 _position.y = _prev_pos.y;
el17sm 13:d04a6caba40d 14 }
el17sm 13:d04a6caba40d 15 }
el17sm 22:7abf4581bc9b 16 void Entity::update_prev_pos()
el17sm 22:7abf4581bc9b 17 {
el17sm 57:1c12361b6e3d 18 _prev_pos = _position;
el17sm 26:abbc19edc5c1 19 }
el17sm 7:4aaa37a711a1 20
el17sm 51:4d0cd75e7ed3 21 bool Entity::entity_to_map_collision_test(float pos_x, float pos_y, char * two_d_map, bool * doorways) // Returns true if the entity clashes a wall
el17sm 27:a1b41626f57c 22 {
el17sm 57:1c12361b6e3d 23 for (int j = pos_y; j < (int)pos_y + _hitbox.height; j++) {
el17sm 57:1c12361b6e3d 24 for(int i = pos_x; i < (int)pos_x + _hitbox.width; i++) {
el17sm 27:a1b41626f57c 25 if ((j>=screen_height) || (i>=screen_width) || (j<0) || (i<0)) {} // To allow movement towards outside of the map
el17sm 51:4d0cd75e7ed3 26 else if (*((two_d_map+j*screen_width)+i) == 1) { // if entity clashes the 2d map
el17sm 13:d04a6caba40d 27 return true;
el17sm 13:d04a6caba40d 28 }
el17sm 29:6b8411bb040a 29
el17sm 29:6b8411bb040a 30 // Checking if the player walks into a wall if no doorway on that side exists
el17sm 41:0697508a28ba 31 else if ( !(*(doorways)) && (pos_y <= 10) ) {
el17sm 29:6b8411bb040a 32 return true;
el17sm 29:6b8411bb040a 33 }
el17sm 57:1c12361b6e3d 34 else if ( !(*(doorways+1)) && (pos_x + _hitbox.width - 1 >= 81) ) {
el17sm 29:6b8411bb040a 35 return true;
el17sm 29:6b8411bb040a 36 }
el17sm 57:1c12361b6e3d 37 else if ( !(*(doorways+2)) && (pos_y + _hitbox.height - 1 >= 45) ) {
el17sm 29:6b8411bb040a 38 return true;
el17sm 29:6b8411bb040a 39 }
el17sm 41:0697508a28ba 40 else if ( !(*(doorways+3)) && (pos_x <= 3) ) {
el17sm 29:6b8411bb040a 41 return true;
el17sm 29:6b8411bb040a 42 }
el17sm 13:d04a6caba40d 43 }
el17sm 13:d04a6caba40d 44 }
el17sm 13:d04a6caba40d 45 return false;
el17sm 13:d04a6caba40d 46 }
el17sm 13:d04a6caba40d 47
el17sm 29:6b8411bb040a 48 // Mutators
el17sm 7:4aaa37a711a1 49
el17sm 28:98848e6a77a2 50 void Entity::set_position(float x, float y)
el17sm 28:98848e6a77a2 51 {
el17sm 57:1c12361b6e3d 52 _position.x = x;
el17sm 57:1c12361b6e3d 53 _position.y = y;
el17sm 28:98848e6a77a2 54 }
el17sm 28:98848e6a77a2 55
el17sm 24:26369d92a06a 56 void Entity::position_add_x(float change_x)
el17sm 24:26369d92a06a 57 {
el17sm 57:1c12361b6e3d 58 _position.x += change_x;
el17sm 24:26369d92a06a 59 }
el17sm 24:26369d92a06a 60 void Entity::position_add_y(float change_y)
el17sm 24:26369d92a06a 61 {
el17sm 57:1c12361b6e3d 62 _position.y += change_y;
el17sm 24:26369d92a06a 63 }
el17sm 24:26369d92a06a 64
el17sm 51:4d0cd75e7ed3 65 // Accessors
el17sm 28:98848e6a77a2 66 int Entity::get_hp_drop_chance()
el17sm 28:98848e6a77a2 67 {
el17sm 28:98848e6a77a2 68 return _hp_drop_chance;
el17sm 28:98848e6a77a2 69 }
el17sm 22:7abf4581bc9b 70 int Entity::get_hitbox_width()
el17sm 22:7abf4581bc9b 71 {
el17sm 57:1c12361b6e3d 72 return _hitbox.width;
el17sm 22:7abf4581bc9b 73 }
el17sm 22:7abf4581bc9b 74 int Entity::get_hitbox_height()
el17sm 22:7abf4581bc9b 75 {
el17sm 57:1c12361b6e3d 76 return _hitbox.height;
el17sm 22:7abf4581bc9b 77 }
el17sm 22:7abf4581bc9b 78 int Entity::get_face()
el17sm 22:7abf4581bc9b 79 {
el17sm 57:1c12361b6e3d 80 return _face;
el17sm 22:7abf4581bc9b 81 }
el17sm 22:7abf4581bc9b 82 int Entity::get_sprite_width()
el17sm 22:7abf4581bc9b 83 {
el17sm 57:1c12361b6e3d 84 return _sprite_size.width;
el17sm 22:7abf4581bc9b 85 }
el17sm 22:7abf4581bc9b 86 int Entity::get_sprite_height()
el17sm 22:7abf4581bc9b 87 {
el17sm 57:1c12361b6e3d 88 return _sprite_size.height;
el17sm 22:7abf4581bc9b 89 }
el17sm 22:7abf4581bc9b 90 int Entity::get_offset_x()
el17sm 22:7abf4581bc9b 91 {
el17sm 57:1c12361b6e3d 92 return _sprite_size.offset_x;
el17sm 22:7abf4581bc9b 93 }
el17sm 22:7abf4581bc9b 94 int Entity::get_offset_y()
el17sm 22:7abf4581bc9b 95 {
el17sm 57:1c12361b6e3d 96 return _sprite_size.offset_y;
el17sm 22:7abf4581bc9b 97 }
el17sm 22:7abf4581bc9b 98 int Entity::get_pos_x()
el17sm 22:7abf4581bc9b 99 {
el17sm 57:1c12361b6e3d 100 return _position.x;
el17sm 22:7abf4581bc9b 101 }
el17sm 22:7abf4581bc9b 102 int Entity::get_pos_y()
el17sm 22:7abf4581bc9b 103 {
el17sm 57:1c12361b6e3d 104 return _position.y;
el17sm 22:7abf4581bc9b 105 }
el17sm 22:7abf4581bc9b 106 int Entity::get_prev_pos_x()
el17sm 22:7abf4581bc9b 107 {
el17sm 57:1c12361b6e3d 108 return _prev_pos.x;
el17sm 22:7abf4581bc9b 109 }
el17sm 22:7abf4581bc9b 110 int Entity::get_prev_pos_y()
el17sm 22:7abf4581bc9b 111 {
el17sm 57:1c12361b6e3d 112 return _prev_pos.y;
el17sm 23:5a8f75e93508 113 }
el17sm 23:5a8f75e93508 114 int Entity::get_attack()
el17sm 23:5a8f75e93508 115 {
el17sm 57:1c12361b6e3d 116 return _attack;
el17sm 23:5a8f75e93508 117 }
el17sm 23:5a8f75e93508 118 int Entity::get_hp()
el17sm 23:5a8f75e93508 119 {
el17sm 57:1c12361b6e3d 120 return _hp;
el17sm 28:98848e6a77a2 121 }
el17sm 28:98848e6a77a2 122 float Entity::get_velocity()
el17sm 28:98848e6a77a2 123 {
el17sm 57:1c12361b6e3d 124 return _velocity;
el17sm 22:7abf4581bc9b 125 }