diff --git a/src/player/angle.c b/src/player/angle.c new file mode 100644 index 0000000..847496b --- /dev/null +++ b/src/player/angle.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* angle.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tchampio +#include +#include + +/* key parameter should be X's value such as XK_a */ +void apply_angle(int key, t_cub3d_data *data) +{ + double cos_angle; + double sin_angle; + + cos_angle = cos(data->player.yaw); + sin_angle = sin(data->player.yaw); + if (key == XK_a) + { + data->player.x += cos_angle * MOVEMENT_SPEED; + data->player.y -= sin_angle * MOVEMENT_SPEED; + } + if (key == XK_d) + { + data->player.x -= cos_angle * MOVEMENT_SPEED; + data->player.y += sin_angle * MOVEMENT_SPEED; + } + if (key == XK_w) + { + data->player.x += sin_angle * MOVEMENT_SPEED; + data->player.y += cos_angle * MOVEMENT_SPEED; + } + if (key == XK_s) + { + data->player.x -= sin_angle * MOVEMENT_SPEED; + data->player.y -= cos_angle * MOVEMENT_SPEED; + } +} diff --git a/src/player/angle.h b/src/player/angle.h new file mode 100644 index 0000000..a87c59b --- /dev/null +++ b/src/player/angle.h @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* angle.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tchampio +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:22:57 by kcolin #+# #+# */ -/* Updated: 2025/07/24 14:20:15 by tchampio ### ########.fr */ +/* Updated: 2025/07/24 14:47:14 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "../consts.h" +#include "../player/angle.h" #include "frees.h" #include #include @@ -19,11 +20,6 @@ int keypress_handler(int keycode, t_cub3d_data *data) { - double cos_angle; - double sin_angle; - - cos_angle = cos(data->player.yaw); - sin_angle = sin(data->player.yaw); if (keycode == XK_Escape) destroy(data); if (keycode == XK_Left) @@ -34,26 +30,9 @@ int keypress_handler(int keycode, t_cub3d_data *data) data->player.yaw -= 2 * M_PI; if (data->player.yaw < 0) data->player.yaw += 2 * M_PI; - if (keycode == XK_a) - { - data->player.x += cos_angle * MOVEMENT_SPEED; - data->player.y -= sin_angle * MOVEMENT_SPEED; - } - if (keycode == XK_d) - { - data->player.x -= cos_angle * MOVEMENT_SPEED; - data->player.y += sin_angle * MOVEMENT_SPEED; - } - if (keycode == XK_w) - { - data->player.x += sin_angle * MOVEMENT_SPEED; - data->player.y += cos_angle * MOVEMENT_SPEED; - } - if (keycode == XK_s) - { - data->player.x -= sin_angle * MOVEMENT_SPEED; - data->player.y -= cos_angle * MOVEMENT_SPEED; - } + if (keycode == XK_a || keycode == XK_d + || keycode == XK_w || keycode == XK_s) + apply_angle(keycode, data); return (0); }