mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-26 07:47:08 +00:00
Improved SubPCK methods
This commit is contained in:
@@ -665,7 +665,7 @@ namespace PckStudio
|
||||
string newFileExt = Path.GetExtension(ofd.FileName);
|
||||
file.SetData(File.ReadAllBytes(ofd.FileName));
|
||||
file.Filename = file.Filename.Replace(fileExt, newFileExt);
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
wasModified = true;
|
||||
BuildMainTreeView();
|
||||
}
|
||||
@@ -720,7 +720,7 @@ namespace PckStudio
|
||||
node.Remove();
|
||||
wasModified = true;
|
||||
}
|
||||
if (IsSubPCKNode(path)) RebuildSubPCK(node);
|
||||
RebuildSubPCK(path);
|
||||
}
|
||||
|
||||
private void renameFileToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -729,8 +729,6 @@ namespace PckStudio
|
||||
if (node == null) return;
|
||||
string path = node.FullPath;
|
||||
|
||||
bool sub = IsSubPCKNode(path);
|
||||
|
||||
using TextPrompt diag = new TextPrompt(node.Tag is null ? Path.GetFileName(node.FullPath) : node.FullPath);
|
||||
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
@@ -751,7 +749,7 @@ namespace PckStudio
|
||||
}
|
||||
}
|
||||
wasModified = true;
|
||||
if (sub) RebuildSubPCK(node);
|
||||
RebuildSubPCK(path);
|
||||
BuildMainTreeView();
|
||||
}
|
||||
}
|
||||
@@ -776,7 +774,7 @@ namespace PckStudio
|
||||
newNode.Tag = add.SkinFile;
|
||||
SetPckFileIcon(newNode, PckFile.FileData.FileType.SkinFile);
|
||||
subPCK.Nodes.Add(newNode);
|
||||
RebuildSubPCK(newNode);
|
||||
RebuildSubPCK(newNode.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -794,7 +792,7 @@ namespace PckStudio
|
||||
newNode.Tag = add.CapeFile;
|
||||
SetPckFileIcon(newNode, PckFile.FileData.FileType.SkinFile);
|
||||
subPCK.Nodes.Add(newNode);
|
||||
RebuildSubPCK(newNode);
|
||||
RebuildSubPCK(newNode.FullPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -905,26 +903,32 @@ namespace PckStudio
|
||||
return childNodes;
|
||||
}
|
||||
|
||||
TreeNode GetSubPCK(TreeNode child)
|
||||
TreeNode GetSubPCK(string childPath)
|
||||
{
|
||||
TreeNode parent = child;
|
||||
while (parent.Parent != null)
|
||||
string parentPath = childPath.Replace('\\', '/');
|
||||
Console.WriteLine(parentPath);
|
||||
string[] s = parentPath.Split('/');
|
||||
Console.WriteLine(s.Length);
|
||||
foreach (var node in s)
|
||||
{
|
||||
parent = parent.Parent;
|
||||
Console.WriteLine(parent.Text);
|
||||
TreeNode parent = treeViewMain.Nodes.Find(node, true)[0];
|
||||
if (parent.Tag is PckFile.FileData f &&
|
||||
(f.Filetype is PckFile.FileData.FileType.TexturePackInfoFile ||
|
||||
f.Filetype is PckFile.FileData.FileType.SkinDataFile))
|
||||
return parent;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
void RebuildSubPCK(TreeNode childNode)
|
||||
void RebuildSubPCK(string childPath)
|
||||
{
|
||||
// Support for if a file is edited within a PCK File
|
||||
// Support for if a file is edited within a nested PCK File (AKA SubPCK)
|
||||
|
||||
TreeNode parent = GetSubPCK(childNode);
|
||||
if(!IsSubPCKNode(childPath)) return;
|
||||
|
||||
TreeNode parent = GetSubPCK(childPath);
|
||||
Console.WriteLine(parent.Name);
|
||||
if (parent == null) return;
|
||||
|
||||
PckFile.FileData parent_file = parent.Tag as PckFile.FileData;
|
||||
@@ -989,8 +993,7 @@ namespace PckStudio
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
file.Properties[i] = new KeyValuePair<string, string>("ANIM", diag.ResultAnim.ToString());
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath))
|
||||
RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
@@ -1010,8 +1013,7 @@ namespace PckStudio
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
file.Properties[i] = new KeyValuePair<string, string>("BOX", diag.Result.ToString());
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath))
|
||||
RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
@@ -1034,8 +1036,7 @@ namespace PckStudio
|
||||
if (addProperty.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
file.Properties[i] = addProperty.Property;
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath))
|
||||
RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
@@ -1083,7 +1084,7 @@ namespace PckStudio
|
||||
else node.Parent.Nodes.Insert(node.Index + 1, newNode);//adds generated minefile node to selected folder
|
||||
|
||||
if (!IsSubPCKNode(node.FullPath)) currentPCK.Files.Insert(node.Index + 1, mf);
|
||||
else RebuildSubPCK(node);
|
||||
else RebuildSubPCK(node.FullPath);
|
||||
}
|
||||
|
||||
private void deleteEntryToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -1093,7 +1094,7 @@ namespace PckStudio
|
||||
file.Properties.Remove(property))
|
||||
{
|
||||
treeMeta.SelectedNode.Remove();
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
wasModified = true;
|
||||
}
|
||||
}
|
||||
@@ -1120,7 +1121,7 @@ namespace PckStudio
|
||||
if (addProperty.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
file.Properties.Add(addProperty.Property);
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
@@ -1895,7 +1896,7 @@ namespace PckStudio
|
||||
Debug.WriteLine($"Setting {file.Filetype} to {type}");
|
||||
file.Filetype = type;
|
||||
SetPckFileIcon(t, type);
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2043,7 +2044,7 @@ namespace PckStudio
|
||||
file.Properties.Add((line.Substring(0, idx), line.Substring(idx + 1)));
|
||||
}
|
||||
ReloadMetaTreeView();
|
||||
if (IsSubPCKNode(node.FullPath)) RebuildSubPCK(node);
|
||||
RebuildSubPCK(node.FullPath);
|
||||
wasModified = true;
|
||||
}
|
||||
}
|
||||
@@ -2059,7 +2060,7 @@ namespace PckStudio
|
||||
file.Properties[file.Properties.IndexOf(p)] = new KeyValuePair<string, string>(p.Key, p.Value.Replace(',','.'));
|
||||
}
|
||||
ReloadMetaTreeView();
|
||||
if (IsSubPCKNode(node.FullPath)) RebuildSubPCK(node);
|
||||
RebuildSubPCK(node.FullPath);
|
||||
wasModified = true;
|
||||
}
|
||||
}
|
||||
@@ -2198,7 +2199,7 @@ namespace PckStudio
|
||||
file.Properties.Add((line.Substring(0, idx).Replace(":", string.Empty), line.Substring(idx + 1)));
|
||||
}
|
||||
ReloadMetaTreeView();
|
||||
if (IsSubPCKNode(node.FullPath)) RebuildSubPCK(node);
|
||||
RebuildSubPCK(node.FullPath);
|
||||
wasModified = true;
|
||||
}
|
||||
}
|
||||
@@ -2222,7 +2223,7 @@ namespace PckStudio
|
||||
diag.Filetype,
|
||||
() => File.ReadAllBytes(ofd.FileName));
|
||||
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
//else treeViewMain.Nodes.Add();
|
||||
|
||||
BuildMainTreeView();
|
||||
@@ -2368,8 +2369,7 @@ namespace PckStudio
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
file.Properties.Add("BOX", diag.Result);
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath))
|
||||
RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
@@ -2385,8 +2385,7 @@ namespace PckStudio
|
||||
if (diag.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
file.Properties.Add("ANIM", diag.ResultAnim);
|
||||
if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath))
|
||||
RebuildSubPCK(treeViewMain.SelectedNode);
|
||||
RebuildSubPCK(treeViewMain.SelectedNode.FullPath);
|
||||
ReloadMetaTreeView();
|
||||
wasModified = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user