Skip to content
Snippets Groups Projects
soldier.h 2.47 KiB
#ifndef __SOLDIER_H__
#define __SOLDIER_H__

#include "constant.h"
#include "sprite.h"
#include <SDL2/SDL.h>


struct bullet_s{
    sprite_t sprite; /*!<Sprite de la balle */
    int shoot; /*!<Indique si la balle est tirée */
    char sens; /*!<Indique le sens de la balle */
    SDL_Rect DestBullet;
};
/**
 * \brief Type qui correspond au paramètre de la balle
*/
typedef struct bullet_s bullet_t;

/**
 * \brief Paramètre du soldat
*/
struct soldier_s{
    sprite_t sprite; /*!<Sprite du soldat */
    int hp;     /*!<Point de vie */
    int state_jump; /*!<Indique si le soldat saute */
    int is_walking; /*!<Indique si le soldat marche */
    int is_crouching; /*!<Indique si le soldat est accroupie */ 
    int is_looking_up; /*!<Indique si le soldat regarde vers le haut */ 
    int direction; /*!<Indique la direction du soldat */
    int walk_counter; /*!<Compteur pour la marche du soldat */
    int jump_counter; /*!<Compteur pour le saut du soldat */
    
    int wait_time_walk;
    SDL_Rect DestSoldier;
    bullet_t charger[NB_BULLET]; /*!<Chargeur de l arme du soldat */
    int time_bullet; /*!<Temps entre chaque balle */
    int time_reload; /*!<Temps de rechargement*/
    int present_bullet; /*!<Indique la balle presente dans l arme*/
};
/**
 * \brief Type qui correspond au paramètre du soldat
*/
typedef struct soldier_s soldier_t;

/**
 * \brief Initialise le soldat
 * \param soldat
  * \param hp point de vie du soldat
 */
void init_soldier(soldier_t *soldier, int hp);

/**
 * \brief Permet au soldat de sauter
 * \param soldat
 */
void jump(soldier_t *soldier);

/**
 * \brief Initialise le chargeur du soldat
 * \param soldat
 */
void init_bullet(soldier_t *soldier);

/**
 * \brief Permet au soldat de tirer
 * \param soldat
 */
void shoot(soldier_t *soldier);
/**
 * \brief Permet au balle de continuer d avancer apres avoir etait tirer
 * \param soldat
 */
void shootAfterE(soldier_t *soldier);

/**
 * \brief Permet au soldat de marcher vers la droite
 * \param soldat
 */
void walk_right(soldier_t *soldier);

/**
 * \brief Permet au soldat de marcher vers la gauche
 * \param soldat
 */
void walk_left(soldier_t *soldier);

/**
 * \brief Set le direction de la balle vers la droite
 * \param soldat
 */
void setBulletD(soldier_t *soldier);

/**
 * \brief Set le direction de la balle vers la gauche
 * \param soldat
 */
void setBulletG(soldier_t *soldier);

/**
 * \brief Set le direction de la balle vers le haut
 * \param soldat
 */
void setBulletH(soldier_t *soldier);


#endif