mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-12 17:34:52 +00:00
Update Audio and Animation Editor related stuff
This commit is contained in:
@@ -14,12 +14,11 @@ namespace PckStudio
|
||||
{
|
||||
public partial class AnimationEditor : MetroForm
|
||||
{
|
||||
TreeView treeViewMain = new TreeView();
|
||||
PCKFile.FileData mf = null;
|
||||
List<Image> frames = new List<Image>();
|
||||
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<string> strEntries = new List<string>();
|
||||
List<string> strEntryData = new List<string>();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -23,10 +23,7 @@ namespace PckStudio.Forms.Utilities.AnimationEditor
|
||||
}
|
||||
|
||||
bool isItem = false;
|
||||
public bool IsItem
|
||||
{
|
||||
get { return isItem; }
|
||||
}
|
||||
public bool IsItem => isItem;
|
||||
|
||||
List<TreeNode> treeView1Cache = new List<TreeNode>();
|
||||
List<TreeNode> treeView2Cache = new List<TreeNode>();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -154,16 +154,28 @@
|
||||
<data name=">>contextMenuStrip1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView1.ImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="catImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>437, 8</value>
|
||||
</metadata>
|
||||
<data name="catImages.ImageSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="treeView1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>20, 84</value>
|
||||
</data>
|
||||
<data name="treeView1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 0, 0, 0</value>
|
||||
</data>
|
||||
<data name="treeView1.SelectedImageIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="treeView1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>128, 230</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="treeView1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
@@ -413,9 +425,6 @@
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>450, 330</value>
|
||||
</data>
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>450, 330</value>
|
||||
</data>
|
||||
@@ -464,6 +473,12 @@
|
||||
<data name=">>removeEntryMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>catImages.Name" xml:space="preserve">
|
||||
<value>catImages</value>
|
||||
</data>
|
||||
<data name=">>catImages.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>AudioEditor</value>
|
||||
</data>
|
||||
|
||||
Reference in New Issue
Block a user