/*
** EPITECH PROJECT, 2018
** task01
** File description:
** I do task
*/
#include "game/game.h"
#include "game/core.h"

static void collision_player_stone(sfml_t *sfml,
player_t *player, object_t *object)
{
	if (object == NULL)
		return;
	if (object->x + 24 >= player->x + 8 && object->x <= player->x + 56
	&& object->y + 24 >= player->y && object->y <= player->y + 32){
		object->y = player->y - 16;
		object->dy = -2;
		player->counter_jump = PLAYER_MAX_JUMP;
		sfml->debug |= 0x02;
		player->dy = 6;
	}
}

static void collision_player_bullet(sfml_t *sfml,
player_t *player, object_t *object)
{
	if (object == NULL || object->sleep == BULLET_STOP)
		return;
	if (object->x + 24 >= player->x + 8 && object->x <= player->x + 56
	&& object->y + 24 >= player->y + 8 && object->y <= player->y + 64){
		player->action = PLAYER_DEAD;
		player->dead_counter = 0;
	}
}

void collision_stone(sfml_t *sfml)
{
	void (*fun[2])(sfml_t*, player_t*, object_t*);
	int i;
	int j;

	if (sfml->scene->thrower == NULL)
		return;
	i = -1;
	fun[1] = &collision_player_stone;
	fun[0] = &collision_player_bullet;
	while (++i < sfml->scene->level->thrower_counter){
		j = -1;
		while (++j < NB_OBJECT)
			fun[sfml->scene->thrower[i]->action == ID_THROWER_STONE]
			(sfml, sfml->scene->player,
			sfml->scene->thrower[i]->object[j]);
	}
	sfml->scene->player->y += (sfml->debug & 0x02) ? 4 : 0;
	sfml->debug &= ~0x02;
}
