diff --git a/Makefile b/Makefile index 1117f1c..de68ada 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/02/13 16:27:49 by apommier #+# #+# # -# Updated: 2022/06/15 18:39:09 by apommier ### ########.fr # +# Updated: 2022/06/15 18:49:48 by apommier ### ########.fr # # # # **************************************************************************** # @@ -15,6 +15,10 @@ SRCS = srcs/main.c\ srcs/cast_ray/get_texture_array.c\ srcs/cast_ray/cast_ray.c\ srcs/cast_ray/utils.c\ + srcs/cast_ray/set_back.c\ + srcs/key_event/key.c\ + srcs/utils/cub_utils.c\ + srcs/utils/quit_game.c\ srcs/parsing/parse_map.c\ srcs/parsing/check_color_texture.c diff --git a/includes/Cub3D.h b/includes/Cub3D.h index c3a6ad0..361f382 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/15 17:44:44 by apommier ### ########.fr */ +/* Updated: 2022/06/15 18:42:10 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -127,4 +127,7 @@ void print_player(t_player player, t_data *img); void print_map(t_map_info map, t_data *img); void check_dir(char *path, t_data *img); +int key_pressed(int type, t_data *img); +int key_released(int type, t_data *img); + #endif diff --git a/srcs/cast_ray/cast_ray.c b/srcs/cast_ray/cast_ray.c index 85870c6..85309d3 100644 --- a/srcs/cast_ray/cast_ray.c +++ b/srcs/cast_ray/cast_ray.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../includes/Cub3D.h" +#include "../../includes/Cub3D.h" int get_color(char R, char G, char B) { diff --git a/srcs/cast_ray/get_texture_array.c b/srcs/cast_ray/get_texture_array.c index 0e4f8e2..c2f4045 100644 --- a/srcs/cast_ray/get_texture_array.c +++ b/srcs/cast_ray/get_texture_array.c @@ -6,11 +6,11 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/06 16:10:11 by apommier #+# #+# */ -/* Updated: 2022/06/15 18:10:05 by apommier ### ########.fr */ +/* Updated: 2022/06/15 18:41:04 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/Cub3D.h" +#include "../../includes/Cub3D.h" void put_texture_in_struct(char type, unsigned char *texture, t_data *img) { diff --git a/srcs/cast_ray/set_back.c b/srcs/cast_ray/set_back.c new file mode 100644 index 0000000..8d953e1 --- /dev/null +++ b/srcs/cast_ray/set_back.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/15 18:46:05 by apommier #+# #+# */ +/* Updated: 2022/06/15 18:46:55 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Cub3D.h" + +void set_back(t_data *img) +{ + int x; + + x = 0; + while (x < 512 * 960 * 4) + { + if (x > 512 * 960 * 2) + { + if (img->map.floor.b) + { + img->buffer[x + 0] = img->map.floor.b; + img->buffer[x + 1] = img->map.floor.g; + img->buffer[x + 2] = img->map.floor.r; + img->buffer[x + 3] = 0; + } + } + else + { + img->buffer[x + 0] = img->map.sky.b; + img->buffer[x + 1] = img->map.sky.g; + img->buffer[x + 2] = img->map.sky.r; + img->buffer[x + 3] = 0; + } + x += 4; + } +} \ No newline at end of file diff --git a/srcs/cast_ray/utils.c b/srcs/cast_ray/utils.c index 08d651a..b62ed44 100644 --- a/srcs/cast_ray/utils.c +++ b/srcs/cast_ray/utils.c @@ -6,46 +6,46 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 23:37:02 by apommier #+# #+# */ -/* Updated: 2022/06/15 18:13:51 by apommier ### ########.fr */ +/* Updated: 2022/06/15 18:49:14 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/Cub3D.h" +#include "../../includes/Cub3D.h" -void free_texture(t_data *img) -{ - if (img->map.texture.north) - free(img->map.texture.north); - if (img->map.texture.south) - free(img->map.texture.south); - if (img->map.texture.east) - free(img->map.texture.east); - if (img->map.texture.west) - free(img->map.texture.west); -} +// void free_texture(t_data *img) +// { +// if (img->map.texture.north) +// free(img->map.texture.north); +// if (img->map.texture.south) +// free(img->map.texture.south); +// if (img->map.texture.east) +// free(img->map.texture.east); +// if (img->map.texture.west) +// free(img->map.texture.west); +// } -int quit_game(t_data *img) -{ - if (img->mlx) - { - if (img->mlx_win) - mlx_destroy_window(img->mlx, img->mlx_win); - mlx_destroy_display(img->mlx); - free(img->mlx); - } - free_texture(img); - if (img->map.simple_map) - free(img->map.simple_map); - if (img->to_be_free.tab) - free_double(img->to_be_free.tab); - if (img->to_be_free.tab_two) - free_double(img->to_be_free.tab_two); - if (img->to_be_free.str) - free(img->to_be_free.str); - if (img->to_be_free.fd != -1) - close(img->to_be_free.fd); - exit(1); -} +// int quit_game(t_data *img) +// { +// if (img->mlx) +// { +// if (img->mlx_win) +// mlx_destroy_window(img->mlx, img->mlx_win); +// mlx_destroy_display(img->mlx); +// free(img->mlx); +// } +// free_texture(img); +// if (img->map.simple_map) +// free(img->map.simple_map); +// if (img->to_be_free.tab) +// free_double(img->to_be_free.tab); +// if (img->to_be_free.tab_two) +// free_double(img->to_be_free.tab_two); +// if (img->to_be_free.str) +// free(img->to_be_free.str); +// if (img->to_be_free.fd != -1) +// close(img->to_be_free.fd); +// exit(1); +// } double deg_to_rad(double angle) { @@ -66,76 +66,3 @@ void ft_error(char *error_msg) ft_putendl_fd(error_msg, 2); exit(1); } - -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 * multiplicator; - img->player.y += img->player.vy * multiplicator; - } - else if (img->player.front == -1) - { - img->player.x -= img->player.vx * multiplicator; - img->player.y -= img->player.vy * multiplicator; - } - if (img->player.side == 1) - { - img->player.x -= img->player.vy; - img->player.y += img->player.vx; - } - else if (img->player.side == -1) - { - img->player.x += img->player.vy; - img->player.y -= img->player.vx; - } - if (img->player.angle_side == -1) - { - img->player.angle += 1; - img->player.angle = reset_angle(img->player.angle); - img->player.vx = cos(deg_to_rad(img->player.angle)); - img->player.vy = -sin(deg_to_rad(img->player.angle)); - } - else if (img->player.angle_side == 1) - { - img->player.angle -= 1; - img->player.angle = reset_angle(img->player.angle); - img->player.vx = cos(deg_to_rad(img->player.angle)); - img->player.vy = -sin(deg_to_rad(img->player.angle)); - } - return (0); -} - -void set_back(t_data *img) -{ - int x; - - x = 0; - while (x < 512 * 960 * 4) - { - if (x > 512 * 960 * 2) - { - if (img->map.floor.b) - { - img->buffer[x + 0] = img->map.floor.b; - img->buffer[x + 1] = img->map.floor.g; - img->buffer[x + 2] = img->map.floor.r; - img->buffer[x + 3] = 0; - } - } - else - { - img->buffer[x + 0] = img->map.sky.b; - img->buffer[x + 1] = img->map.sky.g; - img->buffer[x + 2] = img->map.sky.r; - img->buffer[x + 3] = 0; - } - x += 4; - } -} diff --git a/srcs/key_event/key.c b/srcs/key_event/key.c new file mode 100644 index 0000000..1b67ae1 --- /dev/null +++ b/srcs/key_event/key.c @@ -0,0 +1,108 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* key.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/15 18:40:33 by apommier #+# #+# */ +/* Updated: 2022/06/15 18:45:35 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Cub3D.h" + +int key_pressed(int type, t_data *img) +{ + if (type == 65307) + quit_game(img); + if (type == 'w') + img->player.front = 1; + else if (type == 's') + img->player.front = -1; + else if (type == 'a') + img->player.side = -1; + else if (type == 'd') + img->player.side = 1; + else if (type == 65361) + img->player.angle_side = -1; + else if (type == 65363) + img->player.angle_side = 1; + else if (type == 65505) + img->player.shift = 1; + return (0); +} + +int key_released(int type, t_data *img) +{ + if (type == 'w') + img->player.front = 0; + else if (type == 's') + img->player.front = 0; + else if (type == 'a') + img->player.side = 0; + else if (type == 'd') + img->player.side = 0; + else if (type == 65361) + img->player.angle_side = 0; + else if (type == 65363) + img->player.angle_side = 0; + else if (type == 65505) + img->player.shift = 0; + return (0); +} + +void update_side(t_data *img) +{ + if (img->player.side == 1) + { + img->player.x -= img->player.vy; + img->player.y += img->player.vx; + } + else if (img->player.side == -1) + { + img->player.x += img->player.vy; + img->player.y -= img->player.vx; + } +} + +void update_angle_side(t_data *img) +{ + if (img->player.angle_side == -1) + { + img->player.angle += 1; + img->player.angle = reset_angle(img->player.angle); + img->player.vx = cos(deg_to_rad(img->player.angle)); + img->player.vy = -sin(deg_to_rad(img->player.angle)); + } + else if (img->player.angle_side == 1) + { + img->player.angle -= 1; + img->player.angle = reset_angle(img->player.angle); + img->player.vx = cos(deg_to_rad(img->player.angle)); + img->player.vy = -sin(deg_to_rad(img->player.angle)); + } +} + +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 * multiplicator; + img->player.y += img->player.vy * multiplicator; + } + else if (img->player.front == -1) + { + img->player.x -= img->player.vx * multiplicator; + img->player.y -= img->player.vy * multiplicator; + } + update_angle_side(img); + update_side(img); + return (0); +} \ No newline at end of file diff --git a/srcs/main.c b/srcs/main.c index eca5011..12324f6 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/15 18:11:33 by apommier ### ########.fr */ +/* Updated: 2022/06/15 18:42:53 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,46 +36,6 @@ void set_map_player(t_data *img) img->mlx_win = 0; } -int key_pressed(int type, t_data *img) -{ - if (type == 65307) - quit_game(img); - if (type == 'w') - img->player.front = 1; - else if (type == 's') - img->player.front = -1; - else if (type == 'a') - img->player.side = -1; - else if (type == 'd') - img->player.side = 1; - else if (type == 65361) - img->player.angle_side = -1; - else if (type == 65363) - img->player.angle_side = 1; - else if (type == 65505) - img->player.shift = 1; - return (0); -} - -int key_released(int type, t_data *img) -{ - if (type == 'w') - img->player.front = 0; - else if (type == 's') - img->player.front = 0; - else if (type == 'a') - img->player.side = 0; - else if (type == 'd') - img->player.side = 0; - else if (type == 65361) - img->player.angle_side = 0; - else if (type == 65363) - img->player.angle_side = 0; - else if (type == 65505) - img->player.shift = 0; - return (0); -} - int loop(t_data *img) { update_pos(img); diff --git a/srcs/utils/cub_utils.c b/srcs/utils/cub_utils.c new file mode 100644 index 0000000..82b4b76 --- /dev/null +++ b/srcs/utils/cub_utils.c @@ -0,0 +1,13 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cub_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/15 18:48:45 by apommier #+# #+# */ +/* Updated: 2022/06/15 18:48:47 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Cub3D.h" \ No newline at end of file diff --git a/srcs/utils/quit_game.c b/srcs/utils/quit_game.c new file mode 100644 index 0000000..a09ebf4 --- /dev/null +++ b/srcs/utils/quit_game.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* quit_game.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/15 18:48:35 by apommier #+# #+# */ +/* Updated: 2022/06/15 18:49:09 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/Cub3D.h" + +void free_texture(t_data *img) +{ + if (img->map.texture.north) + free(img->map.texture.north); + if (img->map.texture.south) + free(img->map.texture.south); + if (img->map.texture.east) + free(img->map.texture.east); + if (img->map.texture.west) + free(img->map.texture.west); +} + +int quit_game(t_data *img) +{ + if (img->mlx) + { + if (img->mlx_win) + mlx_destroy_window(img->mlx, img->mlx_win); + mlx_destroy_display(img->mlx); + free(img->mlx); + } + free_texture(img); + if (img->map.simple_map) + free(img->map.simple_map); + if (img->to_be_free.tab) + free_double(img->to_be_free.tab); + if (img->to_be_free.tab_two) + free_double(img->to_be_free.tab_two); + if (img->to_be_free.str) + free(img->to_be_free.str); + if (img->to_be_free.fd != -1) + close(img->to_be_free.fd); + exit(1); +} \ No newline at end of file