diff --git a/includes/game/settings.h b/includes/game/settings.h index bbf58cc..ea36393 100644 --- a/includes/game/settings.h +++ b/includes/game/settings.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/04 14:06:39 by adjoly #+# #+# */ -/* Updated: 2024/11/02 15:55:02 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 13:19:25 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,5 +29,6 @@ # define FOV 70 # define CHUNK_SIZE 64 +# define TEXTURE_SIZE 128 #endif diff --git a/includes/utils.h b/includes/utils.h new file mode 100644 index 0000000..4613c13 --- /dev/null +++ b/includes/utils.h @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/06 13:03:02 by adjoly #+# #+# */ +/* Updated: 2024/11/06 13:21:21 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef UTILS_H +# define UTILS_H + +# include "parsing.h" +# include "game/game.h" + +t_player init_player(t_pars parsing); +t_map init_world(t_pars parsing); +void init_texture(t_render *render, t_pars parsing); + +#endif diff --git a/leflo.png b/leflo.png new file mode 100755 index 0000000..79fae6f Binary files /dev/null and b/leflo.png differ diff --git a/map.cub b/map.cub index a4f0d77..ac0a418 100755 --- a/map.cub +++ b/map.cub @@ -1,10 +1,10 @@ -NO ./no_texture.png +NO ./leflo.png -SO ./so_texture.png +SO ./leflo.png -WE ./we_texture.png -EA ./ea_texture.png +WE ./leflo.png +EA ./leflo.png C 255,100,200 F 50,0,250 @@ -13,7 +13,6 @@ F 50,0,250 111111 11111111111111 111111111111 -0 11101 1111111111111111 111111111111111 111111111111111111111111 diff --git a/src/cub3d.c b/src/cub3d.c index 3bce937..e9eb975 100644 --- a/src/cub3d.c +++ b/src/cub3d.c @@ -6,16 +6,19 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */ -/* Updated: 2024/11/06 12:53:52 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 13:43:14 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "cub3d.h" #include "game/game.h" #include "game/settings.h" +#include "game/vectwo.h" #include "libft.h" #include "mlx.h" +#include "parsing.h" #include +#include "utils.h" int loop(void *param) { @@ -34,27 +37,29 @@ int main(int ac, char **av) t_render render; t_map world; t_player player; + t_pars parsing; - render.player = &player; - render.world = &world; - world.celling = 0xffffa07a; - world.floor = 0xffadd8e6; - world.arr = ft_split("11111 10001 10001 10001 11111", ' '); - world.size.x = 5; - world.size.y = 5; - player.coord.x = 2 * CHUNK_SIZE; - player.coord.y = 3 * CHUNK_SIZE; - player.direction = 0; + parsing = init_pars(); + if (basics_check(ac, av, &parsing)) + return (EXIT_FAILURE); render.mlx = mlx_init(); render.win = mlx_new_window(render.mlx, WINDOW_W, WINDOW_H, "WTF"); + player = init_player(parsing); + world = init_world(parsing); + render.player = &player; + render.world = &world; + init_texture(&render, parsing); render.img = mlx_new_image(render.mlx, WINDOW_W, WINDOW_H); - (void)ac; - (void)av; mlx_on_event(render.mlx, render.win, MLX_KEYDOWN, key_hook, &render); mlx_loop_hook(render.mlx, loop, &render); mlx_loop(render.mlx); mlx_destroy_image(render.mlx, render.img); + mlx_destroy_image(render.mlx, render.texture[0]); + mlx_destroy_image(render.mlx, render.texture[1]); + mlx_destroy_image(render.mlx, render.texture[2]); + mlx_destroy_image(render.mlx, render.texture[3]); mlx_destroy_window(render.mlx, render.win); mlx_destroy_display(render.mlx); - return (0); + free_pars(&parsing); + return (EXIT_SUCCESS); } diff --git a/src/other.c b/src/other.c deleted file mode 100644 index 0172cfe..0000000 --- a/src/other.c +++ /dev/null @@ -1,21 +0,0 @@ - -void f_c_color(void *mlx, void *win, t_pars *pars) -{ - int x; - int y; - - x = 0; - y = 0; - - while (y <= (400 / 2)) //changer 400 par le define - { - x = 0; - while (x <= 800) //changer 800 par le define - { - mlx_pixel_put(mlx, win, x, y, pars->c_color); - mlx_pixel_put(mlx, win, x, 400 - y, pars->f_color); // changer 400 par le define - x++; - } - y++; - } -} diff --git a/src/raycasting/dda.c b/src/raycasting/dda.c index a070334..06f6bb8 100644 --- a/src/raycasting/dda.c +++ b/src/raycasting/dda.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/07 16:55:09 by adjoly #+# #+# */ -/* Updated: 2024/11/06 12:34:58 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 13:21:38 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -68,7 +68,8 @@ void setup_dda_hor(t_player *play, t_ray *ray, t_dda *dda) void dda_loop(t_dda *dda, t_ray *ray, t_map *map, t_player *play) { - while (dda->s && dda->i) { + while (dda->s && dda->i) + { dda->map.x = (ray->pos.x / 64); dda->map.y = (ray->pos.y / 64); if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \ diff --git a/src/raycasting/renderer.c b/src/raycasting/renderer.c index 856cb55..fdf3cf8 100644 --- a/src/raycasting/renderer.c +++ b/src/raycasting/renderer.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/28 15:48:39 by adjoly #+# #+# */ -/* Updated: 2024/11/06 11:59:23 by madumerg ### ########.fr */ +/* Updated: 2024/11/06 13:57:29 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,10 +66,11 @@ void print_line(t_render *render, t_ray *ray, int x) if (line_start < 0) line_start = 0; if (line_stop > WINDOW_H) - line_stop = WINDOW_H - 1; + line_stop = WINDOW_H; while (line_start < line_stop) { - mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE); + if (x < WINDOW_W && x >= 0) + mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE); line_start++; } } diff --git a/src/utils/convert_parsing.c b/src/utils/convert_parsing.c new file mode 100644 index 0000000..63b0098 --- /dev/null +++ b/src/utils/convert_parsing.c @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* convert_parsing.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/06 13:01:03 by adjoly #+# #+# */ +/* Updated: 2024/11/06 13:44:16 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game/settings.h" +#include "mlx.h" +#include "parsing.h" +#include "game/game.h" + +t_player init_player(t_pars parsing) +{ + t_player player; + + player.coord.x = parsing.coor.x * CHUNK_SIZE + (CHUNK_SIZE / 2); + player.coord.y = parsing.coor.y * CHUNK_SIZE + (CHUNK_SIZE / 2); + if (parsing.l_player == 'N') + player.direction = M_PI / 2; + else if (parsing.l_player == 'S') + player.direction = -(M_PI / 2); + else if (parsing.l_player == 'W') + player.direction = M_PI; + else if (parsing.l_player == 'E') + player.direction = 0; + return (player); +} + +t_map init_world(t_pars parsing) +{ + t_map map; + + map.arr = parsing.map; + map.size.x = ft_strlen(parsing.map[0]); + map.size.y = ft_count_line_map(parsing.map, 0); + map.floor = parsing.f_color; + map.celling = parsing.c_color; + return (map); +} + +void init_texture(t_render *render, t_pars parsing) +{ + int i; + + render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, &i, &i); + render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, &i, &i); + render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, &i, &i); + render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, &i, &i); +}