Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

GameEngine/GameEngine.h

Committer:
evanso
Date:
2020-05-15
Revision:
34:85ccc16f24d2
Parent:
33:7fedd8029473
Child:
36:27aa597db3d2

File content as of revision 34:85ccc16f24d2:

#ifndef GAMEENGINE_H
#define GAMEENGINE_H
 
// Included libraries ----------------------------------------------------------
#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "Spaceship.h"
#include "Map.h"
#include "Weapons.h"
#include "Alien.h"
#include "Explosion.h"
#include "People.h"
#include <cmath>
#include <vector>
 
/** GameEngine class
 * @brief Runs the different parts of the game 
 * @author Benjamin Evans, University of Leeds
 * @date April 2020
 */
class GameEngine {
    public:
        /** Constructor */
        GameEngine();
        
        /** Destructor */
        ~GameEngine();
        
        /** Initalises GameEngine */
        void init();
        
        /** Main gameplay loop that runs playable part of game */
        void gameplay_loop();
        
    // Accessors and mutators --------------------------------------------------
          
    private:
    // Function prototypes -----------------------------------------------------
        
        /** Gets joystick direction from gamepad and stores it in d_ */
        void read_joystick_direction();
        
        /** Creats weapons object if button A is pressed and stores in vector */
        void create_weapons();
       
        /** Draws each bullet object and deleted object after set movement 
         * distance
         */
        void draw_bullets();
        
        /** Creats alien object and stores in vector*/
        void create_alien();
        
        /** Draws each alien object and deletes both objects if collision 
         * detected 
         */
        void draw_aliens();
        
        /** Creats bullet object if button A is pressed and stores in vector */
        void create_explosion(Vector2D destroyed_position);
       
        /** Draws each explosion object if collision detected */
        void draw_explosions();
        
        /** Resets the map after spaceship death*/
        void reset_map();
        
        /** Spawns aliens in random position of the screen*/
        void spawn_aliens();
        
        /** Spawns people in random position at bottom of the screen*/
        void create_people();
        
        /** Draws each people object */
        void draw_people();
        
        /** Spawns people in random places at bottom of screen*/
        void spawn_people();
        
    // Variables ---------------------------------------------------------------
        
        /** Define direction d of joystick*/
        Direction d_; 
        
        /** Number of spaceship lives remaining*/
        int spaceship_lives;
        
        /** Flag for if spaceship is destroyed*/
        bool spaceship_destroyed;
        
        /** Counter to reset map after set amount of frames*/
        int reset_map_counter;
        
        /** Counter for how smart bombs left*/
        int smart_bomb_counter;
        
        /** Counter for spawning aliens*/
        double spawn_alien_rate;
        
        /** Counter for spawning aliens*/
        int spawn_alien_counter;
        
        /** Counter for numeber of aliens*/
        int alien_number_counter;
        
    // Vectors -----------------------------------------------------------------  
        
        /** Vector to store each new bullet object*/
        std::vector<Weapons> bullet_vector;
        
        /** Vector to store each alien bullet object*/
        std::vector<Weapons> alien_bullet_vector;
        
        /** Vector to store each new alien object*/
        std::vector<Alien> alien_vector;
        
        /** Vector to store each new eplosion object*/
        std::vector<Explosion> explosion_vector;
        
        /** Vector to store each new people object*/
        std::vector<People> people_vector;
        
    // Objects -----------------------------------------------------------------
        
        /** Define Gamepad object*/ 
        Gamepad pad;
        
        /** Define LCD object*/
        N5110 lcd;
        
        /** Define Spaceship object */
        Spaceship spaceship;
        
        /** Define Map object*/
        Map map; 
        
        /** Define Weapons object*/
        Weapons weapons;
};
 
#endif