diff options
-rw-r--r-- | inc/cub3d.h | 1 | ||||
-rw-r--r-- | map/lvl_one.cub | 2 | ||||
-rw-r--r-- | src/ft_exit.c | 2 | ||||
-rw-r--r-- | src/ft_init_lists.c | 2 | ||||
-rw-r--r-- | src/ft_key_loop.c | 13 | ||||
-rw-r--r-- | src/ft_warp_level.c | 17 |
6 files changed, 17 insertions, 20 deletions
diff --git a/inc/cub3d.h b/inc/cub3d.h index a7b649d..e351fa9 100644 --- a/inc/cub3d.h +++ b/inc/cub3d.h @@ -27,6 +27,7 @@ void ft_init_ref(t_cub *clist); int8_t ft_init_cub3d(t_cub *clist); int ft_init_winlx(t_cub *clist); int ft_init_winptr(t_cub *clist); +t_player ft_init_player(void); t_ray ft_init_s_ray(void); t_rgb ft_init_rgb(void); int8_t ft_init_map(t_map *mlist); diff --git a/map/lvl_one.cub b/map/lvl_one.cub index 2c52287..64c741b 100644 --- a/map/lvl_one.cub +++ b/map/lvl_one.cub @@ -1,4 +1,4 @@ -R 1440 1000 +R 800 600 NO ./media/img/BRIQUASSE_3.xpm SO ./media/img/BRIQUASSE_3.xpm diff --git a/src/ft_exit.c b/src/ft_exit.c index 3b00701..4125567 100644 --- a/src/ft_exit.c +++ b/src/ft_exit.c @@ -62,6 +62,8 @@ static void mlx_destroy_image(clist->wlist.wlx, clist->tlist[6].img); if (clist->mlist.isctex && clist->tlist[7].img) mlx_destroy_image(clist->wlist.wlx, clist->tlist[7].img); + if (clist->mlist.istrap && clist->tlist[15].img) + mlx_destroy_image(clist->wlist.wlx, clist->tlist[15].img); } int diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c index bd2ae74..8ba9a13 100644 --- a/src/ft_init_lists.c +++ b/src/ft_init_lists.c @@ -28,7 +28,7 @@ t_rgb return (rgb); } -static t_player +t_player ft_init_player(void) { t_player plist; diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c index d3e871b..c68b228 100644 --- a/src/ft_key_loop.c +++ b/src/ft_key_loop.c @@ -26,7 +26,7 @@ static uint64_t return (pl->pos_x - (pl->dir_y * FT_COLL_MULT)); else if (key == 3) return (pl->pos_x - (pl->dir_x * (FT_COLL_MULT / 2))); - return (1); + return ((uint64_t)pl->pos_x); } static uint64_t @@ -40,9 +40,10 @@ static uint64_t return (pl->pos_y - (pl->dir_x * FT_COLL_MULT)); else if (key == 3) return (pl->pos_y + (pl->dir_y * (FT_COLL_MULT / 2))); - return (1); + return ((uint64_t)pl->pos_y); } +#include <stdio.h> static void ft_collision(float old_y, float old_x, int32_t key, t_cub *cl) { @@ -75,8 +76,12 @@ int ft_collision(old_y, old_x, cl->key_input[i], cl); if (cl->mlist.isnlvl) { - if (ft_warp_level(cl) < 0) - return (ft_exit(FT_RET_FAILED_STRUCTS, cl)); + if ((uint32_t)cl->plist.pos_x == cl->mlist.nlx && + (uint32_t)cl->plist.pos_y == cl->mlist.nly) + { + return ((ft_warp_level(cl) < 0) ? + (ft_exit(FT_RET_FAILED_STRUCTS, cl)) : (0)); + } } i++; } diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c index 3c9110f..a4f705b 100644 --- a/src/ft_warp_level.c +++ b/src/ft_warp_level.c @@ -47,16 +47,7 @@ static void { uint8_t i; - cl->plist.pos_x = 0; - cl->plist.pos_y = 0; - cl->plist.pos_z = 0; - cl->plist.start_x = 0; - cl->plist.start_y = 0; - cl->plist.cam_x = 0; - cl->plist.dir_x = -1; - cl->plist.dir_y = 0; - cl->plist.plane_x = 0; - cl->plist.plane_y = 0.66; + cl->plist = ft_init_player(); cl->f_rgb = ft_init_rgb(); cl->c_rgb = ft_init_rgb(); cl->rlist = ft_init_s_ray(); @@ -70,6 +61,8 @@ static void mlx_destroy_image(cl->wlist.wlx, cl->tlist[6].img); if (cl->mlist.isctex && cl->tlist[7].img) mlx_destroy_image(cl->wlist.wlx, cl->tlist[7].img); + if (cl->mlist.istrap && cl->tlist[15].img) + mlx_destroy_image(cl->wlist.wlx, cl->tlist[15].img); } static void @@ -100,9 +93,6 @@ int8_t char *tmp_mup; uint8_t isoldmus; - if ((uint32_t)cl->plist.pos_x == cl->mlist.nlx && - (uint32_t)cl->plist.pos_y == cl->mlist.nly) - { if (!(next_path = (char *)malloc((ft_strlen( cl->mlist.nlevel_path) + 1) * sizeof(char)))) return (-1); @@ -119,6 +109,5 @@ int8_t ft_memdel((void**)&tmp_mup); ft_wall_tex_init(cl); ft_memdel((void**)&next_path); - } return (0); } |