/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_draw_life_bar.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 #include /* static void */ /* ft_draw_tnum(int8_t id, int16_t y, int16_t x, t_cub *cl) */ /* { */ /* } */ /* static void */ /* ft_put_image_from_number(char *num, t_cub *cl) */ /* { */ /* } */ static void ft_put_percent_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->tnum[10].img_w << 16) / w) + 1; y_ratio = (int)((cl->tnum[10].img_h << 16) / h) + 1; y = cl->wlist.y_size - (cl->mlist.map_h * cl->mlist.scale) - 10; while (y < (int32_t)(cl->wlist.y_size - 10)) { cl->tnum[10].tex_y = ((y * y_ratio) >> 16); x = ((cl->mlist.map_w * cl->mlist.scale) + 20) + (32 * cl->mlist.scale) - ((32 * cl->mlist.scale) / 4); while (x < (int32_t)((cl->mlist.map_w * cl->mlist.scale) + 10 + ((32 * cl->mlist.scale)))) { cl->tnum[10].tex_x = ((x * x_ratio) >> 16); if (cl->tnum[10].ptr[cl->tnum[10].tex_x * 4 + 4 * cl->tnum[10].img_h * cl->tnum[10].tex_y]) { cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = (uint8_t)cl->tnum[10].ptr[cl->tnum[10].tex_x * 4 + 4 * cl->tnum[10].img_w * cl->tnum[10].tex_y]; cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] = (uint8_t)cl->tnum[10].ptr[cl->tnum[10].tex_x * 4 + 4 * cl->tnum[10].img_w * cl->tnum[10].tex_y + 1]; cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] = (uint8_t)cl->tnum[10].ptr[cl->tnum[10].tex_x * 4 + 4 * cl->tnum[10].img_w * cl->tnum[10].tex_y + 2]; } x++; } y++; } } static void ft_get_hw(t_cub *cl) { int16_t x; int16_t y; const int16_t scl = cl->mlist.scale; y = cl->wlist.y_size - (cl->mlist.map_h * scl) - 10; while (y < (int32_t)(cl->wlist.y_size - 10)) { x = ((cl->mlist.map_w * scl) + 20) + (32 * scl) - ((32 * scl) / 4); while (x < (int32_t)((cl->mlist.map_w * scl) + 10 + ((32 * scl)))) x++; y++; } /* y -= cl->wlist.y_size - (cl->mlist.map_h * scl); */ x -= ((cl->mlist.map_w * scl) + 20) + (32 * scl) - ((32 * scl) / 4); ft_printf("y %hu | x %hu\n", y, x); ft_put_percent_image(y, x, cl); } void ft_draw_life_bar(t_cub *cl) { char *num; float calc; ft_get_hw(cl); calc = ((float)cl->plist.life / (float)FT_STRT_LIFE) * 100.0; if (!(num = ft_itoa((int64_t)calc))) ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); /* ft_put_image_from_number(num, cl); */ ft_memdel((void*)&num); }