diff options
Diffstat (limited to 'src/ft_draw_hud.c')
-rw-r--r-- | src/ft_draw_hud.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c new file mode 100644 index 0000000..9cb5b1c --- /dev/null +++ b/src/ft_draw_hud.c @@ -0,0 +1,113 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_draw_hud.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 <mlx.h> +#include <stdint.h> + +static void + ft_draw_hud_back(t_win *wl, t_cub *cl) +{ + const uint16_t scl = cl->mlist->scale; + uint32_t x; + uint32_t y; + int32_t col; + + col = 0x00404040; + x = 0; + y = wl->y_size - ((cl->mlist->map_h * scl)); + while (x < wl->x_size) + { + while (y < wl->y_size) + { + *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col; + if (!(y % 3)) + { + if (col < 0x00909090) + col += 0x00010101; + } + y++; + } + col = 0x00404040; + y = wl->y_size - ((cl->mlist->map_h * scl)); + x++; + } +} + +static void + ft_draw_hud_back_top_l(size_t map_h, size_t map_w, t_win *wl, t_cub *cl) +{ + const uint16_t scl = cl->mlist->scale; + uint32_t x; + uint32_t y; + int32_t col; + + col = 0x00373737; + x = 0; + y = wl->y_size - (map_h * scl) - 20; + while (x < (map_w * scl) + 20) + { + while (y < wl->y_size - (map_h * scl)) + { + *(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 - (map_h * scl) - 20; + x++; + } +} + +static void + ft_draw_hud_back_top_r(size_t map_h, size_t map_w, t_win *wl, t_cub *cl) +{ + const uint16_t scl = cl->mlist->scale; + uint32_t x; + uint32_t y; + int32_t col; + + col = 0x00373737; + x = wl->x_size - (map_w * scl) + 20; + y = wl->y_size - (map_h * scl) - 20; + while (x < wl->x_size) + { + while (y < wl->y_size - (map_h * scl)) + { + *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col; + if (!(y % 2)) + { + if (col < 0x00aaaaaa) + col += 0x00010101; + } + y++; + } + col = 0x00353535; + y = wl->y_size - (map_h * scl) - 20; + x++; + } +} + +void + ft_draw_hud(t_cub *clist) +{ + ft_draw_hud_back(clist->wlist, clist); + ft_draw_hud_back_top_l(clist->mlist->map_h, + clist->mlist->map_w, clist->wlist, clist); + ft_draw_hud_back_top_r(clist->mlist->map_h, + clist->mlist->map_w, clist->wlist, clist); + ft_draw_map(clist->mlist->map, clist); +} |