/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* map.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cchauvet exit[2] = 0; map->player_pos[2] = 0; map->patern = ft_readfile(path); if (ft_map_is_correct(map) == 0) return (NULL); return (map); } static char *ft_get_line(const char *line, size_t player_x) { char *out; size_t start; size_t stop; size_t temp; size_t i; temp = ft_strlen(line); if (player_x + RENDER_DISTANCE > temp) stop = temp; else stop = player_x + RENDER_DISTANCE; if (player_x < RENDER_DISTANCE + 1) start = RENDER_DISTANCE - player_x; else start = player_x - RENDER_DISTANCE; if (RENDER_DISTANCE > player_x) temp = 0; else temp = player_x - RENDER_DISTANCE; out = ft_strgen('0', RENDER_DISTANCE * 2 + 1); if (out == NULL) return (NULL); i = 0; while (i < stop + 1) { out[start + i] = line[temp + i]; i++; } return (out); } char **ft_get_player_map(t_map map) { char **player_map; size_t y; size_t i; player_map = malloc(RENDER_DISTANCE * 2 + 2); if (player_map == NULL) return (NULL); i = 0; y = 0; while (y < RENDER_DISTANCE * 2 + 1) { player_map[y] = ft_strgen('0', RENDER_DISTANCE * 2 + 1); if (map.player_pos[1] + y >= RENDER_DISTANCE && map.patern[i] != NULL) { player_map[y] = ft_get_line(map.patern[i], map.player_pos[0]); i++; } if (player_map[y] == NULL) { ft_cancel(player_map, y); return (NULL); } y++; } player_map[y] = NULL; return (player_map); }