Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Weapons/Weapons.h

Committer:
evanso
Date:
2020-05-13
Revision:
28:a5958497d5ce
Parent:
27:8bb2bd97c319
Child:
31:6015e8ed859c

File content as of revision 28:a5958497d5ce:

#ifndef WEAPONS_H
#define WEAPONS_H
 
// Included libraries ----------------------------------------------------------
#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "RandomMovement.h"

/** Weapons class
 * @brief Draws and moves weapons 
 * @author Benjamin Evans, University of Leeds
 * @date April 2020
 */
class Weapons: private RandomMovement {
    public:
        /** Constructor */
        Weapons();
        
        /** Destructor */
        ~Weapons();
        
        /** Initalises Weapons 
         * @param sprite_pos @details vector 2D of sprite xy position 
         * @param sprite_direction @details sprite direction bool, 
         * true = E, false = W
         * @param bullet_type @details true = spaceship, false = alien
         */
        void init(Vector2D sprite_pos, bool sprite_direction,bool bullet_type);
        
        /** Draws the bullet and moves it in x direction each frame
         * @param lcd @details N5110 object
         */
        void draw_bullet(N5110 &lcd);
        
         /** Draws the aliens bullet and moves it in xy direction each frame
         * @param lcd @details N5110 object
         * @param d_ @details : Direction object of joystick
         */
        void draw_alien_bullet(N5110 &lcd, Direction d_);
         
    // Accessors and mutators --------------------------------------------------
          
        /** Gets the xy position of the bullet 
         * @return position_x_bullet_
         * @return position_x_bullet_
         */
        Vector2D get_pos_one();
        
        /** sets the xy position of the bullet
         * @param pos @details vector 2D of bullet xy position 
         */
        void set_pos_one(Vector2D pos);
        
        /** Gets the 2nd xy position of the bullet for colition detection 
         * @return position_x_bullet_ + 1 
         * @return position_x_bullet_
         */
        Vector2D get_pos_two();
        
        /** Gets the bullet distance counter 
         * @return bullet_distance_counter
         */
        int get_bullet_delete_counter();
        
        /** Gets the bullet direction
         * @return bullet_direction_
         */
        bool get_direction();
        
        /** Sets the bullets movment direction when it is fired
         * @param spaceship_sprite_direction_ @details sprite direction bool, 
         * true = E, false = W
         */
        void set_direction(bool sprite_direction_);
        
    private:
    // Function prototypes -----------------------------------------------------
    
        /** Calculates bullets start postion
         * @param spaceship_pos @details x and y postion of spaceship
         * @param spaceship_sprite_direction_ @details sprite direction bool, 
         * true = E, false = W
         */
        void calc_bullets_start_pos(Vector2D spaceship_pos, 
        bool spaceship_sprite_direction_);
        
        /** Calculates allien bullets start postion
         * @param alien_pos @details x and y postion of spaceship
         * @param alien_sprite_direction_ @details sprite direction bool, 
         * true = E, false = W
         */
        void calc_alien_bullets_start_pos(Vector2D alien_pos, 
        bool alien_sprite_direction_);
        
        /** Calulates the bullet movement depeding on spaceship positions and 
         * joystick input 
         * @param d_ @details : Direction object of joystick
         * @retrun integer @details move bullet value for bullet draw function 
         */
        int calc_bullet_movement(Direction d_);
    
    // Variables ---------------------------------------------------------------
        
        /** Counter to deleted bullet */
        int bullet_delete_counter_; 
};
 
#endif