using System; using System.Collections.Generic; using OMI.Formats.Pck; namespace PckStudio.Core.DLC { public class DLCPackageContent { public static DLCPackageContent Empty => new DLCPackageContent(nameof(Empty), default); public bool IsEmpty { get; } public string Name { get; } public PckFile MainPck { get; } public bool HasDataFolder => DataFolder != null; public DLCDataFolderContent DataFolder { get; } public record DLCDataFolderContent { public NamedData TexturePck { get; } public List> Files { get; } public DLCDataFolderContent(NamedData texturePck, NamedData[] files) { TexturePck = texturePck; Files = new List>(files); } public void AddFile(NamedData namedData) => Files.Add(namedData); public void AddFiles(NamedData[] namedData) => Files.AddRange(namedData); public void AddFile(string name, byte[] data) => AddFile(new NamedData(name, data)); } public DLCPackageContent(string name, PckFile mainPck, NamedData texturePck, NamedData[] dataFiles) : this(name, mainPck, new(texturePck, dataFiles ?? Array.Empty>())) { } public DLCPackageContent(string name, PckFile mainPck, DLCDataFolderContent dataFolderContent) { MainPck = mainPck; DataFolder = dataFolderContent; Name = name; IsEmpty = mainPck is null; } public DLCPackageContent(string name, PckFile mainPck) : this(name, mainPck, default) { } } }