orton_runner/src/draw/draw_thrower.c

86 lines
2.2 KiB
C
Raw Permalink Normal View History

2019-01-20 11:55:38 +01:00
/*
** EPITECH PROJECT, 2018
** task01
** File description:
** I do task
*/
#include "game/draw.h"
#include "game/core.h"
static const uint8_t bullet_left[] = {64, 192, 64, 0, 0, 0, 0, 0};
static const uint8_t bullet_right[] = {128, 192, 128, 0, 0, 0, 0, 0};
static const uint8_t bullet_up[] = {64, 224, 0, 0, 0, 0, 0, 0};
static const uint8_t bullet_down[] = {224, 64, 0, 0, 0, 0, 0, 0};
static const uint8_t stone[] = {224, 160, 224, 0, 0, 0, 0, 0};
static const uint8_t thrower_up[] = {0, 0, 0, 0, 0, 60, 126, 126};
static const uint8_t thrower_down[] = {126, 126, 60, 0, 0, 0, 0, 0};
static const uint8_t thrower_right[] = {0, 192, 224, 224, 224, 224, 192, 0};
static const uint8_t thrower_left[] = {0, 3, 7, 7, 7, 7, 3, 0};
static const uint8_t *thrower[] = {
thrower_down, thrower_up, thrower_down, thrower_right, thrower_left
};
static const uint8_t *bullet[] = {
bullet_up, bullet_down, bullet_right, bullet_left
};
void draw_thrower(sfml_t *sfml, int x, int y, uint8_t direction)
{
int draw[4];
draw[0] = x;
draw[1] = y;
draw[2] = 3;
draw[3] = 0x000000ff;
draw_monochrome(sfml, thrower[direction], draw);
}
static void draw_stone(sfml_t *sfml, object_t *object)
{
int draw[4];
if (object == NULL)
return;
draw[0] = object->x - sfml->scene->camera->x;
draw[1] = object->y - sfml->scene->camera->y;
draw[3] = 0x000000ff;
draw[2] = 3;
draw_monochrome(sfml, stone, draw);
}
static void draw_bullet(sfml_t *sfml, object_t *object, uint8_t locate)
{
int draw[4];
draw[0] = object->x - sfml->scene->camera->x;
draw[1] = object->y - sfml->scene->camera->y;
draw[2] = 3;
draw[3] = 0x000000ff;
draw_monochrome(sfml, bullet[locate], draw);
}
static void draw_setup(sfml_t *sfml, thrower_t *thrower, int j)
{
if (thrower->action == ID_THROWER_STONE){
draw_stone(sfml, thrower->object[j]);
return;
}
if (thrower->object[j] == NULL
|| thrower->object[j]->sleep == BULLET_STOP)
return;
draw_bullet(sfml, thrower->object[j],
thrower->action - ID_THROWER_STONE - 1);
}
void draw_thrower_object(sfml_t *sfml)
{
int i;
int j;
i = -1;
while (++i < sfml->scene->level->thrower_counter){
j = -1;
while (++j < NB_OBJECT)
draw_setup(sfml, sfml->scene->thrower[i], j);
}
}