using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Toolbox.Library; namespace LayoutBXLYT { /// /// A class that manages parts for layout files /// public class PartsManager : IDisposable { public Dictionary PartLayouts = new Dictionary(); public Dictionary PartAnimations = new Dictionary(); public Dictionary PartArchives = new Dictionary(); public void AddLayout(BxlytHeader header) { if (!PartLayouts.ContainsKey(header.FileName)) PartLayouts.Add(header.FileName, header); } public IFileFormat TryGetLayout(string fileName) { if (PartLayouts.ContainsKey(fileName)) return PartLayouts[fileName].FileInfo; return null; } public void AddAnimation(BxlanHeader header) { if (!PartAnimations.ContainsKey(header.FileName)) PartAnimations.Add(header.FileName, header); } public void AddArchive(IArchiveFile archive) { if (!PartArchives.ContainsKey(((IFileFormat)archive).FileName)) PartArchives.Add(((IFileFormat)archive).FileName, archive); } public void Dispose() { foreach (var file in PartLayouts.Values) file.Dispose(); foreach (var file in PartAnimations.Values) file.Dispose(); foreach (var file in PartArchives.Values) ((IFileFormat)file).Unload(); PartLayouts.Clear(); PartAnimations.Clear(); PartArchives.Clear(); } } }