Archived
1
0

🔨」 fix(Keys): changed keysto match subject

This commit is contained in:
2024-11-11 13:45:56 +01:00
parent bb6f7993a4
commit a55ebc69b2
5 changed files with 158 additions and 39 deletions

View File

@ -6,7 +6,7 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */
/* Updated: 2024/11/10 16:57:46 by adjoly ### ########.fr */
/* Updated: 2024/11/11 13:37:32 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -38,6 +38,25 @@ void move_for_back(t_render *render, bool forward)
}
}
void move_right_left(t_render *render, bool right)
{
if (right)
{
render->player->coord.x += PLAYER_SPEED * \
sin(render->player->direction);
render->player->coord.y += PLAYER_SPEED * \
cos(render->player->direction);
}
else
{
render->player->coord.x -= PLAYER_SPEED * \
sin(render->player->direction);
render->player->coord.y -= PLAYER_SPEED * \
cos(render->player->direction);
}
}
int loop(void *param)
{
t_render *render;
@ -49,8 +68,12 @@ int loop(void *param)
if (render->player->key[2])
move_for_back(render, false);
if (render->player->key[3])
change_direction(PLAYER_ROT_SPEED, false, render->player);
move_right_left(render, true);
if (render->player->key[1])
move_right_left(render, false);
if (render->player->key[4])
change_direction(PLAYER_ROT_SPEED, false, render->player);
if (render->player->key[5])
change_direction(PLAYER_ROT_SPEED, true, render->player);
render->img = mlx_new_image(render->mlx, WINDOW_W, WINDOW_H);
render_frame(render);
@ -70,6 +93,13 @@ void delete_everything(t_pars *parsing, t_render *render)
free_pars(parsing);
}
void event_hook(t_render *render)
{
mlx_on_event(render->mlx, render->win, MLX_KEYDOWN, key_down, render);
mlx_on_event(render->mlx, render->win, MLX_KEYUP, key_up, render);
mlx_on_event(render->mlx, render->win, MLX_WINDOW_EVENT, window_event, render);
}
int main(int ac, char **av)
{
t_render render;
@ -90,9 +120,8 @@ int main(int ac, char **av)
render.player = &player;
render.world = &world;
init_texture(&render, parsing);
event_hook(&render);
render.img = mlx_new_image(render.mlx, WINDOW_W, WINDOW_H);
mlx_on_event(render.mlx, render.win, MLX_KEYDOWN, key_down, &render);
mlx_on_event(render.mlx, render.win, MLX_KEYUP, key_up, &render);
mlx_loop_hook(render.mlx, loop, &render);
mlx_loop(render.mlx);
delete_everything(&parsing, &render);

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* key_hook.c :+: :+: :+: */
/* event.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/11 16:37:56 by adjoly #+# #+# */
/* Updated: 2024/11/07 12:20:02 by adjoly ### ########.fr */
/* Updated: 2024/11/11 13:29:30 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -24,34 +24,6 @@ void change_direction(float speed, bool clockwise, t_player *player)
fix_ang(&player->direction);
}
int key_hook(int key, void *param)
{
t_render *render;
render = (t_render *)param;
if (key == ESCAPE_KEY)
return (mlx_loop_end(render->mlx));
if (key == W_KEY)
{
render->player->coord.x += PLAYER_SPEED * \
cos(render->player->direction);
render->player->coord.y += PLAYER_SPEED * \
-sin(render->player->direction);
}
else if (key == S_KEY)
{
render->player->coord.x -= PLAYER_SPEED * \
cos(render->player->direction);
render->player->coord.y -= PLAYER_SPEED * \
-sin(render->player->direction);
}
else if (key == D_KEY)
change_direction(PLAYER_ROT_SPEED, false, render->player);
else if (key == A_KEY)
change_direction(PLAYER_ROT_SPEED, true, render->player);
return (0);
}
int key_down(int key, void *param)
{
t_render *render;
@ -67,6 +39,10 @@ int key_down(int key, void *param)
render->player->key[2] = true;
else if (key == D_KEY)
render->player->key[3] = true;
else if (key == RIGHT_KEY)
render->player->key[4] = true;
else if (key == LEFT_KEY)
render->player->key[5] = true;
return (0);
}
@ -83,5 +59,16 @@ int key_up(int key, void *param)
render->player->key[2] = false;
else if (key == D_KEY)
render->player->key[3] = false;
else if (key == RIGHT_KEY)
render->player->key[4] = false;
else if (key == LEFT_KEY)
render->player->key[5] = false;
return (0);
}
int window_event(int event, void *param)
{
if (event == 0)
mlx_loop_end(((t_render *)param)->mlx);
return (0);
}