/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_draw_hud.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 20:02:47 by rbousset #+# #+# */ /* Updated: 2020/02/22 20:02:48 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include /* 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; */ /* col = 0x00353535; */ /* x = 0; */ /* y = wl->y_size - (map_h * 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++; */ /* } */ /* } */ 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) { 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))) { cl->tlist[16].tex_x = (x * x_ratio) >> 16; 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]; 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]; 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]; cl->img.ptr[x * 4 + cl->wlist.x_size * y + 3] = (char)0; x++; } y++; } } 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; uint16_t x; uint16_t y; x = 0; y = wl->y_size - (map_h * scl) - 20; while (x < (map_w * scl) + 20 + (3 * scl)) { while (y < wl->y_size) y++; x++; } ft_draw_minimap_back_image(y, x, cl); } static void ft_draw_stage_back(t_cub *clist) { float x; uint32_t y; int32_t col; uint16_t x_dest; const uint16_t scl = clist->mlist.scale; col = 0x00353535; x = 0; y = clist->wlist.y_size - (clist->mlist.map_h * scl) - 45; x_dest = 1.5 * clist->mlist.scale + 70; while (x_dest > (clist->mlist.map_w * scl) + 20) { x_dest--; } while (x < x_dest) { while (y < clist->wlist.y_size - (clist->mlist.map_h * scl) - 20) { *(int*)(clist->img.ptr + ((uint16_t)x * 4 + (y * clist->img.sizeline))) = col; y++; } y = clist->wlist.y_size - (clist->mlist.map_h * scl) - 45; x += 1.0; } } int8_t ft_draw_hud(t_cub *clist) { 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_bar(&clist->wlist, clist); if (clist->mlist.isnlvl) { ft_draw_stage_back(clist); } return (0); }