diff --git a/includes/Cub3D.h b/includes/Cub3D.h index 9654a95..d5d264c 100644 --- a/includes/Cub3D.h +++ b/includes/Cub3D.h @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:30:59 by apommier #+# #+# */ -/* Updated: 2022/06/14 01:04:15 by apommier ### ########.fr */ +/* Updated: 2022/06/14 14:59:08 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -81,6 +81,7 @@ typedef struct player_position int front; int side; int angle_side; + int shift; } player; typedef struct s_data { @@ -98,6 +99,7 @@ typedef struct s_data { int err; } t_data; +int update_pos(t_data *img); char *transform_map(char **double_map, t_data *img); int check_texture_color(char **tab, t_data *img); int check_map(char **av, t_data *img); diff --git a/map/subject_magma.cub b/map/subject_magma.cub index 6dfecc1..c1cb16e 100644 --- a/map/subject_magma.cub +++ b/map/subject_magma.cub @@ -1,7 +1,7 @@ -NO ./sprite/magma_shade.ppm -SO ./sprite/magma_shade.ppm -EA ./sprite/magma_shade.ppm -WE ./sprite/magma_shade.ppm +NO ./sprite/mossy_cobblestone.ppm +SO ./sprite/mossy_cobblestone.ppm +EA ./sprite/obsidian.ppm +WE ./sprite/obsidian.ppm 1111111111111111111111111 @@ -9,8 +9,8 @@ WE ./sprite/magma_shade.ppm 1011000001110000000000001 1001000000000000000000001 111111111011000001110000000000001 -100000000011000001110111111111111 -11110111111111011100000010001 +100000000011100001110111111111111 +11110111111 11011100000010001 11110111111111011101010010001 11000000110101011100000010001 10000000000000001100000010001 diff --git a/srcs/main.c b/srcs/main.c index 07db6f0..b9f12eb 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:42:55 by apommier #+# #+# */ -/* Updated: 2022/06/14 00:10:50 by apommier ### ########.fr */ +/* Updated: 2022/06/14 14:56:27 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -105,6 +105,8 @@ int key_pressed(int type, t_data *img) img->player.angle_side = -1; else if (type == 65363)//fleche droite img->player.angle_side = 1; + else if (type == 65505) + img->player.shift = 1; return (0); } @@ -122,6 +124,8 @@ int key_released(int type, t_data *img) img->player.angle_side = 0; else if (type == 65363)//fleche droite img->player.angle_side = 0; + else if (type == 65505) + img->player.shift = 0; return (0); } @@ -160,6 +164,11 @@ int main(int argc, char **argv) img.player.angle = 90; img.player.vx = cos(deg_to_rad(img.player.angle)); img.player.vy = sin(deg_to_rad(img.player.angle)); + img.player.front = 0; + img.player.side = 0; + img.player.angle_side = 0; + img.player.shift = 0; + //print_map(img.map, &img); //print_player(img.player, &img); //print_ray(&img); diff --git a/srcs/parsing/check_color_texture.c b/srcs/parsing/check_color_texture.c index d8c0e46..a2c438d 100644 --- a/srcs/parsing/check_color_texture.c +++ b/srcs/parsing/check_color_texture.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/11 01:00:17 by apommier #+# #+# */ -/* Updated: 2022/06/14 01:04:04 by apommier ### ########.fr */ +/* Updated: 2022/06/14 14:58:34 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,6 +46,8 @@ char *transform_map(char **double_map, t_data *img) img->map.size = img->map.x * img->map.y; printf("x= %d y= %d\n", img->map.x, img->map.y); map = ft_calloc(sizeof(char), img->map.size + 1); + if (!map) + quit_game(img); while (double_map[++i]) { j = -1; @@ -98,18 +100,25 @@ void set_color(char *str, t_data *img) { char c; int index; + char **tab; c = next_space(str, 0); index = next_space_index(str, 0); + tab = ft_split(str + 1, ','); + if (!tab) + quit_game(img); + if (double_size(tab) != 3) + ft_exit("Error\nBad syntax in map file (RGB)\n"); if (c == 'F') { if (str[index + 1] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file (RGB)\n"); + } if (c == 'C') { if (str[index + 1] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file (RGB)\n"); } } diff --git a/srcs/parsing/parse_map.c b/srcs/parsing/parse_map.c index d556dc0..8766c06 100644 --- a/srcs/parsing/parse_map.c +++ b/srcs/parsing/parse_map.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* parse_map.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: sadjigui +#+ +:+ +#+ */ +/* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/10 17:54:25 by sadjigui #+# #+# */ -/* Updated: 2022/06/14 14:56:22 by sadjigui ### ########.fr */ +/* Updated: 2022/06/14 15:00:35 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -281,10 +281,12 @@ char **isafile(char **av, t_data *img) while ((line = get_next_line(fd)) != NULL) { if (line[0] != '\n' && img->err == 0) + { if (detect_map_line(line)) img->err = 1; if (line[0] == '\n' && img->err == 1) img->err = 2; + } tmp = ft_strjoin(str, line); if (str != NULL) free(str); diff --git a/srcs/utils.c b/srcs/utils.c index 1a883fe..9f51106 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 23:37:02 by apommier #+# #+# */ -/* Updated: 2022/06/14 00:09:06 by apommier ### ########.fr */ +/* Updated: 2022/06/14 14:58:03 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,15 +64,21 @@ void ft_error(char *error_msg) int update_pos(t_data *img) { + int multiplicator; + + if (img->player.shift == 1) + multiplicator = 4; + else + multiplicator = 2; if (img->player.front == 1) { - img->player.x += img->player.vx * 2; - img->player.y += img->player.vy * 2; + img->player.x += img->player.vx * multiplicator; + img->player.y += img->player.vy * multiplicator; } else if (img->player.front == -1) { - img->player.x -= img->player.vx * 2; - img->player.y -= img->player.vy * 2; + img->player.x -= img->player.vx * multiplicator; + img->player.y -= img->player.vy * multiplicator; } if (img->player.side == 1) { @@ -98,6 +104,7 @@ int update_pos(t_data *img) img->player.vx = cos(deg_to_rad(img->player.angle)); img->player.vy = -sin(deg_to_rad(img->player.angle)); } + return (0); } // int is_good(t_data *img, int type)