/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* fdf.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/11/04 07:43:17 by narnaud #+# #+# */ /* Updated: 2022/02/24 13:44:31 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "fdf.h" /* Function init_datas * ------------------- * datas : * fd : */ void init_map(t_datas *datas, int fd) { t_camera *cam; t_map *map; int y; map = ft_calloc(1, sizeof(t_map)); map->altitude = ft_calloc(512000, sizeof(int *)); cam = ft_calloc(1, sizeof(t_camera)); datas->map = parse_file(fd, map); map->z_mult = SCALE / (2 * map->hightest); cam->ang.yaw = trigo_calc((DEF_YAW % 360) * 3.1415 / 180); cam->ang.pitch = trigo_calc((DEF_PITCH % 360) * 3.1415 / 180); cam->zoom = SCALE * WIN_Y_SZ / map->depth; cam->center.x = WIN_X_SZ / 2; cam->center.y = WIN_Y_SZ / 2; y = 0; cam->render = ft_calloc(datas->map->depth, sizeof(t_2di *)); while (y < map->depth) { cam->render[y] = (t_2di *)ft_calloc(datas->map->width, sizeof(t_2di)); y++; } datas->cam = cam; } void init_window(t_datas *datas) { void *mlx; void *window; mlx = mlx_init(); if (!mlx) exit(error_msg("Mlx fail to init", 1)); datas->mlx = mlx; window = mlx_new_window(mlx, WIN_X_SZ, WIN_Y_SZ, "FdF"); if (!window) exit(error_msg("Mlx fail to create window", 1)); datas->win = window; } int main(int argc, char const *argv[]) { t_datas *datas; int fd; if (argc != 2) return (error_msg("Wrong arguments.\n", 0)); fd = open(argv[1], O_RDONLY); if (fd < 0) return (error_msg("File error:", 1)); else if (ft_strncmp(get_file_ext(argv[1]), "fdf", 4)) return (error_msg("Wrong file extension.\n", 0)); datas = (t_datas *)malloc(sizeof(t_datas)); init_window(datas); init_map(datas, fd); draw_map(datas); mlx_key_hook(datas->win, key_hook_primary, datas); mlx_loop(datas->mlx); return (0); }