fixed segfault when walking into outer wall

This commit is contained in:
djonker 2023-10-29 19:00:25 +01:00
parent d5c4fc5713
commit 663de33fc0
2 changed files with 15 additions and 10 deletions

View File

@ -8,7 +8,7 @@ WE ./assets/wood.png
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1 B1 1 1 1 1 1 1 B1 1 1 1 1 1
1 K D K K 1 C D D X 1 1 K D K K 1 C D D K K X 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 11111111111 11111111111 111111111111111111111 1 1111111111 1111111111 1 11111111111 11111111111 111111111111111111111 1 1111111111 1111111111
1 1B C B1 1 1 1 1 1 D K K 1 1 1 1B C B1 1 1 1 1 1 D K K 1 1

View File

@ -6,7 +6,7 @@
/* By: houtworm <codam@houtworm.net> +#+ */ /* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2023/10/26 16:50:23 by houtworm #+# #+# */ /* Created: 2023/10/26 16:50:23 by houtworm #+# #+# */
/* Updated: 2023/10/29 17:35:38 by houtworm ######## odam.nl */ /* Updated: 2023/10/29 18:57:04 by houtworm ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -16,17 +16,22 @@ void ft_movementkeys(t_varlist *vl)
{ {
double olddirx; double olddirx;
double oldplanex; double oldplanex;
double distance;
if (vl->side)
distance = vl->sidedisty - vl->deltadisty;
else
distance = vl->sidedistx - vl->deltadistx;
if (mlx_is_mouse_down(vl->mlx, MLX_MOUSE_BUTTON_LEFT)) if (mlx_is_mouse_down(vl->mlx, MLX_MOUSE_BUTTON_LEFT))
ft_putendl("shoot"); ft_putendl("shoot");
if (mlx_is_key_down(vl->mlx, MLX_KEY_W)) if (mlx_is_key_down(vl->mlx, MLX_KEY_W))
{ {
if (vl->map[(int)(vl->posx + vl->dirx * vl->movespeed)][(int)vl->posy] == '0') if (vl->map[(int)(vl->posx + vl->dirx * vl->movespeed)][(int)vl->posy] == '0' && distance > 0.5)
{ {
vl->posx += vl->dirx * vl->movespeed * vl->run; vl->posx += vl->dirx * vl->movespeed * vl->run;
vl->posy += vl->diry * vl->movespeed * vl->run; vl->posy += vl->diry * vl->movespeed * vl->run;
} }
if (vl->map[(int)vl->posx][(int)(vl->posy + vl->diry * vl->movespeed)] == '0') if (vl->map[(int)vl->posx][(int)(vl->posy + vl->diry * vl->movespeed)] == '0' && distance > 0.5)
{ {
vl->posx += vl->dirx * vl->movespeed * vl->run; vl->posx += vl->dirx * vl->movespeed * vl->run;
vl->posy += vl->diry * vl->movespeed * vl->run; vl->posy += vl->diry * vl->movespeed * vl->run;
@ -34,12 +39,12 @@ void ft_movementkeys(t_varlist *vl)
} }
if (mlx_is_key_down(vl->mlx, MLX_KEY_A)) if (mlx_is_key_down(vl->mlx, MLX_KEY_A))
{ {
if (vl->map[(int)(vl->posx - vl->dirx * vl->movespeed)][(int)vl->posy] == '0') if (vl->map[(int)(vl->posx - vl->dirx * vl->movespeed)][(int)vl->posy] == '0' && distance > 0.5)
{ {
vl->posx -= vl->diry * vl->movespeed * vl->run; vl->posx -= vl->diry * vl->movespeed * vl->run;
vl->posy += vl->dirx * vl->movespeed * vl->run; vl->posy += vl->dirx * vl->movespeed * vl->run;
} }
if (vl->map[(int)vl->posx][(int)(vl->posy - vl->diry * vl->movespeed)] == '0') if (vl->map[(int)vl->posx][(int)(vl->posy - vl->diry * vl->movespeed)] == '0' && distance > 0.5)
{ {
vl->posx -= vl->diry * vl->movespeed * vl->run; vl->posx -= vl->diry * vl->movespeed * vl->run;
vl->posy += vl->dirx * vl->movespeed * vl->run; vl->posy += vl->dirx * vl->movespeed * vl->run;
@ -47,12 +52,12 @@ void ft_movementkeys(t_varlist *vl)
} }
if (mlx_is_key_down(vl->mlx, MLX_KEY_S)) if (mlx_is_key_down(vl->mlx, MLX_KEY_S))
{ {
if (vl->map[(int)(vl->posx - vl->dirx * vl->movespeed)][(int)vl->posy] == '0') if (vl->map[(int)(vl->posx - vl->dirx * vl->movespeed)][(int)vl->posy] == '0' && distance > 0.5)
{ {
vl->posx -= vl->dirx * vl->movespeed * vl->run; vl->posx -= vl->dirx * vl->movespeed * vl->run;
vl->posy -= vl->diry * vl->movespeed * vl->run; vl->posy -= vl->diry * vl->movespeed * vl->run;
} }
if (vl->map[(int)vl->posx][(int)(vl->posy - vl->diry * vl->movespeed)] == '0') if (vl->map[(int)vl->posx][(int)(vl->posy - vl->diry * vl->movespeed)] == '0' && distance > 0.5)
{ {
vl->posx -= vl->dirx * vl->movespeed * vl->run; vl->posx -= vl->dirx * vl->movespeed * vl->run;
vl->posy -= vl->diry * vl->movespeed * vl->run; vl->posy -= vl->diry * vl->movespeed * vl->run;
@ -60,12 +65,12 @@ void ft_movementkeys(t_varlist *vl)
} }
if (mlx_is_key_down(vl->mlx, MLX_KEY_D)) if (mlx_is_key_down(vl->mlx, MLX_KEY_D))
{ {
if (vl->map[(int)(vl->posx + vl->dirx * vl->movespeed)][(int)vl->posy] == '0') if (vl->map[(int)(vl->posx + vl->dirx * vl->movespeed)][(int)vl->posy] == '0' && distance > 0.5)
{ {
vl->posx += vl->diry * vl->movespeed * vl->run; vl->posx += vl->diry * vl->movespeed * vl->run;
vl->posy -= vl->dirx * vl->movespeed * vl->run; vl->posy -= vl->dirx * vl->movespeed * vl->run;
} }
if (vl->map[(int)vl->posx][(int)(vl->posy + vl->diry * vl->movespeed)] == '0') if (vl->map[(int)vl->posx][(int)(vl->posy + vl->diry * vl->movespeed)] == '0' && distance > 0.5)
{ {
vl->posx += vl->diry * vl->movespeed * vl->run; vl->posx += vl->diry * vl->movespeed * vl->run;
vl->posy -= vl->dirx * vl->movespeed * vl->run; vl->posy -= vl->dirx * vl->movespeed * vl->run;