diff options
Diffstat (limited to 'badeline.c')
-rw-r--r-- | badeline.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/badeline.c b/badeline.c new file mode 100644 index 0000000..97dc486 --- /dev/null +++ b/badeline.c @@ -0,0 +1,57 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* badeline.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kdx <kdx @student.42angouleme.fr +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/17 11:32:46 by kdx #+# #+# */ +/* Updated: 2022/10/17 11:32:46 by kdx ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "badeline.h" +#include "player.h" +#include "sprite.h" +#include "game.h" +#include <math.h> + +void badeline_update(t_badeline *badeline) +{ + int i; + + if (!badeline->active) + return ; + if (badeline->queue_size >= BADELINE_DELAY) + { + badeline->erase[0] = badeline->queue[0][0]; + badeline->erase[1] = badeline->queue[0][1]; + } + i = 0; + while (i < badeline->queue_size - 1) + { + badeline->queue[i][0] = badeline->queue[i + 1][0]; + badeline->queue[i][1] = badeline->queue[i + 1][1]; + i += 1; + } + badeline->queue[i][0] = badeline->follow->pos[0]; + badeline->queue[i][1] = badeline->follow->pos[1]; + badeline->queue_size += (badeline->queue_size < BADELINE_DELAY); +} + +void badeline_erase(t_sily *sily, t_badeline *badeline) +{ + if (badeline->erase[0] && badeline->erase[1]) + player_erase(sily, badeline->erase); +} + +void badeline_draw(t_sily *sily, t_badeline *badeline) +{ + int x; + int y; + + x = round(badeline->queue[0][0]); + y = round(badeline->queue[0][1]); + if (badeline->queue_size >= BADELINE_DELAY && x && y) + sprite_draw(sily, sily->game->s_badeline, x, y); +} |