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