diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ft_check_map_line.c | 1 | ||||
| -rw-r--r-- | src/ft_check_missing.c | 2 | ||||
| -rw-r--r-- | src/ft_get_map.c | 1 | ||||
| -rw-r--r-- | src/ft_get_player_spawn.c | 56 | ||||
| -rw-r--r-- | src/ft_init_lists.c | 26 | ||||
| -rw-r--r-- | src/ft_parse_map.c | 1 | ||||
| -rw-r--r-- | src/ft_print_list.c | 1 | 
7 files changed, 76 insertions, 12 deletions
diff --git a/src/ft_check_map_line.c b/src/ft_check_map_line.c index 13baaef..1368b63 100644 --- a/src/ft_check_map_line.c +++ b/src/ft_check_map_line.c @@ -13,6 +13,7 @@  #include <libft.h>  #include <cub3d.h> +#include <stddef.h>  #include <stdint.h>  size_t diff --git a/src/ft_check_missing.c b/src/ft_check_missing.c index 4d7713d..9f3698b 100644 --- a/src/ft_check_missing.c +++ b/src/ft_check_missing.c @@ -41,5 +41,7 @@ int  		return (ft_missing_error("floor color", clist));  	else if (clist->c_color < 0)  		return (ft_missing_error("ceiling color", clist)); +	else if (clist->plist->pos_x == 0 || clist->plist->pos_y == 0) +		return (ft_missing_error("player spawn", clist));  	return (0);  } diff --git a/src/ft_get_map.c b/src/ft_get_map.c index 00de520..b64da72 100644 --- a/src/ft_get_map.c +++ b/src/ft_get_map.c @@ -51,6 +51,7 @@ static int8_t  int  	ft_get_map_first_line(char *line, t_cub *clist)  { +	clist->map_start = clist->line_chk;  	if (!line[0])  	{  		ft_memdel((void**)&line); diff --git a/src/ft_get_player_spawn.c b/src/ft_get_player_spawn.c new file mode 100644 index 0000000..cb6dfcf --- /dev/null +++ b/src/ft_get_player_spawn.c @@ -0,0 +1,56 @@ +/* ************************************************************************** */ +/*                                                          LE - /            */ +/*                                                              /             */ +/*   ft_get_player_spawn.c                            .::    .:/ .      .::   */ +/*                                                 +:+:+   +:    +:  +:+:+    */ +/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */ +/*                                                 #+#   #+    #+    #+#      */ +/*   Created: 2020/02/02 19:07:18 by rbousset     #+#   ##    ##    #+#       */ +/*   Updated: 2020/02/02 19:07:19 by rbousset    ###    #+. /#+    ###.fr     */ +/*                                                         /                  */ +/*                                                        /                   */ +/* ************************************************************************** */ + +#include <libft.h> +#include <cub3d.h> +#include <stdint.h> + +static uint8_t +	ft_get_view_side(char c) +{ +	if (c == 'N') +		return (1); +	else if (c == 'S') +		return (2); +	else if (c == 'E') +		return (3); +	else if (c == 'W') +		return (4); +	return (1); +} + +void +	ft_get_player_spawn(t_player *plist, t_cub *clist) +{ +	size_t	x; +	size_t	y; + +	x = 1; +	y = 1; +	while (clist->map[y]) +	{ +		while (clist->map[y][x]) +		{ +			if (ft_ischarset("NSEW", clist->map[y][x])) +			{ +				plist->pos_x = x + 1; +				plist->pos_y = y + 1; +				plist->view_side = ft_get_view_side(clist->map[y][x]); +				return ; +			} +			x++; +		} +		x = 1; +		y++; +	} +} diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c index b7602ab..74c1b3d 100644 --- a/src/ft_init_lists.c +++ b/src/ft_init_lists.c @@ -17,18 +17,6 @@  #include <stddef.h>  #include <stdlib.h> -t_player -	*ft_init_player(void) -{ -	t_player	*plist; - -	if (!(plist = (t_player*)malloc(sizeof(t_player)))) -		return (NULL); -	plist->pos_x = 0; -	plist->pos_y = 0; -	return (plist); -} -  t_win  	*ft_init_win(void)  { @@ -45,6 +33,19 @@ t_win  	return (wlist);  } +static t_player +	*ft_init_player(void) +{ +	t_player	*plist; + +	if (!(plist = (t_player*)malloc(sizeof(t_player)))) +		return (NULL); +	plist->pos_x = 0; +	plist->pos_y = 0; +	plist->view_side = 0; +	return (plist); +} +  t_cub  	*ft_init_cub(void)  { @@ -67,6 +68,7 @@ t_cub  	clist->c_color = -1;  	clist->map_w = 0;  	clist->line_chk = 0; +	clist->map_start = 0;  	clist->isspawn = 0;  	return (clist);  } diff --git a/src/ft_parse_map.c b/src/ft_parse_map.c index 41cab3d..29f2c43 100644 --- a/src/ft_parse_map.c +++ b/src/ft_parse_map.c @@ -116,6 +116,7 @@ void  	if (ft_get_map_core(fd, clist) < 0)  		ft_map_error(clist);  	ft_check_map_last_line(clist); +	ft_get_player_spawn(clist->plist, clist);  	ft_check_missing(clist);  	ft_print_list(clist);  	close(fd); diff --git a/src/ft_print_list.c b/src/ft_print_list.c index 45ef1fe..5f59bc0 100644 --- a/src/ft_print_list.c +++ b/src/ft_print_list.c @@ -39,5 +39,6 @@ void  	ft_printf("----\n");  	ft_printf("Player pos X [%zu]\n", clist->plist->pos_x);  	ft_printf("Player pos Y [%zu]\n", clist->plist->pos_y); +	ft_printf("Player view  [%hhu]\n", clist->plist->view_side);  	ft_printf("----------------------\n");  }  | 
