A rouge-like rpg, heavily inspired on the binding of isaac. Running on a FRDM-K64F Mbed board. C++.
Dependencies: mbed MotionSensor
Entity/Entity.h
- Committer:
- el17sm
- Date:
- 2019-04-23
- Revision:
- 12:a1c1991835ca
- Parent:
- 11:63e54f6e7939
- Child:
- 13:d04a6caba40d
File content as of revision 12:a1c1991835ca:
#ifndef ENTITY_H #define ENTITY_H #include "sprites.h" #include "math.h" class Entity { protected: bool moving; struct Hitbox { int width; int height; }; Hitbox hitbox; struct SpriteSize { int width; int height; // Top-left corner of sprite is offset_x // to the right of top-left corner of hitbox int offset_x; // Top-left corner of sprite is offset_y // above of top-left corner of hitbox int offset_y; }; SpriteSize sprite_size; struct Position { float x; float y; }; Position position; Position prev_pos; struct FrameCount { int count; int number; int max; }; FrameCount frame; int hp; int face; public: // Functions bool matrix_collision_test(float pos_x, float pos_y, int map_no){ for (int j = pos_y; j < (int)pos_y + hitbox.height; j++){ for(int i = pos_x; i < (int)pos_x + hitbox.width; i++){ if ((j>=48) || (i>=84) || (j<0) || (i<0)) {} else if ((level_map[0][j][i] == 1)) { return true; } } } return false; } virtual void move(float, float) = 0; // movement control and miscellaneous updates virtual int * get_frame() = 0; virtual void chkdmg() = 0; void undo_move_x(bool status_x){ if (status_x){ position.x = prev_pos.x; } } void undo_move_y(bool status_y){ if (status_y){ position.y = prev_pos.y; } } void update_prev_pos(); // Accessors bool get_moving(); int get_hitbox_width(); int get_hitbox_height(); int get_face(); int get_sprite_width(); int get_sprite_height(); int get_offset_x(); int get_offset_y(); int get_pos_x(); int get_pos_y(); int get_prev_pos_x(); int get_prev_pos_y(); }; #endif