Hugo Hu / Mbed 2 deprecated BRAVEHEART

Dependencies:   mbed N5110 ShiftReg PinDetect

Committer:
Siriagus
Date:
Sun May 10 09:37:51 2015 +0000
Revision:
15:d5eb13c4c1c6
Parent:
14:b4fed570abaf
Child:
16:caf613d5b85e
Enemy - bullet collison + entities can walk upwards slopes or climb walls with a height smaller than themselves.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Siriagus 5:100d960fc6d5 1 #ifndef GAME_H
Siriagus 5:100d960fc6d5 2 #define GAME_H
Siriagus 5:100d960fc6d5 3
Siriagus 12:8178fad5e660 4 /** @file Game.h
Siriagus 12:8178fad5e660 5 * @author Andreas Garmannslund
Siriagus 12:8178fad5e660 6 */
Siriagus 12:8178fad5e660 7
Siriagus 7:678873947b29 8 #include "State.h"
Siriagus 8:9ac6a428fa26 9 #include "Resources.h" // TODO: Move to State.h ?
Siriagus 9:da608ae65df9 10 #include "Entity.h"
Siriagus 11:adb68da98262 11 #include "map.h"
Siriagus 8:9ac6a428fa26 12 #include <vector>
Siriagus 8:9ac6a428fa26 13
Siriagus 14:b4fed570abaf 14 #define TERMINAL_VELOCITY 3
Siriagus 14:b4fed570abaf 15
Siriagus 12:8178fad5e660 16 /// Simple objects with a position (x,y) and velocity (vx, vy)
Siriagus 8:9ac6a428fa26 17 struct Point
Siriagus 8:9ac6a428fa26 18 {
Siriagus 8:9ac6a428fa26 19 int x;
Siriagus 8:9ac6a428fa26 20 int y;
Siriagus 9:da608ae65df9 21 int vx, vy;
Siriagus 8:9ac6a428fa26 22 };
Siriagus 7:678873947b29 23
Siriagus 15:d5eb13c4c1c6 24 struct Rectangle
Siriagus 15:d5eb13c4c1c6 25 {
Siriagus 15:d5eb13c4c1c6 26 Rectangle(int x, int y, int w, int h) : x(x), y(y), width(w), height(h) {}
Siriagus 15:d5eb13c4c1c6 27 int x;
Siriagus 15:d5eb13c4c1c6 28 int y;
Siriagus 15:d5eb13c4c1c6 29 int width;
Siriagus 15:d5eb13c4c1c6 30 int height;
Siriagus 15:d5eb13c4c1c6 31 };
Siriagus 12:8178fad5e660 32 /// State: Game
Siriagus 5:100d960fc6d5 33 class Game : public State
Siriagus 5:100d960fc6d5 34 {
Siriagus 5:100d960fc6d5 35 public:
Siriagus 12:8178fad5e660 36 /// Creates the Game state
Siriagus 5:100d960fc6d5 37 Game(StateManager* fsm, N5110 *lcd, InputManager* input)
Siriagus 9:da608ae65df9 38 : State(fsm, lcd, input) {init();}
Siriagus 12:8178fad5e660 39
Siriagus 12:8178fad5e660 40 /// Handle input and update logic
Siriagus 7:678873947b29 41 virtual void update(float dt);
Siriagus 12:8178fad5e660 42
Siriagus 12:8178fad5e660 43 /// Draw state to lcd
Siriagus 7:678873947b29 44 virtual void render();
Siriagus 8:9ac6a428fa26 45
Siriagus 8:9ac6a428fa26 46
Siriagus 5:100d960fc6d5 47 private:
Siriagus 13:7ab71c7c311b 48 /// Moves entity in map. If collision occurs, entity can not move further
Siriagus 13:7ab71c7c311b 49 void moveWithCollisionTest(Entity* entity, const int map[HEIGHT][WIDTH]);
Siriagus 15:d5eb13c4c1c6 50 bool hitTestRect(Rectangle r1, Rectangle r2); /// Returns true if two rectangles overlap
Siriagus 15:d5eb13c4c1c6 51 bool bulletHitMap(Rectangle &bulletColRect, const int map[HEIGHT][WIDTH]); /// Help function for detecting collision between moving bullet and map.
Siriagus 13:7ab71c7c311b 52
Siriagus 12:8178fad5e660 53 void init(); /// Sets some initial values
Siriagus 12:8178fad5e660 54 Entity player; /// Player object
Siriagus 15:d5eb13c4c1c6 55 Enemy *enemy; /// Enemy object
Siriagus 8:9ac6a428fa26 56
Siriagus 12:8178fad5e660 57 bool releasedBtnB; /// True if button B has been released after being pressed down
Siriagus 15:d5eb13c4c1c6 58 bool releasedBtnC;
Siriagus 15:d5eb13c4c1c6 59 bool paused; // True if the game is paused
Siriagus 15:d5eb13c4c1c6 60
Siriagus 12:8178fad5e660 61
Siriagus 12:8178fad5e660 62 std::vector<Point*> bullets; /// Container for bullets
Siriagus 5:100d960fc6d5 63 };
Siriagus 5:100d960fc6d5 64
Siriagus 5:100d960fc6d5 65 #endif