From b0e9c9b0f4079ed22d851e91ff2cdb7360171099 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Mon, 20 Jun 2022 19:01:44 +0200 Subject: [PATCH] Update Audio and Animation Editor related stuff --- .../Utilities/Animation/AnimationEditor.cs | 171 ++++++++---------- .../Forms/Utilities/Animation/ChangeTile.cs | 5 +- .../Utilities/Audio/AudioEditor.Designer.cs | 11 +- .../Forms/Utilities/Audio/AudioEditor.cs | 9 +- .../Forms/Utilities/Audio/AudioEditor.resx | 23 ++- 5 files changed, 112 insertions(+), 107 deletions(-) diff --git a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs index fa365de7..077aa76b 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs @@ -14,12 +14,11 @@ namespace PckStudio { public partial class AnimationEditor : MetroForm { - TreeView treeViewMain = new TreeView(); PCKFile.FileData mf = null; List frames = new List(); + int frameCount; Newtonsoft.Json.Linq.JObject tileData = Newtonsoft.Json.Linq.JObject.Parse(System.Text.Encoding.Default.GetString(Properties.Resources.tileData)); Image texture; - int frameCount; bool isItem = false; string lastFrameTime = "1"; string newTileName = ""; @@ -35,15 +34,14 @@ namespace PckStudio } } - public AnimationEditor(TreeView treeViewIn, string createdFileName = "") + public AnimationEditor(PCKFile.FileData file_entry, string createdFileName = "") { InitializeComponent(); - treeViewMain = treeViewIn; if (string.IsNullOrEmpty(createdFileName)) { - newTileName = Path.GetFileNameWithoutExtension(treeViewMain.SelectedNode.Text); - if (treeViewMain.SelectedNode.Parent.Text.ToLower() == "items") isItem = true; - mf = treeViewMain.SelectedNode.Tag as PCKFile.FileData; + mf = file_entry; + newTileName = Path.GetFileNameWithoutExtension(file_entry.name); + if (file_entry.name.Split('/').Contains("items")) isItem = true; if (newTileName.EndsWith("MipMapLevel2") || newTileName.EndsWith("MipMapLevel3")) { string mipMapLvl = newTileName.Last().ToString(); @@ -69,14 +67,12 @@ namespace PckStudio } List strEntries = new List(); - List strEntryData = new List(); - string anim_data = string.Empty; + string anim = string.Empty; foreach (var entry in mf.properties) { - if (entry.Item1 == "ANIM") anim_data = entry.Item2; + if (entry.Item1 == "ANIM") anim = entry.Item2; strEntries.Add(entry.Item2); - strEntryData.Add(entry.Item2); } MemoryStream textureMem = new MemoryStream(mf.data); @@ -93,9 +89,6 @@ namespace PckStudio } } - string anim = ""; - if (strEntries.Find(entry => entry == "ANIM") == null) anim = ""; - else anim = strEntryData[strEntries.FindIndex(entry => entry == "ANIM")]; Console.WriteLine("ANIMATION DATA: " + anim); if (InterpolationCheckbox.Checked = anim.StartsWith("#")) { @@ -110,7 +103,7 @@ namespace PckStudio if (string.IsNullOrEmpty(animData.Last())) animData = animData.Take(animData.Length - 1).ToArray(); foreach (string frame in animData) { - string[] frameData = frame.Split(new char[] { '*' }); + string[] frameData = frame.Split('*'); string outFrame = ""; int i = 0; string currentFrame = ""; @@ -119,16 +112,15 @@ namespace PckStudio { string label; string outData; + outData = data; if (i == 0) { - outData = data; if (string.IsNullOrEmpty(data)) throw new Exception("Invalid animation data"); label = "Frame: "; currentFrame = outData; } else { - outData = data; // Some textures like the Halloween 2015's Lava texture don't have a // frame time parameter for certain frames. This will detect that and place the last frame time in its place. // This is accurate to console edition behavior. @@ -175,7 +167,6 @@ namespace PckStudio for (int frameI = 0; frameI < totalFrames; frameI++) { Rectangle frameArea = new Rectangle(new Point(0, frameI * width), new Size(width, width)); - Bitmap frameImage = new Bitmap(width, width); using (Graphics gfx = Graphics.FromImage(frameImage)) { @@ -185,10 +176,8 @@ namespace PckStudio gfx.DrawImage(texture, new Rectangle(0, 0, frameImage.Width, frameImage.Height), frameArea, GraphicsUnit.Pixel); } - frames.Add(new Bitmap(frameImage, new Size(width, width))); } - } private int mix(double ratio, int val1, int val2) // Ported from Java Edition code @@ -343,48 +332,48 @@ namespace PckStudio private void addNodeToAnimationsFolder(TreeNode newNode) { - TreeNode parent = FindNodeByName(treeViewMain, isItem ? "items" : "blocks"); - if (parent != null) - { - Console.WriteLine("ParentNotNULL"); - TreeNode check = FindNodeByName(treeViewMain, newNode.Text); - parent.Nodes.Add(newNode); - } - else - { - TreeNode texturesParent = FindNodeByName(treeViewMain, "textures"); - if (texturesParent != null) - { - Console.WriteLine("TextureNotNULL"); - TreeNode newFolder = new TreeNode(isItem ? "items" : "blocks"); - texturesParent.Nodes.Add(newFolder); - newFolder.Nodes.Add(newNode); - } - else - { - TreeNode resParent = FindNodeByName(treeViewMain, "res"); - if (resParent != null) - { - Console.WriteLine("ResNotNULL"); - TreeNode newFolder = new TreeNode("textures"); - resParent.Nodes.Add(newFolder); - TreeNode newFolderB = new TreeNode(isItem ? "items" : "blocks"); - newFolder.Nodes.Add(newFolderB); - newFolderB.Nodes.Add(newNode); - } - else - { - Console.WriteLine("ResNULL"); - TreeNode newFolder = new TreeNode("res"); - treeViewMain.Nodes.Add(newFolder); - TreeNode newFolderB = new TreeNode("textures"); - newFolder.Nodes.Add(newFolderB); - TreeNode newFolderC = new TreeNode(isItem ? "items" : "blocks"); - newFolderB.Nodes.Add(newFolderC); - newFolderC.Nodes.Add(newNode); - } - } - } + //TreeNode parent = FindNodeByName(treeViewMain, isItem ? "items" : "blocks"); + //if (parent != null) + //{ + // Console.WriteLine("ParentNotNULL"); + // TreeNode check = FindNodeByName(treeViewMain, newNode.Text); + // parent.Nodes.Add(newNode); + //} + //else + //{ + // TreeNode texturesParent = FindNodeByName(treeViewMain, "textures"); + // if (texturesParent != null) + // { + // Console.WriteLine("TextureNotNULL"); + // TreeNode newFolder = new TreeNode(isItem ? "items" : "blocks"); + // texturesParent.Nodes.Add(newFolder); + // newFolder.Nodes.Add(newNode); + // } + // else + // { + // TreeNode resParent = FindNodeByName(treeViewMain, "res"); + // if (resParent != null) + // { + // Console.WriteLine("ResNotNULL"); + // TreeNode newFolder = new TreeNode("textures"); + // resParent.Nodes.Add(newFolder); + // TreeNode newFolderB = new TreeNode(isItem ? "items" : "blocks"); + // newFolder.Nodes.Add(newFolderB); + // newFolderB.Nodes.Add(newNode); + // } + // else + // { + // Console.WriteLine("ResNULL"); + // TreeNode newFolder = new TreeNode("res"); + // treeViewMain.Nodes.Add(newFolder); + // TreeNode newFolderB = new TreeNode("textures"); + // newFolder.Nodes.Add(newFolderB); + // TreeNode newFolderC = new TreeNode(isItem ? "items" : "blocks"); + // newFolderB.Nodes.Add(newFolderC); + // newFolderC.Nodes.Add(newNode); + // } + // } + //} } private void saveToolStripMenuItem1_Click(object sender, EventArgs e) @@ -400,7 +389,7 @@ namespace PckStudio newTileName += "MipMapLevel" + MipMapNumericUpDown.Value.ToString(); } - if (!create && treeViewMain.SelectedNode.Tag != null) treeViewMain.SelectedNode.Text = newTileName + ".png"; + //if (!create && treeViewMain.SelectedNode.Tag != null) treeViewMain.SelectedNode.Text = newTileName + ".png"; string animationData = ""; if (InterpolationCheckbox.Checked) animationData += "#"; // does the animation interpolate? @@ -424,34 +413,34 @@ namespace PckStudio } }; - if (create) - { - mf.name = "res/textures/" + (isItem ? "items" : "blocks"); - TreeNode newNode = new TreeNode(newTileName + ".png") { Tag = mf };//creates node for minefile - newNode.ImageIndex = 2; - newNode.SelectedImageIndex = 2; - addNodeToAnimationsFolder(newNode); - treeViewMain.SelectedNode = newNode; - create = false; - } - else if (isItem && treeViewMain.SelectedNode.Parent.Text == "blocks") - { - Console.WriteLine("block: " + treeViewMain.SelectedNode.Parent.Text); - TreeNode newNode = treeViewMain.SelectedNode; - newNode.ImageIndex = 2; - newNode.SelectedImageIndex = 2; - treeViewMain.SelectedNode.Remove(); - addNodeToAnimationsFolder(newNode); - } - else if (treeViewMain.SelectedNode.Parent.Text == "items") - { - Console.WriteLine("item: " + treeViewMain.SelectedNode.Parent.Text); - TreeNode newNode = treeViewMain.SelectedNode; - newNode.ImageIndex = 2; - newNode.SelectedImageIndex = 2; - treeViewMain.SelectedNode.Remove(); - addNodeToAnimationsFolder(newNode); - } + //if (create) + //{ + // mf.name = "res/textures/" + (isItem ? "items" : "blocks"); + // TreeNode newNode = new TreeNode(newTileName + ".png") { Tag = mf };//creates node for minefile + // newNode.ImageIndex = 2; + // newNode.SelectedImageIndex = 2; + // addNodeToAnimationsFolder(newNode); + // treeViewMain.SelectedNode = newNode; + // create = false; + //} + //else if (isItem && treeViewMain.SelectedNode.Parent.Text == "blocks") + //{ + // Console.WriteLine("block: " + treeViewMain.SelectedNode.Parent.Text); + // TreeNode newNode = treeViewMain.SelectedNode; + // newNode.ImageIndex = 2; + // newNode.SelectedImageIndex = 2; + // treeViewMain.SelectedNode.Remove(); + // addNodeToAnimationsFolder(newNode); + //} + //else if (treeViewMain.SelectedNode.Parent.Text == "items") + //{ + // Console.WriteLine("item: " + treeViewMain.SelectedNode.Parent.Text); + // TreeNode newNode = treeViewMain.SelectedNode; + // newNode.ImageIndex = 2; + // newNode.SelectedImageIndex = 2; + // treeViewMain.SelectedNode.Remove(); + // addNodeToAnimationsFolder(newNode); + //} if(MipMapCheckbox.Checked) newTileName = newTileName.Substring(0, newTileName.Length - 12); } diff --git a/MinecraftUSkinEditor/Forms/Utilities/Animation/ChangeTile.cs b/MinecraftUSkinEditor/Forms/Utilities/Animation/ChangeTile.cs index 7f6a88a7..e4f881ee 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Animation/ChangeTile.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Animation/ChangeTile.cs @@ -23,10 +23,7 @@ namespace PckStudio.Forms.Utilities.AnimationEditor } bool isItem = false; - public bool IsItem - { - get { return isItem; } - } + public bool IsItem => isItem; List treeView1Cache = new List(); List treeView2Cache = new List(); diff --git a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.Designer.cs b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.Designer.cs index 401ce470..7651cf24 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.Designer.cs @@ -47,6 +47,7 @@ namespace PckStudio.Forms.Utilities this.textBox1 = new System.Windows.Forms.TextBox(); this.metroLabel2 = new MetroFramework.Controls.MetroLabel(); this.metroLabel1 = new MetroFramework.Controls.MetroLabel(); + this.catImages = new System.Windows.Forms.ImageList(this.components); this.contextMenuStrip1.SuspendLayout(); this.menuStrip.SuspendLayout(); this.contextMenuStrip2.SuspendLayout(); @@ -58,6 +59,7 @@ namespace PckStudio.Forms.Utilities this.treeView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.treeView1.ContextMenuStrip = this.contextMenuStrip1; this.treeView1.ForeColor = System.Drawing.Color.White; + this.treeView1.ImageList = this.catImages; this.treeView1.LabelEdit = true; this.treeView1.Name = "treeView1"; this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); @@ -173,6 +175,12 @@ namespace PckStudio.Forms.Utilities this.metroLabel1.Name = "metroLabel1"; this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark; // + // catImages + // + this.catImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; + resources.ApplyResources(this.catImages, "catImages"); + this.catImages.TransparentColor = System.Drawing.Color.Transparent; + // // AudioEditor // resources.ApplyResources(this, "$this"); @@ -214,5 +222,6 @@ namespace PckStudio.Forms.Utilities private MetroFramework.Controls.MetroLabel metroLabel2; private MetroFramework.Controls.MetroLabel metroLabel1; private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem; - } + private System.Windows.Forms.ImageList catImages; + } } \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs index c6764df9..8bb14f93 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs @@ -73,8 +73,7 @@ namespace PckStudio.Forms.Utilities public AudioEditor(PCKFile.FileData MineFile, bool isLittleEndian) { _isLittleEndian = isLittleEndian; - ImageList catImages = new ImageList(); - catImages.ColorDepth = ColorDepth.Depth32Bit; + if (isLittleEndian) Text += " (PS4/Vita)"; catImages.Images.Add(Properties.Resources.audio_0_overworld); catImages.Images.Add(Properties.Resources.audio_1_nether); catImages.Images.Add(Properties.Resources.audio_2_end); @@ -83,11 +82,7 @@ namespace PckStudio.Forms.Utilities catImages.Images.Add(Properties.Resources.audio_5_mg01); catImages.Images.Add(Properties.Resources.audio_6_mg02); catImages.Images.Add(Properties.Resources.audio_7_mg03); - InitializeComponent(); - - treeView1.ImageList = catImages; - mf = MineFile; using (var stream = new MemoryStream(mf.data)) { @@ -176,7 +171,7 @@ namespace PckStudio.Forms.Utilities int check = Enumerable.Range(0, 8).Except(cats).First(); // Exclude Unused for now if (0 <= check && check <= 8) { - addCategory add = new addCategory(this);//sets category adding dialog + addCategory add = new addCategory(this); //sets category adding dialog if (add.ShowDialog() == DialogResult.OK) add.Dispose();//diposes generated metadata adding dialog data diff --git a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.resx b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.resx index 5b87391a..3b2effd9 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.resx +++ b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.resx @@ -154,16 +154,28 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 437, 8 + + + 16, 16 + 20, 84 0, 0, 0, 0 + + 0 + 128, 230 - 12 @@ -413,9 +425,6 @@ 450, 330 - - NoControl - 450, 330 @@ -464,6 +473,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + catImages + + + System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + AudioEditor