sprite.c 1.93 KiB
/**
* \file world_data.c
* \brief Gestion des données du monde
* \author Bohan Thomas et Suck Hugo
* \version 1.0
* \date 4 novembre 2020
*/
#include "sprite.h"
void init_sprite(sprite_t *sprite, int x, int y, int w, int h, float v,int hp)
{
sprite->x = x;
sprite->y = y;
sprite->h = h;
sprite->w = w;
sprite->v = v;
sprite->is_visible = 1;
sprite->hp = hp;
}
void print_sprite(sprite_t*sprite)
{
printf("Coordonnées x: %f \n",sprite->x);
printf("Coordonnées y: %f \n",sprite->y);
printf("Hauteur: %f \n",sprite->h);
printf("Largeur: %f \n",sprite->w);
printf("Vitesse: %f \n",sprite->v);
printf("Visible: %d \n",sprite->is_visible);
printf("HP: %d \n",sprite->hp);
}
// Si sprite sort de l'écran return true = 1
int over_left (sprite_t*sprite)
{
if (sprite->x < 0)
{
return 1;
}
return 0;
}
// Si sprite sort de l'écran return true = 1
int over_right (sprite_t*sprite)
{
if (sprite->x+sprite->w > SCREEN_WIDTH)
{
return 1;
}
return 0;
}
void set_visible(sprite_t *sprite)
{
sprite->is_visible = 1;
}
void set_invisible(sprite_t *sprite)
{
sprite->is_visible = 0;
}
int sprites_collide(sprite_t *sp2, sprite_t *sp1)
{
if(sqrt((sp1->x - sp2->x)*(sp1->x - sp2->x)+(sp1->y - sp2->y)*(sp1->y - sp2->y)) <= (sp1->h + sp2->h) /2)
{
return 1;
}
return 0;
}
void handle_sprites_collision(sprite_t *sp1, sprite_t *sp2)
{
if(sp1->is_visible == 1 && sp2->is_visible == 1 && sprites_collide(sp1,sp2))
{
sp1->hp = sp1->hp-1;
sp2->hp = sp2->hp-1;
if(sp1->hp == 0)
{
set_invisible(sp1);
}
if(sp2->hp == 0)
{
set_invisible(sp2);
}
}
}
void handle_sprites_collision_damage_1sprite(sprite_t *sp1, sprite_t *sp2)
{
if(sp1->is_visible == 1 && sp2->is_visible == 1 && sprites_collide(sp1,sp2))
{
sp2->hp = sp2->hp-1;
if(sp2->hp == 0){
set_invisible(sp2);
}
}
}