diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | inc/cub3d.h | 1 | ||||
| -rw-r--r-- | inc/cub3d_structs.h | 2 | ||||
| -rw-r--r-- | src/ft_draw_hud.c | 64 | ||||
| -rw-r--r-- | src/ft_draw_map_back.c | 91 | ||||
| -rw-r--r-- | src/ft_init_lists.c | 4 | 
6 files changed, 101 insertions, 63 deletions
| @@ -45,7 +45,6 @@ SRCS_NAME	+= ft_get_music.c  SRCS_NAME	+= ft_get_darkness.c  SRCS_NAME	+= ft_get_traps.c  SRCS_NAME	+= ft_get_sprite_spawns.c -SRCS_NAME	+= ft_get_topsp.c  SRCS_NAME	+= ft_set_minimap_scale.c  SRCS_NAME	+= ft_check_missing.c  SRCS_NAME	+= ft_check_not_found.c @@ -125,6 +124,7 @@ SRCS_NAME	+= ft_get_spawns.c  SRCS_NAME	+= ft_tex_num_init.c  SRCS_NAME	+= ft_tex_sprites_extra_init.c  SRCS_NAME	+= ft_draw_health_caption.c +SRCS_NAME	+= ft_draw_map_back.c  #--------------------------------------------------------------------------------------------------#  SRCS		= $(addprefix ${SRCS_DIR},${SRCS_NAME})  #--------------------------------------------------------------------------------------------------# diff --git a/inc/cub3d.h b/inc/cub3d.h index 0ca77d9..a4873bb 100644 --- a/inc/cub3d.h +++ b/inc/cub3d.h @@ -75,6 +75,7 @@ void			ft_draw_square(int a, int b, int rgb, t_cub *clist);  void			ft_draw_map(char **map, t_cub *clist);  void			ft_draw_texture(t_cub *cl, int x, int y, int tex_y);  int8_t			ft_draw_hud(t_cub *clist); +void			ft_draw_minimap_back(t_cub *cl);  void			ft_draw_health_caption(t_cub *cl);  void			ft_draw_life_bar(t_cub *cl);  void			ft_draw_scene(t_cub *clist); diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h index 380b7f4..149ac7b 100644 --- a/inc/cub3d_structs.h +++ b/inc/cub3d_structs.h @@ -243,6 +243,8 @@ typedef struct			s_cub  	uint16_t			life_cap_w;  	uint16_t			life_num_h;  	uint16_t			life_num_w; +	uint16_t			map_back_h; +	uint16_t			map_back_w;  	int					(*key_ptr[6])(struct s_cub*);  	int8_t				(*get_ptr[14])(char**, struct s_cub*);  	char				ref[22][3]; diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c index 75498d8..ff87f37 100644 --- a/src/ft_draw_hud.c +++ b/src/ft_draw_hud.c @@ -14,66 +14,6 @@  #include <stdint.h>  static void -	ft_put_image_back_to_ptr(uint16_t y, uint16_t x, t_cub *cl) -{ -	const uint32_t	col = 0x00d2d4d6; - -	*(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) -	{ -		x = 0; -		cl->tlist[16].tex_y = (y * y_ratio) >> 16; -		while (x < (uint16_t)((cl->mlist.map_w -			* cl->mlist.scale) + 20 + (24 * cl->mlist.scale))) -		{ -			cl->tlist[16].tex_x = (x * x_ratio) >> 16; -			ft_put_image_back_to_ptr(y, x, cl); -			x++; -		} -		y++; -	} -} - -static void -	ft_draw_minimap_back(size_t map_h, size_t map_w, t_win *wl, t_cub *cl) -{ -	uint16_t		x; -	uint16_t		y; -	const uint16_t	scl = cl->mlist.scale; - -	x = 0; -	y = wl->y_size - (map_h * scl) - 20; -	while (x < (map_w * scl) + 20 + (32 * 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; @@ -104,9 +44,9 @@ static void  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_minimap_back(clist);  	ft_draw_map(clist->mlist.map, clist); +	/* ft_draw_ammo_back(clist->mlist.map, clist); */  	ft_draw_life_bar(clist);  	ft_draw_health_caption(clist);  	if (clist->mlist.isnlvl) diff --git a/src/ft_draw_map_back.c b/src/ft_draw_map_back.c new file mode 100644 index 0000000..3026687 --- /dev/null +++ b/src/ft_draw_map_back.c @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/*                                                                            */ +/*                                                        :::      ::::::::   */ +/*   ft_draw_map_back.c                                 :+:      :+:    :+:   */ +/*                                                    +:+ +:+         +:+     */ +/*   By: rbousset <marvin@42.fr>                    +#+  +:+       +#+        */ +/*                                                +#+#+#+#+#+   +#+           */ +/*   Created: 2020/02/22 20:02:47 by rbousset          #+#    #+#             */ +/*   Updated: 2020/02/22 20:02:48 by rbousset         ###   ########lyon.fr   */ +/*                                                                            */ +/* ************************************************************************** */ + +#include <cub3d.h> +#include <stdint.h> + +static void +	ft_draw_back(uint16_t y, uint16_t x, t_cub *cl) +{ +	const uint32_t	col = 0x00d2d4d6; +	const uint16_t	scl = cl->mlist.scale; + +	cl->img.ptr[x * 4 + +		(cl->img.sizeline * (y + cl->wlist.y_size- (cl->mlist.map_h * scl) +		- 20))] = +		(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 + cl->wlist.y_size - (cl->mlist.map_h * scl) +		- 20)) + 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 + cl->wlist.y_size - (cl->mlist.map_h * scl) +		- 20)) + 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_put_minimap_back(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) / cl->map_back_w) + 1; +	y_ratio = (int)(((cl->tlist[16].img_h) << 16) / cl->map_back_h) + 1; +	y = 0; +	while (y < cl->map_back_h) +	{ +		cl->tlist[16].tex_y = ((y * y_ratio) >> 16); +		x = 0; +		while (x < cl->map_back_w) +		{ +			cl->tlist[16].tex_x = ((x * x_ratio) >> 16); +			ft_draw_back(y, x, cl); +			x++; +		} +		y++; +	} +} + +static void +	ft_get_hw(t_cub *cl) +{ +	uint16_t		x; +	uint16_t		y; +	const uint16_t	scl = cl->mlist.scale; + +	x = 0; +	y = cl->wlist.y_size - (cl->mlist.map_h * scl) - 20; +	while (x < (cl->mlist.map_w * scl) + 20 + (32 * scl)) +	{ +		while (y < cl->wlist.y_size) +			y++; +		x++; +	} +	y -= cl->wlist.y_size - (cl->mlist.map_h * scl) - 20; +	y = (y <= 0) ? (1) : (y); +	x = (x <= 0) ? (1) : (x); +	cl->map_back_h = y; +	cl->map_back_w = x; +} + +void +	ft_draw_minimap_back(t_cub *cl) +{ +	ft_get_hw(cl); +	ft_put_minimap_back(cl); +} diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c index b551aab..d8c653f 100644 --- a/src/ft_init_lists.c +++ b/src/ft_init_lists.c @@ -122,5 +122,9 @@ int8_t  	clist->moves = 0;  	clist->life_num_h = 0;  	clist->life_num_w = 0; +	clist->life_cap_h = 0; +	clist->life_cap_w = 0; +	clist->map_back_h = 0; +	clist->map_back_w = 0;  	return (0);  } | 
