/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_extra_keys.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:22:32 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:23:42 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include static void ft_hitscan(t_cub *cl, uint16_t hit) { while (hit == 0) { if (cl->rlist.x_side_dist < cl->rlist.y_side_dist) { cl->rlist.x_side_dist += cl->rlist.x_delta_dist; cl->rlist.sqx += cl->mlist.x_step; cl->rlist.side = 0; } else { cl->rlist.y_side_dist += cl->rlist.y_delta_dist; cl->rlist.sqy += cl->mlist.y_step; cl->rlist.side = 1; } if (ft_ischarset(FT_CHRST_SPRITES, cl->mlist.map[cl->rlist.sqx][cl->rlist.sqy])) { hit = 1; cl->mlist.map[cl->rlist.sqx][cl->rlist.sqy] = '0'; ft_get_sprite_spawn(cl); } else if (ft_ischarset("1", cl->mlist.map[cl->rlist.sqx][cl->rlist.sqy])) hit = 1; } } void ft_shoot(t_cub *cl, uint16_t i) { t_win *wl; t_player *pl; wl = &cl->wlist; pl = &cl->plist; pl->cam_x = 2 * i / (float)(wl->x_size) - 1; cl->rlist.x_ray_pos = pl->pos_y; cl->rlist.y_ray_pos = pl->pos_x; cl->rlist.x_ray_dir = pl->dir_x + pl->plane_x * pl->cam_x; cl->rlist.y_ray_dir = pl->dir_y + pl->plane_y * pl->cam_x; cl->rlist.sqx = (int16_t)cl->rlist.x_ray_pos; cl->rlist.sqy = (int16_t)cl->rlist.y_ray_pos; ft_detection_init_x(cl); ft_detection_init_y(cl); ft_hitscan(cl, 0); }