diff --git a/File_Format_Library/FileFormats/Archives/RARC.cs b/File_Format_Library/FileFormats/Archives/RARC.cs index 2ce76e0b..adca2161 100644 --- a/File_Format_Library/FileFormats/Archives/RARC.cs +++ b/File_Format_Library/FileFormats/Archives/RARC.cs @@ -22,7 +22,7 @@ namespace FirstPlugin public IFileInfo IFileInfo { get; set; } public bool CanAddFiles { get; set; } - public bool CanRenameFiles { get; set; } + public bool CanRenameFiles { get; set; } = true; public bool CanReplaceFiles { get; set; } public bool CanDeleteFiles { get; set; } @@ -456,9 +456,15 @@ namespace FirstPlugin for (int i = 0; i < parentDir.Children.Count; i++) { if (parentDir.Children[i] is FileEntry) + { ((FileEntry)parentDir.Children[i]).NameOffset = (ushort)stringPos; + ((FileEntry)parentDir.Children[i]).UpdateHash(); + } else + { ((DirectoryEntry)parentDir.Children[i]).NameOffset = (ushort)stringPos; + ((DirectoryEntry)parentDir.Children[i]).UpdateHash(); + } Console.WriteLine($"{parentDir.Children[i].Name} {stringPos}"); @@ -628,6 +634,10 @@ namespace FirstPlugin Offset = reader.ReadUInt32(); Size = reader.ReadUInt32(); } + + public void UpdateHash() { + Hash = CalculateHash(Name); + } } } } diff --git a/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs b/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs index d1da3646..45f3b172 100644 --- a/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs +++ b/Switch_Toolbox_Library/Interfaces/FileFormatting/IArchiveFile.cs @@ -174,7 +174,7 @@ namespace Toolbox.Library private string _fileName = string.Empty; [Browsable(false)] - public string FileName + public virtual string FileName { get { @@ -363,7 +363,10 @@ namespace Toolbox.Library { string NewName = SetFullPath(FileNodes[i].Item2, this); if (NewName != string.Empty) + { + FileNodes[i].Item1.Name = FileNodes[i].Item2.Text; FileNodes[i].Item1.FileName = NewName; + } } } @@ -548,6 +551,7 @@ namespace Toolbox.Library if (node is IDirectoryContainer) { var folder = new ArchiveFolderNodeWrapper(node.Name, archiveFile, this); + folder.DirectoryContainer = (IDirectoryContainer)node; parent.Nodes.Add(folder); if (((IDirectoryContainer)node).Nodes != null) @@ -642,6 +646,8 @@ namespace Toolbox.Library public virtual object PropertyDisplay { get; set; } + public IDirectoryContainer DirectoryContainer { get; set; } + public bool CanReplace { set @@ -758,6 +764,8 @@ namespace Toolbox.Library if (dialog.ShowDialog() == DialogResult.OK) { Text = dialog.textBox1.Text; + if (DirectoryContainer != null) + DirectoryContainer.Name = Text; } }