diff options
Diffstat (limited to 'src/ft_draw_scene.c')
-rw-r--r-- | src/ft_draw_scene.c | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c index a1a4a20..68a72e9 100644 --- a/src/ft_draw_scene.c +++ b/src/ft_draw_scene.c @@ -15,18 +15,64 @@ #include <mlx.h> #include <stdint.h> +static int8_t + ft_put_stage(t_cub *clist) +{ + uint8_t len; + char *str; + float x; + uint32_t y; + + x = 0.5 * clist->mlist.scale; + y = clist->wlist.y_size - (clist->mlist.map_h * clist->mlist.scale) - 25; + len = 6 + ft_uintlen(clist->currlvl); + if (!(str = (char*)malloc((len + 1) * sizeof(char)))) + return (-1); + ft_sprintf(str, "Stage %hd", clist->currlvl); + mlx_string_put(clist->wlist.wlx, + clist->wlist.winptr, + (uint32_t)x, y, + 0x002288da, + str); + ft_memdel((void**)&str); + return (0); +} + void ft_draw_scene(t_cub *clist) { - clist->img.img = mlx_new_image(clist->wlist->wlx, - clist->wlist->x_size, clist->wlist->y_size); + clist->img.img = mlx_new_image(clist->wlist.wlx, + clist->wlist.x_size, clist->wlist.y_size); clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, &clist->img.sizeline, &clist->img.endian); ft_castray(clist); if (clist->ishud) + { ft_draw_hud(clist); - ft_calc_sprite(clist); - mlx_put_image_to_window(clist->wlist->wlx, - clist->wlist->winptr, clist->img.img, 0, 0); - mlx_destroy_image(clist->wlist->wlx, clist->img.img); + } + ft_calc_sprite(clist); + mlx_put_image_to_window(clist->wlist.wlx, + clist->wlist.winptr, clist->img.img, 0, 0); + if (clist->ishud && clist->mlist.isnlvl) + { + if (ft_put_stage(clist) < 0) + { + ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist); + } + } + mlx_destroy_image(clist->wlist.wlx, clist->img.img); +} + +void + ft_draw_scene_bmp(t_cub *clist) +{ + clist->img.img = mlx_new_image(clist->wlist.wlx, + clist->wlist.x_size, clist->wlist.y_size); + clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp, + &clist->img.sizeline, &clist->img.endian); + ft_castray(clist); + ft_calc_sprite(clist); + if (ft_save_to_bmp(clist) < 0) + ft_error(FT_RET_BMP_ERR, FT_ERR_WR_BMP, clist); + mlx_destroy_image(clist->wlist.wlx, clist->img.img); } |