diff options
Diffstat (limited to '')
-rw-r--r-- | src/ft_draw_hud.c | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c index eb329c6..121e85e 100644 --- a/src/ft_draw_hud.c +++ b/src/ft_draw_hud.c @@ -14,31 +14,44 @@ #include <stdint.h> static void - ft_draw_life_back(t_win *wl, t_cub *cl) + ft_put_image_back_to_ptr(uint16_t y, uint16_t x, t_cub *cl) { - const uint16_t scl = cl->mlist.scale; - uint32_t x; - uint32_t y; - int32_t col; + const uint32_t col = 0x00d2d4d6; - 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)) + *(cl->img.ptr + x * 4 + (cl->img.sizeline * y)) = + (uint8_t)*(cl->tlist[16].ptr + cl->tlist[16].tex_x * 4 + 4 * + cl->tlist[16].img_w * cl->tlist[16].tex_y) & col; + *(cl->img.ptr + x * 4 + (cl->img.sizeline * y) + 1) = + (uint8_t)*(cl->tlist[16].ptr + cl->tlist[16].tex_x * 4 + 4 * + cl->tlist[16].img_w * cl->tlist[16].tex_y + 1) & col; + *(cl->img.ptr + x * 4 + (cl->img.sizeline * y) + 2) = + (uint8_t)*(cl->tlist[16].ptr + cl->tlist[16].tex_x * 4 + 4 * + cl->tlist[16].img_w * cl->tlist[16].tex_y + 2) & col; +} + +static void + ft_draw_minimap_back_image(uint16_t h, uint16_t w, t_cub *cl) +{ + int32_t x_ratio; + int32_t y_ratio; + int16_t x; + int16_t y; + + x_ratio = (int)((cl->tlist[16].img_w << 16) / w) + 1; + y_ratio = (int)((cl->tlist[16].img_h << 16) / h) + 1; + y = cl->wlist.y_size - (cl->mlist.map_h * cl->mlist.scale) - 20; + while (y < (int32_t)cl->wlist.y_size) { - while (y < wl->y_size) + x = 0; + cl->tlist[16].tex_y = (y * y_ratio) >> 16; + while (x < (uint16_t)((cl->mlist.map_w + * cl->mlist.scale) + 20 + (3 * cl->mlist.scale))) { - *(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col; - if (!(y % 3)) - { - if (col < 0x00aaaaaa) - col += 0x00010101; - } - y++; + cl->tlist[16].tex_x = (x * x_ratio) >> 16; + ft_put_image_back_to_ptr(y, x, cl); + x++; } - col = 0x00353535; - y = wl->y_size - (cl->mlist.map_h * scl) - 20; - x++; + y++; } } @@ -46,29 +59,18 @@ 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; - uint32_t x; - uint32_t y; - int32_t col; + uint16_t x; + uint16_t y; - col = 0x00353535; x = 0; y = wl->y_size - (map_h * scl) - 20; - while (x < (map_w * scl) + 20) + while (x < (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 - (map_h * scl) - 20; x++; } + ft_draw_minimap_back_image(y, x, cl); } static void @@ -107,7 +109,6 @@ 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) { |