/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* spritesheet.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: kdx 10 || ft_strchr(pattern, 'X') == NULL) return (NULL); path = ft_strdup(pattern); if (path == NULL) return (NULL); path_x = ft_strchr(path, 'X'); if (ft_alloc(&sheet, sizeof(t_spritesheet))) return (ft_free(path)); i = -1; while (++i < frames) { *path_x = '0' + i; sheet->frame[sheet->frame_count] = load_sprite(sily, path); if (sheet->frame[sheet->frame_count] == NULL) ft_free(path); if (sheet->frame[sheet->frame_count++] == NULL) return (spritesheet_destroy(sily, sheet)); } ft_free(path); return (sheet); } void *spritesheet_destroy(t_sily *sily, t_spritesheet *sheet) { if (sheet != NULL) { while (sheet->frame_count-- > 0) sprite_destroy(sily, sheet->frame[sheet->frame_count]); ft_free(sheet); } return (NULL); }