diff --git a/Obsidian/Data/Wad/IWadTreeParent.cs b/Obsidian/Data/Wad/IWadTreeParent.cs index 508ebb9..72e9c6d 100644 --- a/Obsidian/Data/Wad/IWadTreeParent.cs +++ b/Obsidian/Data/Wad/IWadTreeParent.cs @@ -28,7 +28,7 @@ WadChunk chunk lock (parent) { directory = parent.Items.FirstOrDefault(item => item.Type is not WadTreeItemType.File && item.NameHash == folderNameHash); if (directory is null) { - directory = new(parent, folderName); + directory = new(parent, folderName, wad); parent.Items.Add(directory); } } diff --git a/Obsidian/Data/Wad/WadTreeFileModel.cs b/Obsidian/Data/Wad/WadTreeFileModel.cs index 71269f7..c040cfe 100644 --- a/Obsidian/Data/Wad/WadTreeFileModel.cs +++ b/Obsidian/Data/Wad/WadTreeFileModel.cs @@ -6,11 +6,9 @@ namespace Obsidian.Data.Wad; [DebuggerDisplay("{Name}")] public sealed class WadTreeFileModel : WadTreeItemModel { public WadChunk Chunk { get; } - public WadFile Wad { get; } public WadTreeFileModel(IWadTreeParent parent, string name, WadFile wad, WadChunk chunk) - : base(parent, name) { + : base(parent, name, wad) { this.Chunk = chunk; - this.Wad = wad; } } \ No newline at end of file diff --git a/Obsidian/Data/Wad/WadTreeItemModel.cs b/Obsidian/Data/Wad/WadTreeItemModel.cs index 6faafde..993e339 100644 --- a/Obsidian/Data/Wad/WadTreeItemModel.cs +++ b/Obsidian/Data/Wad/WadTreeItemModel.cs @@ -1,4 +1,5 @@ -using LeagueToolkit.Hashing; +using LeagueToolkit.Core.Wad; +using LeagueToolkit.Hashing; using LeagueToolkit.Utils; using MudBlazor; using System.Diagnostics; @@ -34,13 +35,15 @@ public class WadTreeItemModel public bool IsChecked { get; set; } public bool IsExpanded { get; set; } public bool IsWadArchive { get; } + public WadFile Wad { get; } public List Items { get; protected set; } = new(); - public WadTreeItemModel(IWadTreeParent parent, string name) { + public WadTreeItemModel(IWadTreeParent parent, string name, WadFile wad) { this.Parent = parent; this.Name = name; + this.Wad = wad; this.Path = parent switch { null or WadTreeModel or { IsWadArchive: true } => name, _ => string.Join('/', parent.Path, name) diff --git a/Obsidian/Data/Wad/WadTreeModel.cs b/Obsidian/Data/Wad/WadTreeModel.cs index 072b992..bad70bd 100644 --- a/Obsidian/Data/Wad/WadTreeModel.cs +++ b/Obsidian/Data/Wad/WadTreeModel.cs @@ -75,7 +75,7 @@ public void CreateTreeForWadFile(WadFile wad, string wadFilePath, bool allowDupl IWadTreeParent wadParent = this; if (allowDuplicate) { - var wadItem = new WadTreeItemModel(this, wadFilePathComponents.First()); + var wadItem = new WadTreeItemModel(this, wadFilePathComponents.First(), wad); this.Items.Add(wadItem); wadParent = wadItem; wadFilePathComponents = wadFilePathComponents.Skip(1); diff --git a/Obsidian/Shared/TreeWadItem.razor.cs b/Obsidian/Shared/TreeWadItem.razor.cs index 81495e8..38ea378 100644 --- a/Obsidian/Shared/TreeWadItem.razor.cs +++ b/Obsidian/Shared/TreeWadItem.razor.cs @@ -154,5 +154,6 @@ private void Save() { private void Delete() { this.Item.Parent.Items.Remove(this.Item); this.Explorer.RefreshState(); + this.Item.Wad.Dispose(); } } \ No newline at end of file