diff --git a/README.md b/README.md index db39df2..59dfb25 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +# todo + +- resolve view buble +- add slide against wall +- resolve vertical ray +- add textures + # ressources - [tuto mlx](https://harm-smits.github.io/42docs/libs/minilibx/getting_started.html) diff --git a/headers/cube3d_proto.h b/headers/cube3d_proto.h index a699fc0..743e4c7 100644 --- a/headers/cube3d_proto.h +++ b/headers/cube3d_proto.h @@ -55,8 +55,8 @@ void rotate_double(t_plr *plr, t_d_coord *coord); void plr_turn_right(t_plr *plr); void plr_turn_left(t_plr *plr); // player_limits.c -int plr_out_limits(t_game *game, int x, int y); int is_wall(t_game *game, int cell_x, int cell_y); +int plr_out_limits(t_game *game, int x, int y); // ------------------------------- // SRC/DRAW diff --git a/srcs/player/player_moves.c b/srcs/player/player_moves.c index 1bf43d7..f436e40 100644 --- a/srcs/player/player_moves.c +++ b/srcs/player/player_moves.c @@ -3,12 +3,18 @@ void plr_posx_decrement(t_game *game, t_plr *plr) { t_d_coord pos; + int limit_x; + int limit_y; pos.x = plr->exact.x - PLR_MV; pos.y = plr->exact.y; rotate_double(plr, &pos); - if (plr_out_limits(game, pos.x, pos.y)) - return ; + limit_x = plr_out_limits(game, pos.x, plr->pos.y); + limit_y = plr_out_limits(game, plr->pos.x, pos.y); + if (limit_x) + pos.x = plr->exact.x; + if (limit_y) + pos.y = plr->exact.y; plr->exact.x = pos.x; plr->exact.y = pos.y; (plr->pos.x) = (int)(pos.x); @@ -18,12 +24,18 @@ void plr_posx_decrement(t_game *game, t_plr *plr) void plr_posy_decrement(t_game *game, t_plr *plr) { t_d_coord pos; + int limit_x; + int limit_y; pos.x = plr->exact.x; pos.y = plr->exact.y - PLR_MV; rotate_double(plr, &(pos)); - if (plr_out_limits(game, pos.x, pos.y)) - return ; + limit_x = plr_out_limits(game, pos.x, plr->pos.y); + limit_y = plr_out_limits(game, plr->pos.x, pos.y); + if (limit_x) + pos.x = plr->exact.x; + if (limit_y) + pos.y = plr->exact.y; plr->exact.x = pos.x; plr->exact.y = pos.y; (plr->pos.x) = (int)(pos.x); @@ -33,12 +45,18 @@ void plr_posy_decrement(t_game *game, t_plr *plr) void plr_posx_increment(t_game *game, t_plr *plr) { t_d_coord pos; + int limit_x; + int limit_y; pos.x = plr->exact.x + PLR_MV; pos.y = plr->exact.y; rotate_double(plr, &(pos)); - if (plr_out_limits(game, pos.x, pos.y)) - return ; + limit_x = plr_out_limits(game, pos.x, plr->pos.y); + limit_y = plr_out_limits(game, plr->pos.x, pos.y); + if (limit_x) + pos.x = plr->exact.x; + if (limit_y) + pos.y = plr->exact.y; plr->exact.x = pos.x; plr->exact.y = pos.y; (plr->pos.x) = (int)(pos.x); @@ -48,12 +66,18 @@ void plr_posx_increment(t_game *game, t_plr *plr) void plr_posy_increment(t_game *game, t_plr *plr) { t_d_coord pos; + int limit_x; + int limit_y; pos.x = plr->exact.x; pos.y = plr->exact.y + PLR_MV; rotate_double(plr, &(pos)); - if (plr_out_limits(game, pos.x, pos.y)) - return ; + limit_x = plr_out_limits(game, pos.x, plr->pos.y); + limit_y = plr_out_limits(game, plr->pos.x, pos.y); + if (limit_x) + pos.x = plr->exact.x; + if (limit_y) + pos.y = plr->exact.y; plr->exact.x = pos.x; plr->exact.y = pos.y; (plr->pos.x) = (int)(pos.x);