aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--inc/cub3d.h1
-rw-r--r--src/ft_draw_hud.c32
-rw-r--r--src/ft_draw_life_bar.c73
4 files changed, 106 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index d00464f..133577e 100644
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,7 @@ SRCS_NAME += ft_floor_cast_inits.c
SRCS_NAME += ft_suffer_animation.c
SRCS_NAME += ft_draw_traps.c
SRCS_NAME += ft_draw_traps_extra.c
+SRCS_NAME += ft_draw_life_bar.c
#--------------------------------------------------------------------------------------------------#
SRCS = $(addprefix ${SRCS_DIR},${SRCS_NAME})
#--------------------------------------------------------------------------------------------------#
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 016677a..56736ac 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -82,6 +82,7 @@ void ft_calc_trap(t_cub *cl);
void ft_draw_traps(t_cub *cl, t_sprite *sprite);
void ft_draw_skybox(t_cub *cl);
void ft_suffer_animation(t_cub *cl);
+void ft_draw_life_bar(t_win *wl, t_cub *cl);
/*
** ====== PARSING ======
diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c
index 486112d..eb329c6 100644
--- a/src/ft_draw_hud.c
+++ b/src/ft_draw_hud.c
@@ -11,10 +11,38 @@
/* ************************************************************************** */
#include <cub3d.h>
-#include <mlx.h>
#include <stdint.h>
static void
+ ft_draw_life_back(t_win *wl, t_cub *cl)
+{
+ const uint16_t scl = cl->mlist.scale;
+ uint32_t x;
+ uint32_t y;
+ int32_t col;
+
+ col = 0x00353535;
+ x = (cl->mlist.map_w * scl) + 20;
+ y = wl->y_size - (cl->mlist.map_h * scl) - 20;
+ while (x < ((cl->mlist.map_w * scl) + 20) + (3 * scl))
+ {
+ while (y < wl->y_size)
+ {
+ *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
+ if (!(y % 3))
+ {
+ if (col < 0x00aaaaaa)
+ col += 0x00010101;
+ }
+ y++;
+ }
+ col = 0x00353535;
+ y = wl->y_size - (cl->mlist.map_h * scl) - 20;
+ x++;
+ }
+}
+
+static void
ft_draw_minimap_back(size_t map_h, size_t map_w, t_win *wl, t_cub *cl)
{
const uint16_t scl = cl->mlist.scale;
@@ -79,6 +107,8 @@ int8_t
ft_draw_minimap_back(clist->mlist.map_h,
clist->mlist.map_w, &clist->wlist, clist);
ft_draw_map(clist->mlist.map, clist);
+ ft_draw_life_back(&clist->wlist, clist);
+ ft_draw_life_bar(&clist->wlist, clist);
if (clist->mlist.isnlvl)
{
ft_draw_stage_back(clist);
diff --git a/src/ft_draw_life_bar.c b/src/ft_draw_life_bar.c
new file mode 100644
index 0000000..ed270f9
--- /dev/null
+++ b/src/ft_draw_life_bar.c
@@ -0,0 +1,73 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_draw_life_bar.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/22 20:02:47 by rbousset #+# #+# */
+/* Updated: 2020/02/22 20:02:48 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <cub3d.h>
+#include <stdint.h>
+
+
+static void
+ ft_draw_green_life(uint16_t h, t_win *wl, t_cub *cl)
+{
+ const uint16_t scl = cl->mlist.scale;
+ uint32_t x;
+ uint32_t y;
+ int32_t col;
+
+ col = 0x0035ae35;
+ x = (cl->mlist.map_w * scl) + 20 + 9;
+ while (x < (cl->mlist.map_w * scl) + 20 + ((3 * scl) - 9))
+ {
+ y = (wl->y_size - (cl->mlist.map_h * scl) - 20 + 9) + ((100 - cl->plist.life) * (h / (cl->mlist.map_h * scl) - 1));
+ while (y < wl->y_size - 9)
+ {
+ *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
+ if (!(y % 3))
+ {
+ if (col < 0x00aaaaaa)
+ col += 0x00010101;
+ }
+ y++;
+ }
+ col = 0x0035ae35;
+ x++;
+ }
+}
+
+void
+ ft_draw_life_bar(t_win *wl, t_cub *cl)
+{
+ const uint16_t scl = cl->mlist.scale;
+ uint32_t x;
+ uint32_t y;
+ int32_t col;
+
+ col = 0x00ae3535;
+ x = (cl->mlist.map_w * scl) + 20 + 9;
+ y = wl->y_size - (cl->mlist.map_h * scl) - 20 + 9;
+ while (x < (cl->mlist.map_w * scl) + 20 + ((3 * scl) - 9))
+ {
+ while (y < wl->y_size - 9)
+ {
+ *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
+ if (!(y % 3))
+ {
+ if (col < 0x00aaaaaa)
+ col += 0x00010101;
+ }
+ y++;
+ }
+ col = 0x00ae3535;
+ y = wl->y_size - (cl->mlist.map_h * scl) - 20 + 9;
+ x++;
+ }
+ ft_draw_green_life(y, wl, cl);
+}