aboutsummaryrefslogtreecommitdiff
path: root/src/event.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-02-05 01:29:44 +0100
committerCharles <sircharlesaze@gmail.com>2020-02-05 01:29:44 +0100
commitaf747497060d8a311204ec58b3ac87cc585462fc (patch)
tree2022e10ac93243772f22f281071a4e0fd5c55f1d /src/event.c
parent3b224458a5d539bbe00318d939c9a099f3f158e1 (diff)
downloadcub3d-af747497060d8a311204ec58b3ac87cc585462fc.tar.gz
cub3d-af747497060d8a311204ec58b3ac87cc585462fc.tar.bz2
cub3d-af747497060d8a311204ec58b3ac87cc585462fc.zip
better parsing
Diffstat (limited to 'src/event.c')
-rw-r--r--src/event.c21
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);