aboutsummaryrefslogtreecommitdiff
path: root/event.c
diff options
context:
space:
mode:
Diffstat (limited to 'event.c')
-rw-r--r--event.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/event.c b/event.c
index 0d6c113..ab3d12b 100644
--- a/event.c
+++ b/event.c
@@ -6,12 +6,15 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/11/15 06:39:37 by cacharle #+# #+# */
-/* Updated: 2019/11/16 12:44:15 by cacharle ### ########.fr */
+/* Updated: 2019/11/18 02:31:23 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "cub3d.h"
+#define ROTATE_SIZE (M_PI / 20.0)
+#define MOVE_SPEED 0.5
+
int handle_key(int key, void *param)
{
t_state *state;
@@ -21,12 +24,16 @@ int handle_key(int key, void *param)
if (key == MLXK_ESC)
state->running = FALSE;
if (key == MLXK_A)
- state->pos.x -= 0.5;
+ state->pos = vector_add(state->pos, vector_rotate(vector_scale(state->dir, MOVE_SPEED), M_PI_2));
if (key == MLXK_D)
- state->pos.x += 0.5;
+ state->pos = vector_add(state->pos, vector_rotate(vector_scale(state->dir, MOVE_SPEED), -M_PI_2));
if (key == MLXK_W)
- state->pos.y -= 0.5;
+ state->pos = vector_add(state->pos, vector_scale(state->dir, MOVE_SPEED));
if (key == MLXK_S)
- state->pos.y += 0.5;
+ state->pos = vector_add(state->pos, vector_scale(state->dir, -MOVE_SPEED));
+ if (key == MLXK_LEFT)
+ state->dir = vector_rotate(state->dir, -ROTATE_SIZE);
+ if (key == MLXK_RIGHT)
+ state->dir = vector_rotate(state->dir, ROTATE_SIZE);
return (0);
}