Cube3d/srcs/parsing/get_textures.c

53 lines
1.9 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* get_textures.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/24 12:37:11 by lfirmin #+# #+# */
/* Updated: 2025/08/24 12:37:11 by lfirmin ### ########.fr */
/* */
/* ************************************************************************** */
#include "cub.h"
int get_texture_path(char *line, t_textures *texture)
{
if (is_texture_line(line) == 1)
texture->north = ft_strtrim(line + 2, " \t\n\r");
else if (is_texture_line(line) == 2)
texture->south = ft_strtrim(line + 2, " \t\n\r");
else if (is_texture_line(line) == 3)
texture->west = ft_strtrim(line + 2, " \t\n\r");
else if (is_texture_line(line) == 4)
texture->east = ft_strtrim(line + 2, " \t\n\r");
else if (is_color_line(line) == 1) // F
get_rgb_values(line, texture->floor);
else if (is_color_line(line) == 2) // C
get_rgb_values(line, texture->ceiling);
return (0);
}
int get_rgb_values(char *line, int rgb[3])
{
char *start;
char **parts;
int i;
if (!line || !rgb)
return (1);
start = ft_strchr(line, ' ');
if (!start)
return (1);
parts = ft_split(start + 1, ',');
if (!parts)
return (1);
i = 0;
while (parts[i] && i < 3)
{
rgb[i] = ft_atoi(parts[i]);
i++;
}
free_char_array(parts);
return (i == 3 ? 0 : 1);
}