Hugo Hu / Mbed 2 deprecated BRAVEHEART

Dependencies:   mbed N5110 ShiftReg PinDetect

Committer:
Siriagus
Date:
Mon May 11 03:52:18 2015 +0000
Revision:
17:d6a3b29cab31
Parent:
16:caf613d5b85e
Child:
18:709ea375b0df
Added sound effects ++

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 17:d6a3b29cab31 9 #include "Resources.h"
Siriagus 9:da608ae65df9 10 #include "Entity.h"
Siriagus 17:d6a3b29cab31 11 #include "Enemy.h"
Siriagus 11:adb68da98262 12 #include "map.h"
Siriagus 17:d6a3b29cab31 13 #include "Geometry.h" // Rectangle and Point structs
Siriagus 8:9ac6a428fa26 14 #include <vector>
Siriagus 17:d6a3b29cab31 15 #include <sstream>
Siriagus 17:d6a3b29cab31 16 #include "Global.h"
Siriagus 8:9ac6a428fa26 17
Siriagus 14:b4fed570abaf 18 #define TERMINAL_VELOCITY 3
Siriagus 14:b4fed570abaf 19
Siriagus 7:678873947b29 20
Siriagus 12:8178fad5e660 21 /// State: Game
Siriagus 5:100d960fc6d5 22 class Game : public State
Siriagus 5:100d960fc6d5 23 {
Siriagus 5:100d960fc6d5 24 public:
Siriagus 12:8178fad5e660 25 /// Creates the Game state
Siriagus 17:d6a3b29cab31 26 Game(StateManager* fsm, N5110 *lcd, InputManager* input, Sound *sound)
Siriagus 17:d6a3b29cab31 27 : State(fsm, lcd, input, sound) {init();}
Siriagus 17:d6a3b29cab31 28
Siriagus 17:d6a3b29cab31 29 /// Deconstructor: Frees all memory that was temporarely allocated by the Game state.
Siriagus 17:d6a3b29cab31 30 ~Game();
Siriagus 12:8178fad5e660 31
Siriagus 17:d6a3b29cab31 32 /// Handle input and update logic.
Siriagus 7:678873947b29 33 virtual void update(float dt);
Siriagus 12:8178fad5e660 34
Siriagus 17:d6a3b29cab31 35 /// Draw state to lcd.
Siriagus 7:678873947b29 36 virtual void render();
Siriagus 8:9ac6a428fa26 37
Siriagus 8:9ac6a428fa26 38
Siriagus 5:100d960fc6d5 39 private:
Siriagus 17:d6a3b29cab31 40 void init(); /// Sets some initial values
Siriagus 16:caf613d5b85e 41 void spawnEnemy(); /// Spawns a new enemy
Siriagus 16:caf613d5b85e 42 void moveEnemies(); /// Movement and AI for all enemies
Siriagus 17:d6a3b29cab31 43 void moveWithCollisionTest(Entity* entity, const int map[HEIGHT][WIDTH]); /// Moves entity in map. If collision occurs, entity can not move further.
Siriagus 15:d5eb13c4c1c6 44 bool hitTestRect(Rectangle r1, Rectangle r2); /// Returns true if two rectangles overlap
Siriagus 15:d5eb13c4c1c6 45 bool bulletHitMap(Rectangle &bulletColRect, const int map[HEIGHT][WIDTH]); /// Help function for detecting collision between moving bullet and map.
Siriagus 17:d6a3b29cab31 46 void renderScore(); /// Draws the current score in upper right corner
Siriagus 17:d6a3b29cab31 47 void respawnPlayer(); /// Respawns player at start position
Siriagus 17:d6a3b29cab31 48
Siriagus 17:d6a3b29cab31 49 int livesLeft; /// The number of lives left
Siriagus 17:d6a3b29cab31 50 bool paused; // True if the game is paused
Siriagus 17:d6a3b29cab31 51
Siriagus 17:d6a3b29cab31 52 int spawnRate; /// Probability of enemy spawning in a single frame/update.
Siriagus 17:d6a3b29cab31 53 static const int spawnPoints[3][2]; /// Positions where enemies can spawn.
Siriagus 17:d6a3b29cab31 54
Siriagus 12:8178fad5e660 55 Entity player; /// Player object
Siriagus 17:d6a3b29cab31 56 std::vector<Point*> bullets; /// Container for bullets
Siriagus 17:d6a3b29cab31 57 std::vector<Enemy*> enemies; /// Container for enemies
Siriagus 8:9ac6a428fa26 58
Siriagus 12:8178fad5e660 59 bool releasedBtnB; /// True if button B has been released after being pressed down
Siriagus 17:d6a3b29cab31 60 bool releasedBtnC; /// True if button C has been released after being pressed down
Siriagus 5:100d960fc6d5 61 };
Siriagus 5:100d960fc6d5 62
Siriagus 5:100d960fc6d5 63 #endif