Skip to content
Snippets Groups Projects
sprite.h 2.17 KiB
#ifndef __SPRITE_H__
#define __SPRITE_H__

#include "constant.h"
#include "math.h" //Nécessaire pour la collision entre deux sprites
#include <SDL2/SDL.h>
#include <stdlib.h>
#include <time.h>

/**
 * \brief Paramètre du sprite
*/
struct sprite_s{
    float x;    /*!<Position x de son centre */
    float y;    /*!<Position y de son centre */
    float h;    /*!<Hauteur du sprite */
    float w;    /*!<Largeur du sprite */
    float v;    /*!<Vitesse vertical */
    int is_visible; /*!<Visible ou non, 0 si invisible et 1 si visible */
    int hp;	/*!<Point de vie */
};
/**
 * \brief Type qui correspond au paramètre du sprite
*/
typedef struct sprite_s sprite_t;

/**
 * \brief Définit tous les paramètres d'un sprite
 * \param sprite
 * \param x la position en x
 * \param y la position en y
 * \param w la largeur w 
 * \param h la hauteur h
 * \param v la vitesse v
 * \param hp les points de vie hp
 */
void init_sprite(sprite_t *sprite, int x, int y, int w, int h, float v,int hp);

/**
 * \brief Rend visible le sprite
 * \param sprite
 */
void set_visible(sprite_t *sprite);

/**
 * \brief Rend invisible le sprite
 * \param sprite
 */
void set_invisible(sprite_t *sprite);

/**
 * \brief Retourne 1 si le sprite touche le bord gauche de l'écran sinon retourne 0
 * \param sprite
 */
int over_left (sprite_t*sprite);

/**
 * \brief Retourne 1 si le sprite touche le bord droit de l'écran sinon retourne 0
 * \param sprite
 */
int over_right (sprite_t*sprite);

/**
 * \brief Affiche tous les paramètres du sprite
 * \param sprite
 */
void print_sprite(sprite_t*sprite);

/**
 * \brief La fonction qui détecte si deux sprites sont en collision
 * \param sp2 et sp1 les deux sprites
 * \return 1 si les sprites se collisionnent, 0 sinon
 */
int sprites_collide(sprite_t *sp2, sprite_t *sp1);

/**
 * \brief La fonction qui fait disparaitre les deux sprites si ils se sont touchés
 * \param sp2 et sp1 les deux sprites
 */
void handle_sprites_collision(sprite_t *sp1, sprite_t *sp2);

/**
 * \brief La fonction qui fait disparaitre sp2 si les deux sprites se sont touchés
 * \param sp2 et sp1 les deux sprites
 */
void handle_sprites_collision_damage_1sprite(sprite_t *sp1, sprite_t *sp2);

#endif