aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_draw_scene.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_draw_scene.c')
-rw-r--r--src/ft_draw_scene.c58
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);
}