diff options
Diffstat (limited to 'src/event.c')
| -rw-r--r-- | src/event.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/event.c b/src/event.c index 5a5b3e1..c91b204 100644 --- a/src/event.c +++ b/src/event.c @@ -6,16 +6,25 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/15 06:39:37 by cacharle #+# #+# */ -/* Updated: 2020/02/03 00:44:39 by cacharle ### ########.fr */ +/* Updated: 2020/02/04 23:50:51 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "cub3d.h" -#define ROTATE_STEP (M_PI / 20.0) -#define MOVE_SPEED 0.24 +#define ROTATE_STEP (M_PI / 12.0) +#define MOVE_SPEED 0.40 -int event_keydown(int key, t_state *state) +static t_bool valid_pos(t_state *state) +{ + return (state->pos.x > 0 && state->pos.y > 0 + && state->pos.x < (double)(state->map_width - 1) + && state->pos.y < (double)(state->map_height - 1) + && state->map[(int)state->pos.y][(int)state->pos.x] != CELL_WALL + && state->map[(int)state->pos.y][(int)state->pos.x] != CELL_ITEM); +} + +int event_keydown(int key, t_state *state) { t_vector saved_pos; @@ -38,12 +47,12 @@ int event_keydown(int key, t_state *state) helper_rotate_player(state, -ROTATE_STEP); else if (key == MLXK_RIGHT) helper_rotate_player(state, ROTATE_STEP); - if (state->map[(int)state->pos.y][(int)state->pos.x] == CELL_WALL) + if (!valid_pos(state)) state->pos = saved_pos; return (0); } -int event_quit(t_state *state) +int event_quit(t_state *state) { state->running = FALSE; return (0); |
