summaryrefslogtreecommitdiff
path: root/badeline.c
diff options
context:
space:
mode:
Diffstat (limited to 'badeline.c')
-rw-r--r--badeline.c57
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);
+}