using System; using System.Collections.Generic; using OMI.Formats.Pck; namespace PckStudio.Core.DLC { public class DLCPackageContent { public static DLCPackageContent Empty => new DLCPackageContent(default); internal bool IsEmpty { get; } internal PckFile MainPck { get; } internal 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(PckFile mainPck, NamedData texturePck, NamedData[] dataFiles) : this(mainPck, new(texturePck, dataFiles ?? Array.Empty>())) { } public DLCPackageContent(PckFile mainPck, DLCDataFolderContent dataFolderContent) { MainPck = mainPck; DataFolder = dataFolderContent; IsEmpty = mainPck is null; } public DLCPackageContent(PckFile mainPck) : this(mainPck, default) { } } }