From 64afeee93fc76a97bf31f5c698b0cb99169f4875 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 20:45:04 -0500 Subject: [PATCH 01/19] Added Entity sheet and BehaviourData json file --- PCK-Studio/Resources/entities.png | Bin 0 -> 38599 bytes PCK-Studio/Resources/entityBehaviourData.json | 100 ++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 PCK-Studio/Resources/entities.png create mode 100644 PCK-Studio/Resources/entityBehaviourData.json diff --git a/PCK-Studio/Resources/entities.png b/PCK-Studio/Resources/entities.png new file mode 100644 index 0000000000000000000000000000000000000000..5995c27e31db716bb1191695a5f968ba08cdd8d0 GIT binary patch literal 38599 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�qs{8SiB6 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 literal 0 HcmV?d00001 diff --git a/PCK-Studio/Resources/entityBehaviourData.json b/PCK-Studio/Resources/entityBehaviourData.json new file mode 100644 index 00000000..0a2d2bb1 --- /dev/null +++ b/PCK-Studio/Resources/entityBehaviourData.json @@ -0,0 +1,100 @@ +{ + "COMMENT": "Entity data research by NessieHax (Miku-666) and MattNL", + "entities": [ + { "area_effect_cloud": "Area Effect Cloud / Particle" }, + { "armor_stand": "Armor Stand" }, + { "arrow": "Arrow" }, + { "blaze": "Blaze" }, + { "boat": "Boat" }, + { "cat": "Cat (PS4 EXCLUSIVE)" }, + { "cave_spider": "Cave Spider (PS4 EXCLUSIVE)" }, + { "chest_minecart": "Chest Minecart" }, + { "chicken": "Chicken" }, + { "cod": "Cod" }, + { "commandblock_minecart": "Command Block Minecart" }, + { "cow": "Cow" }, + { "creeper": "Creeper" }, + { "dolphin": "Dolphin" }, + { "donkey": "Donkey" }, + { "dragon_fireball": "Dragon Fireball" }, + { "drowned": "Drowned" }, + { "egg": "Thrown Egg" }, + { "elder_guardian": "Elder Guardian" }, + { "ender_crystal": "End Crystal" }, + { "ender_dragon": "Ender Dragon" }, + { "ender_pearl": "Thrown Ender Pearl" }, + { "enderman": "Enderman" }, + { "endermite": "Endermite" }, + { "evocation_illager": "Evoker" }, + { "evocation_fangs": "Evoker Fangs" }, + { "xp_bottle": "Thrown Experience Bottle" }, + { "xp_orb": "Experience Orb" }, + { "eye_of_ender_signal": "Thrown Eye of Ender" }, + { "falling_block": "Falling Block" }, + { "fireball": "Fireball" }, + { "fireworks_rocket": "Firework Rocket" }, + { "furnace_minecart": "Furnace Minecart" }, + { "ghast": "Ghast" }, + { "giant": "Giant" }, + { "guardian": "Guardian" }, + { "hopper_minecart": "Hopper Minecart" }, + { "horse": "Horse" }, + { "husk": "Husk" }, + { "villager_golem": "Iron Golem" }, + { "item": "Dropped Item" }, + { "item_frame": "Item Frame" }, + { "leash_knot": "Lead Knot" }, + { "llama": "Llama" }, + { "llama_spit": "Llama Spit" }, + { "magma_cube": "Magma Cube" }, + { "minecart": "Minecart" }, + { "mooshroom": "Mooshroom" }, + { "mule": "Mule" }, + { "ocelot": "Ocelot" }, + { "painting": "Painting" }, + { "panda": "Panda (PS4 EXCLUSIVE)" }, + { "parrot": "Parrot" }, + { "phantom": "Phantom" }, + { "pig": "Pig" }, + { "pillager": "Pillager (PS4 EXCLUSIVE)" }, + { "polar_bear": "Polar Bear" }, + { "potion": "Thrown Potion" }, + { "pufferfish": "Pufferfish" }, + { "rabbit": "Rabbit" }, + { "ravager": "Ravager (PS4 EXCLUSIVE)" }, + { "salmon": "Salmon" }, + { "sheep": "Sheep" }, + { "shulker": "Shulker" }, + { "shulker_bullet": "Shulker Bullet" }, + { "silverfish": "Silverfish" }, + { "skeleton": "Skeleton" }, + { "skeleton_horse": "Skeleton Horse" }, + { "slime": "Slime" }, + { "small_fireball": "Small Fireball" }, + { "snowman": "Snow Golem" }, + { "snowball": "Thrown Snowball" }, + { "spawner_minecart": "Spawner Minecart" }, + { "spectral_arrow": "Spectral Arrow" }, + { "spider": "Spider" }, + { "squid": "Squid" }, + { "stray": "Stray" }, + { "tnt": "Primed TNT" }, + { "tnt_minecart": "TNT Minecart" }, + { "trident": "Thrown Trident" }, + { "tropical_fish": "Tropical Fish" }, + { "turtle": "Turtle" }, + { "vex": "Vex" }, + { "villager": "Villager" }, + { "vindication_illager": "Vindicator" }, + { "wandering_trader": "Wandering Trader (PS4 Exclusive)" }, + { "witch": "Witch" }, + { "wither": "Wither" }, + { "wither_skeleton": "Wither Skeleton" }, + { "wither_skull": "Wither Skull" }, + { "wolf": "Wolf" }, + { "zombie": "Zombie" }, + { "zombie_horse": "Zombie Horse" }, + { "zombie_pigman": "Zombie Pigman" }, + { "zombie_villager": "Zombie Villager" } + ] +} From 27167752077542a3ef50d4e25e6cbba0e382a240 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 20:47:37 -0500 Subject: [PATCH 02/19] Added new Entity and Behaviour resources --- PCK-Studio/Properties/Resources.Designer.cs | 20 ++++++++++++++++++++ PCK-Studio/Properties/Resources.resx | 6 ++++++ 2 files changed, 26 insertions(+) diff --git a/PCK-Studio/Properties/Resources.Designer.cs b/PCK-Studio/Properties/Resources.Designer.cs index 25c74ee2..c4e75881 100644 --- a/PCK-Studio/Properties/Resources.Designer.cs +++ b/PCK-Studio/Properties/Resources.Designer.cs @@ -262,6 +262,16 @@ namespace PckStudio.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap entities { + get { + object obj = ResourceManager.GetObject("entities", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -272,6 +282,16 @@ namespace PckStudio.Properties { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] entityBehaviourData { + get { + object obj = ResourceManager.GetObject("entityBehaviourData", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/PCK-Studio/Properties/Resources.resx b/PCK-Studio/Properties/Resources.resx index 774a3c8b..a12ce6b4 100644 --- a/PCK-Studio/Properties/Resources.resx +++ b/PCK-Studio/Properties/Resources.resx @@ -328,4 +328,10 @@ ..\Resources\iconImageList\blank.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\entities.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\entityBehaviourData.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file From efd0edb9d3143c73858b730d1a0a77d75d569778 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 20:51:42 -0500 Subject: [PATCH 03/19] Fixed BehaviourData file displaying as a binary file instead of text --- PCK-Studio/Properties/Resources.Designer.cs | 21 +++++++++++++++++---- PCK-Studio/Properties/Resources.resx | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/PCK-Studio/Properties/Resources.Designer.cs b/PCK-Studio/Properties/Resources.Designer.cs index c4e75881..cbe94a10 100644 --- a/PCK-Studio/Properties/Resources.Designer.cs +++ b/PCK-Studio/Properties/Resources.Designer.cs @@ -283,12 +283,25 @@ namespace PckStudio.Properties { } /// - /// Looks up a localized resource of type System.Byte[]. + /// Looks up a localized string similar to { + /// "COMMENT": "Entity data research by NessieHax (Miku-666) and MattNL", + /// "entities": [ + /// { "area_effect_cloud": "Area Effect Cloud / Particle" }, + /// { "armor_stand": "Armor Stand" }, + /// { "arrow": "Arrow" }, + /// { "blaze": "Blaze" }, + /// { "boat": "Boat" }, + /// { "cat": "Cat (PS4 EXCLUSIVE)" }, + /// { "cave_spider": "Cave Spider (PS4 EXCLUSIVE)" }, + /// { "chest_minecart": "Chest Minecart" }, + /// { "chicken": "Chicken" }, + /// { "cod": "Cod" }, + /// { "commandblock_minecart": "Command Block Minecart" }, + /// { "cow": [rest of string was truncated]";. /// - public static byte[] entityBehaviourData { + public static string entityBehaviourData { get { - object obj = ResourceManager.GetObject("entityBehaviourData", resourceCulture); - return ((byte[])(obj)); + return ResourceManager.GetString("entityBehaviourData", resourceCulture); } } diff --git a/PCK-Studio/Properties/Resources.resx b/PCK-Studio/Properties/Resources.resx index a12ce6b4..80b8b0f4 100644 --- a/PCK-Studio/Properties/Resources.resx +++ b/PCK-Studio/Properties/Resources.resx @@ -332,6 +332,6 @@ ..\Resources\entities.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\entityBehaviourData.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\entityBehaviourData.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 \ No newline at end of file From 32c0ebf8df744973ca86f3dcbbdd852d0cec6d3f Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 20:53:34 -0500 Subject: [PATCH 04/19] Renamed "entities" to "entities_sheet" to be consistent with the other resource sheets --- PCK-Studio/Properties/Resources.Designer.cs | 4 ++-- PCK-Studio/Properties/Resources.resx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PCK-Studio/Properties/Resources.Designer.cs b/PCK-Studio/Properties/Resources.Designer.cs index cbe94a10..8863fef0 100644 --- a/PCK-Studio/Properties/Resources.Designer.cs +++ b/PCK-Studio/Properties/Resources.Designer.cs @@ -265,9 +265,9 @@ namespace PckStudio.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - public static System.Drawing.Bitmap entities { + public static System.Drawing.Bitmap entities_sheet { get { - object obj = ResourceManager.GetObject("entities", resourceCulture); + object obj = ResourceManager.GetObject("entities_sheet", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } diff --git a/PCK-Studio/Properties/Resources.resx b/PCK-Studio/Properties/Resources.resx index 80b8b0f4..a95a354e 100644 --- a/PCK-Studio/Properties/Resources.resx +++ b/PCK-Studio/Properties/Resources.resx @@ -328,7 +328,7 @@ ..\Resources\iconImageList\blank.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\entities.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a From b6b4a1aad9dc3bd4a7ccbc769f7a4e4880355b37 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 21:52:01 -0500 Subject: [PATCH 05/19] Fix for missing mobs in behaviourData --- PCK-Studio/Resources/entityBehaviourData.json | 1 + 1 file changed, 1 insertion(+) diff --git a/PCK-Studio/Resources/entityBehaviourData.json b/PCK-Studio/Resources/entityBehaviourData.json index 0a2d2bb1..e3d69566 100644 --- a/PCK-Studio/Resources/entityBehaviourData.json +++ b/PCK-Studio/Resources/entityBehaviourData.json @@ -4,6 +4,7 @@ { "area_effect_cloud": "Area Effect Cloud / Particle" }, { "armor_stand": "Armor Stand" }, { "arrow": "Arrow" }, + { "bat": "Bat" }, { "blaze": "Blaze" }, { "boat": "Boat" }, { "cat": "Cat (PS4 EXCLUSIVE)" }, From e2153924d77e7f48c2114cb55e1508bddc841002 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 21:55:57 -0500 Subject: [PATCH 06/19] Created ImageUtils to hold CreateImageList --- PCK-Studio/Classes/Utils/ImageUtils.cs | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 PCK-Studio/Classes/Utils/ImageUtils.cs diff --git a/PCK-Studio/Classes/Utils/ImageUtils.cs b/PCK-Studio/Classes/Utils/ImageUtils.cs new file mode 100644 index 00000000..83b5ad59 --- /dev/null +++ b/PCK-Studio/Classes/Utils/ImageUtils.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Drawing.Drawing2D; +using System.Drawing; +using System.Diagnostics; + +namespace PckStudio.Classes.Utils +{ + internal class ImageUtils + { + public static IEnumerable CreateImageList(Image source, int size) + { + int img_row_count = source.Width / size; + int img_column_count = source.Height / size; + Debug.WriteLine($"{source.Width} {source.Height} {size} {size} {img_column_count} {img_row_count}"); + for (int i = 0; i < img_column_count * img_row_count; i++) + { + int row = i / img_row_count; + int column = i % img_row_count; + Rectangle tileArea = new Rectangle(new Point(column * size, row * size), new Size(size, size)); + Bitmap tileImage = new Bitmap(size, size); + using (Graphics gfx = Graphics.FromImage(tileImage)) + { + gfx.SmoothingMode = SmoothingMode.None; + gfx.InterpolationMode = InterpolationMode.NearestNeighbor; + gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; + + gfx.DrawImage(source, new Rectangle(0, 0, size, size), tileArea, GraphicsUnit.Pixel); + } + yield return tileImage; + } + yield break; + } + } +} From 70b22237d70ecf50d8a5bd69537d79c680481c0b Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 21:56:31 -0500 Subject: [PATCH 07/19] Edited AnimationUtil to now utilize ImageUtils for ImageList creation instead --- PCK-Studio/Forms/Utilities/AnimationUtil.cs | 28 ++------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/PCK-Studio/Forms/Utilities/AnimationUtil.cs b/PCK-Studio/Forms/Utilities/AnimationUtil.cs index 9fb2b97a..dd7e6dd4 100644 --- a/PCK-Studio/Forms/Utilities/AnimationUtil.cs +++ b/PCK-Studio/Forms/Utilities/AnimationUtil.cs @@ -7,6 +7,7 @@ using System.Linq; using PckStudio.Properties; using PckStudio.Classes.FileTypes; using System.Drawing.Imaging; +using PckStudio.Classes.Utils; using System.IO; namespace PckStudio.Forms.Utilities @@ -21,7 +22,7 @@ namespace PckStudio.Forms.Utilities { get { if (_tileImages == null) - _tileImages = CreateImageList(Resources.terrain_sheet, 16, 16).Concat(CreateImageList(Resources.items_sheet, 16, 16)).ToArray(); + _tileImages = ImageUtils.CreateImageList(Resources.terrain_sheet, 16).Concat(ImageUtils.CreateImageList(Resources.items_sheet, 16)).ToArray(); return _tileImages; } } @@ -36,30 +37,5 @@ namespace PckStudio.Forms.Utilities } return file; } - - - private static IEnumerable CreateImageList(Image source, int width, int height) - { - int img_row_count = source.Width / width; - int img_column_count = source.Height / height; - for (int i = 0; i < img_column_count * img_row_count; i++) - { - int row = i / width; - int column = i % height; - Rectangle tileArea = new Rectangle(new Point(column * width, row * height), new Size(width, height)); - Bitmap tileImage = new Bitmap(width, height); - using (Graphics gfx = Graphics.FromImage(tileImage)) - { - gfx.SmoothingMode = SmoothingMode.None; - gfx.InterpolationMode = InterpolationMode.NearestNeighbor; - gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; - - gfx.DrawImage(source, new Rectangle(0, 0, width, height), tileArea, GraphicsUnit.Pixel); - } - yield return tileImage; - } - yield break; - } - } } From ebca55434b15777c06322a1cd8c3b16b7b6a16e6 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 21:57:01 -0500 Subject: [PATCH 08/19] Created BehaviourUtil for handling BehaviourFiles --- PCK-Studio/Forms/Utilities/BehaviourUtil.cs | 42 +++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 PCK-Studio/Forms/Utilities/BehaviourUtil.cs diff --git a/PCK-Studio/Forms/Utilities/BehaviourUtil.cs b/PCK-Studio/Forms/Utilities/BehaviourUtil.cs new file mode 100644 index 00000000..ed7ff648 --- /dev/null +++ b/PCK-Studio/Forms/Utilities/BehaviourUtil.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json.Linq; +using System.Collections.Generic; +using System.Drawing.Drawing2D; +using System.Drawing; +using System.Linq; + +using PckStudio.Properties; +using PckStudio.Classes.FileTypes; +using PckStudio.Classes.IO.Behaviour; +using PckStudio.Classes.Utils; +using System.Diagnostics; +using System.Drawing.Imaging; +using System.IO; + +namespace PckStudio.Forms.Utilities +{ + public static class BehaviourUtil + { + public static readonly JObject entityData = JObject.Parse(Resources.entityBehaviourData); + private static Image[] _entityImages; + public static Image[] entityImages + { + get { + if (_entityImages == null) + _entityImages = ImageUtils.CreateImageList(Resources.entities_sheet, 32).ToArray(); + return _entityImages; + } + } + public static PCKFile.FileData CreateNewBehaviourFile(Image source, string tileName, bool isItem) + { + PCKFile.FileData file = new PCKFile.FileData($"behaviours.bin", PCKFile.FileData.FileType.BehavioursFile); + + using (var stream = new MemoryStream()) + { + BehavioursWriter.Write(stream, new BehaviourFile()); + file.SetData(stream.ToArray()); + } + + return file; + } + } +} From 87138f98538e35c8bb12063f04f92fb3266da69c Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 01:43:31 -0500 Subject: [PATCH 09/19] Added AddBehvaiour to BehaviourEditor --- .../Behaviours/AddBehaviour.Designer.cs | 185 ++++++++++++++++++ .../Behaviours/AddBehaviour.cs | 112 +++++++++++ .../Behaviours/AddBehaviour.resx | 120 ++++++++++++ PCK-Studio/Forms/Editor/BehaviourEditor.cs | 30 ++- PCK-Studio/PckStudio.csproj | 86 ++++---- 5 files changed, 487 insertions(+), 46 deletions(-) create mode 100644 PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs create mode 100644 PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.cs create mode 100644 PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.resx diff --git a/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs new file mode 100644 index 00000000..c64f207a --- /dev/null +++ b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs @@ -0,0 +1,185 @@ +namespace PckStudio.Forms.Additional_Popups.Behaviours +{ + partial class AddBehaviour + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.acceptBtn = new System.Windows.Forms.Button(); + this.CancelBtn = new System.Windows.Forms.Button(); + this.treeViewEntity = new System.Windows.Forms.TreeView(); + this.metroLabel2 = new MetroFramework.Controls.MetroLabel(); + this.metroTextBox1 = new MetroFramework.Controls.MetroTextBox(); + this.metroTabControl1 = new MetroFramework.Controls.MetroTabControl(); + this.Blocks = new System.Windows.Forms.TabPage(); + this.metroTabControl1.SuspendLayout(); + this.Blocks.SuspendLayout(); + this.SuspendLayout(); + // + // acceptBtn + // + this.acceptBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.acceptBtn.ForeColor = System.Drawing.Color.White; + this.acceptBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.acceptBtn.Location = new System.Drawing.Point(92, 196); + this.acceptBtn.Name = "acceptBtn"; + this.acceptBtn.Size = new System.Drawing.Size(75, 23); + this.acceptBtn.TabIndex = 7; + this.acceptBtn.Text = "Add"; + this.acceptBtn.UseVisualStyleBackColor = true; + this.acceptBtn.Click += new System.EventHandler(this.AcceptBtn_Click); + // + // CancelBtn + // + this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.CancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CancelBtn.ForeColor = System.Drawing.Color.White; + this.CancelBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.CancelBtn.Location = new System.Drawing.Point(172, 196); + this.CancelBtn.Name = "CancelBtn"; + this.CancelBtn.Size = new System.Drawing.Size(75, 23); + this.CancelBtn.TabIndex = 13; + this.CancelBtn.Text = "Cancel"; + this.CancelBtn.UseVisualStyleBackColor = true; + this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click); + // + // treeViewBlocks + // + this.treeViewEntity.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.treeViewEntity.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeViewEntity.ForeColor = System.Drawing.Color.White; + this.treeViewEntity.Location = new System.Drawing.Point(0, 0); + this.treeViewEntity.Name = "treeViewBlocks"; + this.treeViewEntity.Size = new System.Drawing.Size(318, 142); + this.treeViewEntity.TabIndex = 14; + this.treeViewEntity.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViews_AfterSelect); + // + // metroLabel2 + // + this.metroLabel2.AutoSize = true; + this.metroLabel2.Location = new System.Drawing.Point(133, 19); + this.metroLabel2.Name = "metroLabel2"; + this.metroLabel2.Size = new System.Drawing.Size(46, 19); + this.metroLabel2.TabIndex = 16; + this.metroLabel2.Text = "Filter: "; + this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // metroTextBox1 + // + // + // + // + this.metroTextBox1.CustomButton.Image = null; + this.metroTextBox1.CustomButton.Location = new System.Drawing.Point(134, 1); + this.metroTextBox1.CustomButton.Name = ""; + this.metroTextBox1.CustomButton.Size = new System.Drawing.Size(21, 21); + this.metroTextBox1.CustomButton.Style = MetroFramework.MetroColorStyle.Blue; + this.metroTextBox1.CustomButton.TabIndex = 1; + this.metroTextBox1.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light; + this.metroTextBox1.CustomButton.UseSelectable = true; + this.metroTextBox1.CustomButton.Visible = false; + this.metroTextBox1.Lines = new string[0]; + this.metroTextBox1.Location = new System.Drawing.Point(173, 18); + this.metroTextBox1.MaxLength = 32767; + this.metroTextBox1.Name = "metroTextBox1"; + this.metroTextBox1.PasswordChar = '\0'; + this.metroTextBox1.ScrollBars = System.Windows.Forms.ScrollBars.None; + this.metroTextBox1.SelectedText = ""; + this.metroTextBox1.SelectionLength = 0; + this.metroTextBox1.SelectionStart = 0; + this.metroTextBox1.ShortcutsEnabled = true; + this.metroTextBox1.Size = new System.Drawing.Size(156, 23); + this.metroTextBox1.TabIndex = 17; + this.metroTextBox1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroTextBox1.UseSelectable = true; + this.metroTextBox1.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109))))); + this.metroTextBox1.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel); + this.metroTextBox1.TextChanged += new System.EventHandler(this.filter_TextChanged); + // + // metroTabControl1 + // + this.metroTabControl1.Controls.Add(this.Blocks); + this.metroTabControl1.Location = new System.Drawing.Point(6, 8); + this.metroTabControl1.Name = "metroTabControl1"; + this.metroTabControl1.SelectedIndex = 0; + this.metroTabControl1.Size = new System.Drawing.Size(326, 184); + this.metroTabControl1.Style = MetroFramework.MetroColorStyle.White; + this.metroTabControl1.TabIndex = 18; + this.metroTabControl1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroTabControl1.UseSelectable = true; + // + // Blocks + // + this.Blocks.BackColor = System.Drawing.SystemColors.WindowFrame; + this.Blocks.Controls.Add(this.treeViewEntity); + this.Blocks.Location = new System.Drawing.Point(4, 38); + this.Blocks.Name = "Blocks"; + this.Blocks.Size = new System.Drawing.Size(318, 142); + this.Blocks.TabIndex = 0; + this.Blocks.Text = "Entities"; + // + // AddBehaviour + // + this.AcceptButton = this.acceptBtn; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.CancelBtn; + this.ClientSize = new System.Drawing.Size(338, 228); + this.ControlBox = false; + this.Controls.Add(this.metroTextBox1); + this.Controls.Add(this.metroLabel2); + this.Controls.Add(this.metroTabControl1); + this.Controls.Add(this.CancelBtn); + this.Controls.Add(this.acceptBtn); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AddBehaviour"; + this.Resizable = false; + this.Style = MetroFramework.MetroColorStyle.Silver; + this.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroTabControl1.ResumeLayout(false); + this.Blocks.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + private void MetroTextBox1_TextChanged(object sender, System.EventArgs e) + { + throw new System.NotImplementedException(); + } + + #endregion + private System.Windows.Forms.Button acceptBtn; + private System.Windows.Forms.Button CancelBtn; + private System.Windows.Forms.TreeView treeViewEntity; + private MetroFramework.Controls.MetroLabel metroLabel2; + private MetroFramework.Controls.MetroTextBox metroTextBox1; + private MetroFramework.Controls.MetroTabControl metroTabControl1; + private System.Windows.Forms.TabPage Blocks; + } +} \ No newline at end of file diff --git a/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.cs b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.cs new file mode 100644 index 00000000..68932bbc --- /dev/null +++ b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using MetroFramework.Forms; +using Newtonsoft.Json.Linq; +using PckStudio.Forms.Utilities; + +namespace PckStudio.Forms.Additional_Popups.Behaviours +{ + public partial class AddBehaviour : MetroForm + { + string selectedEntity = ""; + + public string SelectedEntity => selectedEntity; + + List treeViewEntityCache = new List(); + + public AddBehaviour() + { + InitializeComponent(); + ImageList entities = new ImageList(); + entities.ColorDepth = ColorDepth.Depth32Bit; + entities.ImageSize = new System.Drawing.Size(32, 32); + entities.Images.AddRange(BehaviourUtil.entityImages); + treeViewEntity.ImageList = entities; + + try + { + int i = 0; + + if (BehaviourUtil.entityData["entities"] != null) + { + foreach (JObject content in BehaviourUtil.entityData["entities"].Children()) + { + foreach (JProperty prop in content.Properties()) + { + if (!string.IsNullOrEmpty((string)prop.Value)) + { + TreeNode entityNode = new TreeNode((string)prop.Value) + { + Tag = prop.Name, + ImageIndex = i, + SelectedImageIndex = i, + }; + treeViewEntity.Nodes.Add(entityNode); + treeViewEntityCache.Add(entityNode); + } + i++; + } + } + } + } + catch (Newtonsoft.Json.JsonException j_ex) + { + MessageBox.Show(j_ex.Message, "Error"); + return; + } + } + + private void treeViews_AfterSelect(object sender, TreeViewEventArgs e) + { + if (e.Node.Tag is string entityData) + { + selectedEntity = entityData; + Console.WriteLine(selectedEntity); + } + } + + void filter_TextChanged(object sender, EventArgs e) + { + // Some code in this function is modified code from this StackOverflow answer - MattNL + //https://stackoverflow.com/questions/8260322/filter-a-treeview-with-a-textbox-in-a-c-sharp-winforms-app + + //blocks repainting tree until all objects loaded + treeViewEntity.BeginUpdate(); + treeViewEntity.Nodes.Clear(); + if (!string.IsNullOrEmpty(metroTextBox1.Text)) + { + foreach (TreeNode _node in treeViewEntityCache) + { + if (_node.Text.ToLower().Contains(metroTextBox1.Text.ToLower()) || + (_node.Tag as string).ToLower().Contains(metroTextBox1.Text.ToLower())) + { + treeViewEntity.Nodes.Add((TreeNode)_node.Clone()); + } + } + } + else + { + foreach (TreeNode _node in treeViewEntityCache) + { + treeViewEntity.Nodes.Add((TreeNode)_node.Clone()); + } + } + //enables redrawing tree after all objects have been added + treeViewEntity.EndUpdate(); + } + + private void CancelBtn_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + private void AcceptBtn_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(selectedEntity)) CancelBtn_Click(sender, e); + DialogResult = DialogResult.OK; + Close(); + } + } +} diff --git a/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.resx b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index e2933188..ff2b91a3 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -12,10 +12,9 @@ namespace PckStudio.Forms.Editor { public partial class BehaviourEditor : MetroForm { - // Behaviours File Format research by Miku + // Behaviours File Format research by Miku and MattNL private readonly PCKFile.FileData _file; BehaviourFile behaviourFile; - bool _isLittleEndian = false; void SetUpTree() { @@ -48,6 +47,10 @@ namespace PckStudio.Forms.Editor behaviourFile = BehavioursReader.Read(stream); } + treeView1.ImageList = new ImageList(); + Utilities.BehaviourUtil.entityImages.ToList().ForEach(img => treeView1.ImageList.Images.Add(img)); + treeView1.ImageList.ImageSize = new Size(32, 32); + treeView1.ImageList.ColorDepth = ColorDepth.Depth32Bit; SetUpTree(); } @@ -163,15 +166,26 @@ namespace PckStudio.Forms.Editor private void addNewEntryToolStripMenuItem_Click(object sender, EventArgs e) { - BehaviourFile.RiderPositionOverride NewOverride = new BehaviourFile.RiderPositionOverride("NewRiderOverride"); + var diag = new Additional_Popups.Behaviours.AddBehaviour(); - TreeNode NewOverrideNode = new TreeNode(NewOverride.name); - NewOverrideNode.Tag = NewOverride; - treeView1.Nodes.Add(NewOverrideNode); + if(diag.ShowDialog() == DialogResult.OK) + { + if (String.IsNullOrEmpty(diag.SelectedEntity)) return; + if (behaviourFile.entries.FindAll(behaviour => behaviour.name == diag.SelectedEntity).Count() > 0) + { + MessageBox.Show(this, "You cannot have two entries for one entity. Please use the \"Add New Position Override\" tool to add multiple overrides for entities", "Error", MessageBoxButtons.OK); + return; + } + BehaviourFile.RiderPositionOverride NewOverride = new BehaviourFile.RiderPositionOverride(diag.SelectedEntity); - treeView1.SelectedNode = NewOverrideNode; + TreeNode NewOverrideNode = new TreeNode(NewOverride.name); + NewOverrideNode.Tag = NewOverride; + treeView1.Nodes.Add(NewOverrideNode); - addNewPositionOverrideToolStripMenuItem_Click(sender, e); // adds a Position Override to the new Override + treeView1.SelectedNode = NewOverrideNode; + + addNewPositionOverrideToolStripMenuItem_Click(sender, e); // adds a Position Override to the new Override + } } private void treeView1_KeyDown(object sender, KeyEventArgs e) diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index 4dcb4ed1..4aad58c5 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -18,44 +18,41 @@ false true - - - - $(IntermediateOutputPath)gitver - - - - - - - - - - - - @(GitVersion) - - - - - - - $(IntermediateOutputPath)GitHashAssemblyInfo.cs - - - - - - - - - <_Parameter1>GitHash - <_Parameter2>$(BuildHash) - - - - - + + + + $(IntermediateOutputPath)gitver + + + + + + + + + + @(GitVersion) + + + + + + $(IntermediateOutputPath)GitHashAssemblyInfo.cs + + + + + + + + + <_Parameter1>GitHash + <_Parameter2>$(BuildHash) + + + + + Debug AnyCPU @@ -200,6 +197,7 @@ + @@ -242,6 +240,12 @@ + + Form + + + AddBehaviour.cs + Form @@ -362,6 +366,7 @@ pleaseWait.cs + Form @@ -491,6 +496,9 @@ + + AddBehaviour.cs + AddLanguage.cs @@ -689,6 +697,7 @@ + @@ -750,6 +759,7 @@ + From f7d0180951e3eaf2391fd7036b1e9c1d6e6809e4 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:25:58 -0500 Subject: [PATCH 10/19] Updated BehaviourEditor --- .../Forms/Editor/BehaviourEditor.Designer.cs | 24 +++++++++---------- PCK-Studio/Forms/Editor/BehaviourEditor.cs | 19 ++++++++++++++- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs index 417438d8..df241105 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs @@ -66,7 +66,7 @@ this.treeView1.Location = new System.Drawing.Point(20, 84); this.treeView1.Margin = new System.Windows.Forms.Padding(0); this.treeView1.Name = "treeView1"; - this.treeView1.Size = new System.Drawing.Size(128, 176); + this.treeView1.Size = new System.Drawing.Size(186, 176); this.treeView1.TabIndex = 13; this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); this.treeView1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick); @@ -128,7 +128,7 @@ this.helpToolStripMenuItem}); this.menuStrip.Location = new System.Drawing.Point(20, 60); this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(274, 24); + this.menuStrip.Size = new System.Drawing.Size(309, 24); this.menuStrip.TabIndex = 14; this.menuStrip.Text = "menuStrip1"; // @@ -145,7 +145,7 @@ // this.saveToolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem1.Image"))); this.saveToolStripMenuItem1.Name = "saveToolStripMenuItem1"; - this.saveToolStripMenuItem1.Size = new System.Drawing.Size(180, 22); + this.saveToolStripMenuItem1.Size = new System.Drawing.Size(98, 22); this.saveToolStripMenuItem1.Text = "Save"; this.saveToolStripMenuItem1.Click += new System.EventHandler(this.saveToolStripMenuItem1_Click); // @@ -160,7 +160,7 @@ // this.flag1Checkbox.AutoSize = true; this.flag1Checkbox.Enabled = false; - this.flag1Checkbox.Location = new System.Drawing.Point(174, 109); + this.flag1Checkbox.Location = new System.Drawing.Point(221, 104); this.flag1Checkbox.Name = "flag1Checkbox"; this.flag1Checkbox.Size = new System.Drawing.Size(96, 15); this.flag1Checkbox.TabIndex = 22; @@ -173,7 +173,7 @@ // this.flag2Checkbox.AutoSize = true; this.flag2Checkbox.Enabled = false; - this.flag2Checkbox.Location = new System.Drawing.Point(174, 141); + this.flag2Checkbox.Location = new System.Drawing.Point(221, 136); this.flag2Checkbox.Name = "flag2Checkbox"; this.flag2Checkbox.Size = new System.Drawing.Size(106, 15); this.flag2Checkbox.TabIndex = 23; @@ -188,7 +188,7 @@ this.zUpDown.DecimalPlaces = 3; this.zUpDown.Enabled = false; this.zUpDown.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204))))); - this.zUpDown.Location = new System.Drawing.Point(207, 225); + this.zUpDown.Location = new System.Drawing.Point(254, 220); this.zUpDown.Maximum = new decimal(new int[] { 255, 0, @@ -205,7 +205,7 @@ this.yUpDown.DecimalPlaces = 3; this.yUpDown.Enabled = false; this.yUpDown.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204))))); - this.yUpDown.Location = new System.Drawing.Point(207, 199); + this.yUpDown.Location = new System.Drawing.Point(254, 194); this.yUpDown.Maximum = new decimal(new int[] { 255, 0, @@ -219,7 +219,7 @@ // zLabel // this.zLabel.AutoSize = true; - this.zLabel.Location = new System.Drawing.Point(174, 225); + this.zLabel.Location = new System.Drawing.Point(221, 220); this.zLabel.Name = "zLabel"; this.zLabel.Size = new System.Drawing.Size(20, 19); this.zLabel.TabIndex = 25; @@ -229,7 +229,7 @@ // yLabel // this.yLabel.AutoSize = true; - this.yLabel.Location = new System.Drawing.Point(175, 199); + this.yLabel.Location = new System.Drawing.Point(222, 194); this.yLabel.Name = "yLabel"; this.yLabel.Size = new System.Drawing.Size(20, 19); this.yLabel.TabIndex = 24; @@ -242,7 +242,7 @@ this.xUpDown.DecimalPlaces = 3; this.xUpDown.Enabled = false; this.xUpDown.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(204)))), ((int)(((byte)(204))))); - this.xUpDown.Location = new System.Drawing.Point(207, 173); + this.xUpDown.Location = new System.Drawing.Point(254, 168); this.xUpDown.Maximum = new decimal(new int[] { 255, 0, @@ -256,7 +256,7 @@ // xLabel // this.xLabel.AutoSize = true; - this.xLabel.Location = new System.Drawing.Point(175, 173); + this.xLabel.Location = new System.Drawing.Point(222, 168); this.xLabel.Name = "xLabel"; this.xLabel.Size = new System.Drawing.Size(20, 19); this.xLabel.TabIndex = 30; @@ -267,7 +267,7 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(314, 280); + this.ClientSize = new System.Drawing.Size(349, 280); this.Controls.Add(this.xUpDown); this.Controls.Add(this.xLabel); this.Controls.Add(this.zUpDown); diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index ff2b91a3..d2223490 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -1,12 +1,15 @@ using System; using System.Collections.Generic; using System.Drawing; +using System.Diagnostics; using System.IO; using System.Linq; using System.Windows.Forms; using MetroFramework.Forms; using PckStudio.Classes.FileTypes; using PckStudio.Classes.IO.Behaviour; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace PckStudio.Forms.Editor { @@ -23,6 +26,19 @@ namespace PckStudio.Forms.Editor foreach (var entry in behaviourFile.entries) { TreeNode EntryNode = new TreeNode(entry.name); + + foreach (JObject content in Utilities.BehaviourUtil.entityData["entities"].Children()) + { + var prop = content.Properties().FirstOrDefault(prop => prop.Name == entry.name); + if (prop is JProperty) + { + EntryNode.Text = (string)prop.Value; + EntryNode.ImageIndex = Utilities.BehaviourUtil.entityData["entities"].Children().ToList().IndexOf(content); + EntryNode.SelectedImageIndex = EntryNode.ImageIndex; + break; + } + } + EntryNode.Tag = entry; foreach (var posOverride in entry.overrides) @@ -30,6 +46,8 @@ namespace PckStudio.Forms.Editor TreeNode OverrideNode = new TreeNode("Position Override"); OverrideNode.Tag = posOverride; EntryNode.Nodes.Add(OverrideNode); + OverrideNode.ImageIndex = 103; + OverrideNode.SelectedImageIndex = OverrideNode.ImageIndex; } treeView1.Nodes.Add(EntryNode); @@ -49,7 +67,6 @@ namespace PckStudio.Forms.Editor treeView1.ImageList = new ImageList(); Utilities.BehaviourUtil.entityImages.ToList().ForEach(img => treeView1.ImageList.Images.Add(img)); - treeView1.ImageList.ImageSize = new Size(32, 32); treeView1.ImageList.ColorDepth = ColorDepth.Depth32Bit; SetUpTree(); } From a08dda7a04e189e0e89edefdb29de6442ab80721 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:26:10 -0500 Subject: [PATCH 11/19] Updated Entity Resources --- PCK-Studio/Resources/entities.png | Bin 38599 -> 40825 bytes PCK-Studio/Resources/entityBehaviourData.json | 12 ++++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/PCK-Studio/Resources/entities.png b/PCK-Studio/Resources/entities.png index 5995c27e31db716bb1191695a5f968ba08cdd8d0..341a84b53ec1dda17c58c9531764f1abc4169d43 100644 GIT binary patch delta 40274 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 delta 38003 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 KFPC3(fAn9wr+JtF diff --git a/PCK-Studio/Resources/entityBehaviourData.json b/PCK-Studio/Resources/entityBehaviourData.json index e3d69566..eca669b9 100644 --- a/PCK-Studio/Resources/entityBehaviourData.json +++ b/PCK-Studio/Resources/entityBehaviourData.json @@ -8,7 +8,7 @@ { "blaze": "Blaze" }, { "boat": "Boat" }, { "cat": "Cat (PS4 EXCLUSIVE)" }, - { "cave_spider": "Cave Spider (PS4 EXCLUSIVE)" }, + { "cave_spider": "Cave Spider" }, { "chest_minecart": "Chest Minecart" }, { "chicken": "Chicken" }, { "cod": "Cod" }, @@ -96,6 +96,14 @@ { "zombie": "Zombie" }, { "zombie_horse": "Zombie Horse" }, { "zombie_pigman": "Zombie Pigman" }, - { "zombie_villager": "Zombie Villager" } + { "zombie_villager": "Zombie Villager" }, + { "": "" }, + { "": "" }, + { "": "" }, + { "": "" }, + { "": "" }, + { "": "" }, + { "": "" }, + { "RiderOverrideIcon": "RiderOverrideIcon" } ] } From 7093ee24125f371b6aaaa6992d51af99f0adfbdb Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:38:16 -0500 Subject: [PATCH 12/19] Fixed a small bug involving skins --- PCK-Studio/MainForm.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index 6f037b4e..0ca5dfce 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -817,7 +817,7 @@ namespace PckStudio TrySetLocFile(locFile); saved = false; - //BuildMainTreeView(); + BuildMainTreeView(); } } From 0dbb08ffa89883d05c5666d445e2006a196904a5 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:43:17 -0500 Subject: [PATCH 13/19] Removed parameters from CreateNewBehaviourFile --- PCK-Studio/Forms/Utilities/BehaviourUtil.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PCK-Studio/Forms/Utilities/BehaviourUtil.cs b/PCK-Studio/Forms/Utilities/BehaviourUtil.cs index ed7ff648..ff3f88a0 100644 --- a/PCK-Studio/Forms/Utilities/BehaviourUtil.cs +++ b/PCK-Studio/Forms/Utilities/BehaviourUtil.cs @@ -26,7 +26,7 @@ namespace PckStudio.Forms.Utilities return _entityImages; } } - public static PCKFile.FileData CreateNewBehaviourFile(Image source, string tileName, bool isItem) + public static PCKFile.FileData CreateNewBehaviourFile() { PCKFile.FileData file = new PCKFile.FileData($"behaviours.bin", PCKFile.FileData.FileType.BehavioursFile); From e4605b1634f0e3cdb6fce561160a11650fb99f91 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:45:56 -0500 Subject: [PATCH 14/19] Fixed NodeIcon for RiderOverride from showing in the Entity menu --- PCK-Studio/Resources/entityBehaviourData.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PCK-Studio/Resources/entityBehaviourData.json b/PCK-Studio/Resources/entityBehaviourData.json index eca669b9..67b2aeff 100644 --- a/PCK-Studio/Resources/entityBehaviourData.json +++ b/PCK-Studio/Resources/entityBehaviourData.json @@ -104,6 +104,6 @@ { "": "" }, { "": "" }, { "": "" }, - { "RiderOverrideIcon": "RiderOverrideIcon" } + { "": "" } ] } From 5db8e3ada5104212f728a3e97feda733b6c91758 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:46:26 -0500 Subject: [PATCH 15/19] Added tool to create new Behaviour files --- PCK-Studio/MainForm.Designer.cs | 45 +- PCK-Studio/MainForm.cs | 13 + PCK-Studio/MainForm.resx | 905 ++++++++++++-------------------- 3 files changed, 387 insertions(+), 576 deletions(-) diff --git a/PCK-Studio/MainForm.Designer.cs b/PCK-Studio/MainForm.Designer.cs index 9b2acc84..060441a4 100644 --- a/PCK-Studio/MainForm.Designer.cs +++ b/PCK-Studio/MainForm.Designer.cs @@ -124,6 +124,7 @@ this.labelVersion = new MetroFramework.Controls.MetroLabel(); this.ChangelogRichTextBox = new System.Windows.Forms.RichTextBox(); this.editorTab = new MetroFramework.Controls.MetroTabPage(); + this.metroLabel3 = new MetroFramework.Controls.MetroLabel(); this.labelImageSize = new MetroFramework.Controls.MetroLabel(); this.fileEntryCountLabel = new MetroFramework.Controls.MetroLabel(); this.PropertiesTabControl = new MetroFramework.Controls.MetroTabControl(); @@ -137,9 +138,9 @@ this.label11 = new MetroFramework.Controls.MetroLabel(); this.treeViewMain = new System.Windows.Forms.TreeView(); this.imageList = new System.Windows.Forms.ImageList(this.components); - this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox(); - this.metroLabel3 = new MetroFramework.Controls.MetroLabel(); this.pictureBoxImagePreview = new PckStudio.PictureBoxWithInterpolationMode(); + this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox(); + this.behavioursbinToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuPCKEntries.SuspendLayout(); this.menuStrip.SuspendLayout(); this.contextMenuMetaTree.SuspendLayout(); @@ -177,7 +178,8 @@ this.createAnimatedTextureToolStripMenuItem, this.audiopckToolStripMenuItem, this.colourscolToolStripMenuItem, - this.CreateSkinsPCKToolStripMenuItem1}); + this.CreateSkinsPCKToolStripMenuItem1, + this.behavioursbinToolStripMenuItem}); resources.ApplyResources(this.createToolStripMenuItem, "createToolStripMenuItem"); this.createToolStripMenuItem.Name = "createToolStripMenuItem"; // @@ -201,18 +203,21 @@ // // audiopckToolStripMenuItem // - resources.ApplyResources(this.audiopckToolStripMenuItem, "audiopckToolStripMenuItem"); + this.audiopckToolStripMenuItem.Image = global::PckStudio.Properties.Resources.BINKA_ICON; this.audiopckToolStripMenuItem.Name = "audiopckToolStripMenuItem"; + resources.ApplyResources(this.audiopckToolStripMenuItem, "audiopckToolStripMenuItem"); this.audiopckToolStripMenuItem.Click += new System.EventHandler(this.audiopckToolStripMenuItem_Click); // // colourscolToolStripMenuItem // + this.colourscolToolStripMenuItem.Image = global::PckStudio.Properties.Resources.COL_ICON; this.colourscolToolStripMenuItem.Name = "colourscolToolStripMenuItem"; resources.ApplyResources(this.colourscolToolStripMenuItem, "colourscolToolStripMenuItem"); this.colourscolToolStripMenuItem.Click += new System.EventHandler(this.colourscolToolStripMenuItem_Click); // // CreateSkinsPCKToolStripMenuItem1 // + this.CreateSkinsPCKToolStripMenuItem1.Image = global::PckStudio.Properties.Resources.SKINS_ICON; this.CreateSkinsPCKToolStripMenuItem1.Name = "CreateSkinsPCKToolStripMenuItem1"; resources.ApplyResources(this.CreateSkinsPCKToolStripMenuItem1, "CreateSkinsPCKToolStripMenuItem1"); this.CreateSkinsPCKToolStripMenuItem1.Click += new System.EventHandler(this.CreateSkinsPCKToolStripMenuItem1_Click); @@ -848,6 +853,12 @@ this.editorTab.VerticalScrollbarHighlightOnWheel = false; this.editorTab.VerticalScrollbarSize = 0; // + // metroLabel3 + // + resources.ApplyResources(this.metroLabel3, "metroLabel3"); + this.metroLabel3.Name = "metroLabel3"; + this.metroLabel3.Theme = MetroFramework.MetroThemeStyle.Dark; + // // labelImageSize // resources.ApplyResources(this.labelImageSize, "labelImageSize"); @@ -1010,6 +1021,14 @@ resources.ApplyResources(this.imageList, "imageList"); this.imageList.TransparentColor = System.Drawing.Color.Transparent; // + // pictureBoxImagePreview + // + resources.ApplyResources(this.pictureBoxImagePreview, "pictureBoxImagePreview"); + this.pictureBoxImagePreview.BackColor = System.Drawing.Color.Transparent; + this.pictureBoxImagePreview.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + this.pictureBoxImagePreview.Name = "pictureBoxImagePreview"; + this.pictureBoxImagePreview.TabStop = false; + // // LittleEndianCheckBox // resources.ApplyResources(this.LittleEndianCheckBox, "LittleEndianCheckBox"); @@ -1019,19 +1038,12 @@ this.LittleEndianCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark; this.LittleEndianCheckBox.UseSelectable = true; // - // metroLabel3 + // behavioursbinToolStripMenuItem // - resources.ApplyResources(this.metroLabel3, "metroLabel3"); - this.metroLabel3.Name = "metroLabel3"; - this.metroLabel3.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // pictureBoxImagePreview - // - resources.ApplyResources(this.pictureBoxImagePreview, "pictureBoxImagePreview"); - this.pictureBoxImagePreview.BackColor = System.Drawing.Color.Transparent; - this.pictureBoxImagePreview.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - this.pictureBoxImagePreview.Name = "pictureBoxImagePreview"; - this.pictureBoxImagePreview.TabStop = false; + this.behavioursbinToolStripMenuItem.Image = global::PckStudio.Properties.Resources.BEHAVIOURS_ICON; + this.behavioursbinToolStripMenuItem.Name = "behavioursbinToolStripMenuItem"; + resources.ApplyResources(this.behavioursbinToolStripMenuItem, "behavioursbinToolStripMenuItem"); + this.behavioursbinToolStripMenuItem.Click += new System.EventHandler(this.behavioursbinToolStripMenuItem_Click); // // MainForm // @@ -1182,6 +1194,7 @@ private System.Windows.Forms.ToolStripMenuItem editAllEntriesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addFileToolStripMenuItem; private MetroFramework.Controls.MetroLabel metroLabel3; + private System.Windows.Forms.ToolStripMenuItem behavioursbinToolStripMenuItem; } } diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index 0ca5dfce..619d072f 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -2243,6 +2243,19 @@ namespace PckStudio } return; } + + private void behavioursbinToolStripMenuItem_Click(object sender, EventArgs e) + { + PCKFile.FileData NewBehaviourFile; + if (currentPCK.TryGetFile("behaviours.bin", PCKFile.FileData.FileType.BehavioursFile, out NewBehaviourFile)) + { + MessageBox.Show("A behaviours file already exists in this PCK and a new one cannot be created.", "Operation aborted"); + return; + } + NewBehaviourFile = BehaviourUtil.CreateNewBehaviourFile(); + currentPCK.Files.Add(NewBehaviourFile); + BuildMainTreeView(); + } } public class PckNodeSorter : System.Collections.IComparer diff --git a/PCK-Studio/MainForm.resx b/PCK-Studio/MainForm.resx index 71a85fa8..5b8b6e3b 100644 --- a/PCK-Studio/MainForm.resx +++ b/PCK-Studio/MainForm.resx @@ -121,29 +121,6 @@ 116, 17 - - 158, 224 - - - contextMenuPCKEntries - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/ - /z9FGKsgGIsCKWSMTQ0QYxUE45FmALpiYvFwMgAbxqIYG8YqCMajBhCJ/zMAAPGwpV/Xje8RAAAAAElF - TkSuQmCC - - - - 157, 22 - - - Create - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -153,7 +130,7 @@ - 167, 22 + 180, 22 Folder @@ -175,7 +152,7 @@ - 167, 22 + 180, 22 Skin @@ -197,51 +174,48 @@ - 167, 22 + 180, 22 Animated Texture - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAAFlJREFUOE9jIAQ8Fjz4D8JWky+BMVSYeEA1A7SaDoExyQZRzQAol0GhYsd/EIZy - CQOKDSDZyehg1AAyDEja9es/CMOiD5aAoNKEAcUGwDTAEgzJCYc0AxgYAMwrpe0sH8vyAAAAAElFTkSu - QmCC - - - 167, 22 + 180, 22 Audio.pck - 167, 22 + 180, 22 Colours.col - 167, 22 + 180, 22 Skins.pck - + + 180, 22 + + + Behaviours.bin + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABzSURBVDhPpYzB - DQAhCARp4hr3Txu254WTjYRb9cEmk/BgRjBVHTv85Twmgt77PcJEYIFrhIkAgWOEiSAGthEmgtbaD9fW - mBgpB4xywCgFxiMf5YDdrq3l5wjEjKtzTARMNlydY2IGot2ureVnRjkQmZbICyCi7XU5cfqKAAAAAElF + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/ + /z9FGKsgGIsCKWSMTQ0QYxUE45FmALpiYvFwMgAbxqIYG8YqCMajBhCJ/zMAAPGwpV/Xje8RAAAAAElF TkSuQmCC - - 157, 22 + + 180, 22 - - Import + + Create @@ -295,11 +269,20 @@ Add File - - 157, 22 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABzSURBVDhPpYzB + DQAhCARp4hr3Txu254WTjYRb9cEmk/BgRjBVHTv85Twmgt77PcJEYIFrhIkAgWOEiSAGthEmgtbaD9fW + mBgpB4xywCgFxiMf5YDdrq3l5wjEjKtzTARMNlydY2IGot2ureVnRjkQmZbICyCi7XU5cfqKAAAAAElF + TkSuQmCC + - - Export + + 180, 22 + + + Import 186, 22 @@ -307,11 +290,11 @@ Export as 3DS Texture - - 157, 22 + + 180, 22 - - Set File Type + + Export 222, 22 @@ -385,11 +368,11 @@ Entity Materials File (.BIN) - - 157, 22 + + 180, 22 - - Misc. Functions + + Set File Type 210, 22 @@ -409,6 +392,12 @@ Correct Skin Decimals + + 180, 22 + + + Misc. Functions + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -419,13 +408,13 @@ - 157, 22 + 180, 22 Extract - 157, 22 + 180, 22 Clone @@ -438,7 +427,7 @@ - 157, 22 + 180, 22 Rename @@ -454,7 +443,7 @@ - 157, 22 + 180, 22 Replace @@ -469,11 +458,20 @@ - 157, 22 + 180, 22 Delete + + 181, 246 + + + contextMenuPCKEntries + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 17, 17 @@ -488,53 +486,6 @@ None - - 24, 44 - - - 1016, 24 - - - 2 - - - menuStrip1 - - - menuStrip - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - 37, 20 - - - File - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADuSURBVFhH7ZbB - CsMgEERDbv5A/v83e2jNTmCKGdegJk0heHgUn7vrKBQyxRj/iivJPM9WMTWjc45wJeAwhAghVJEG1nkl - XNkziLCvtteXphFCfQ08nOi+4kvTeFL1NfBQ/BLuefjS9NkAADOwPnpNX14UADBEaV4mNnkygN34Y/1v - AgeWZXll9So2eTLAEVm9ik2a7g1Qgn9t9bvFV/4gAOZdHgB1RPeUEeAZAeBr0d4R4JIACuqI7ikjwDMD - tDACNAfo/Sou0fQ9wGKvoQfO8i61W6SkTXi+XtLLgOwcFSna3It3c+LKO3HlfcRpBa3JBjU5E8DiAAAA - AElFTkSuQmCC - - - - 217, 22 - - - New - 151, 22 @@ -553,6 +504,23 @@ Mash-Up Pack + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADuSURBVFhH7ZbB + CsMgEERDbv5A/v83e2jNTmCKGdegJk0heHgUn7vrKBQyxRj/iivJPM9WMTWjc45wJeAwhAghVJEG1nkl + XNkziLCvtteXphFCfQ08nOi+4kvTeFL1NfBQ/BLuefjS9NkAADOwPnpNX14UADBEaV4mNnkygN34Y/1v + AgeWZXll9So2eTLAEVm9ik2a7g1Qgn9t9bvFV/4gAOZdHgB1RPeUEeAZAeBr0d4R4JIACuqI7ikjwDMD + tDACNAfo/Sou0fQ9wGKvoQfO8i61W6SkTXi+XtLLgOwcFSna3It3c+LKO3HlfcRpBa3JBjU5E8DiAAAA + AElFTkSuQmCC + + + + 217, 22 + + + New + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -671,11 +639,11 @@ False - - 39, 20 + + 37, 20 - - Edit + + File False @@ -721,11 +689,11 @@ Convert to Bedrock - - 44, 20 + + 39, 20 - - Help + + Edit @@ -1267,20 +1235,6 @@ Binka Conversion - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAKdJREFUOE+1 - jzEKwzAQBNUEXKQIBOwifcgTUvkDbt2p9qP0Ev1E31FYkVXOx2FLRRYWi7NnTnZ/z/MxZPY7aguhbZlq - myQafL+ubRINshCwnO0kFqi3HkpwWOf7DkC1RBfvx9slV4ElscqbxBiz9/4nwOBIQjCEUL7FswhwDYAp - JVMiN0oYs/ILiCXRIGHOwVQBoiXsKSgjJdzaBMpQ0g3KEOoG++PcBx9PFJGNjU4vAAAAAElFTkSuQmCC - - - - 181, 22 - - - Tutorials - iVBORw0KGgoAAAANSUhEUgAACOAAAAaoCAYAAAAgNTafAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m @@ -21966,6 +21920,20 @@ How PCKs work + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAKdJREFUOE+1 + jzEKwzAQBNUEXKQIBOwifcgTUvkDbt2p9qP0Ev1E31FYkVXOx2FLRRYWi7NnTnZ/z/MxZPY7aguhbZlq + myQafL+ubRINshCwnO0kFqi3HkpwWOf7DkC1RBfvx9slV4ElscqbxBiz9/4nwOBIQjCEUL7FswhwDYAp + JVMiN0oYs/ILiCXRIGHOwVQBoiXsKSgjJdzaBMpQ0g3KEOoG++PcBx9PFJGNjU4vAAAAAElFTkSuQmCC + + + + 181, 22 + + + Tutorials + iVBORw0KGgoAAAANSUhEUgAABkAAAAZACAYAAAAhDI6nAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -23969,12 +23937,6 @@ FAQ - - 181, 22 - - - Buy a coffee - 253, 22 @@ -23993,6 +23955,12 @@ For MattNL (Other Developer) + + 181, 22 + + + Buy a coffee + 181, 22 @@ -25840,18 +25808,11 @@ Administrative Tools - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAAAuSURBVDhPY/j/ - /z9FGMYgFwwbA8gFcANARpEJho0B5AK4ASCjyATDyQAy8X8GAKAaUNpxMP6IAAAAAElFTkSuQmCC - + + 44, 20 - - 63, 20 - - - More + + Help @@ -28550,11 +28511,18 @@ Join Development Discord - - 47, 20 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAAAuSURBVDhPY/j/ + /z9FGMYgFwwbA8gFcANARpEJho0B5AK4ASCjyATDyQAy8X8GAKAaUNpxMP6IAAAAAElFTkSuQmCC + - - Misc. + + 63, 20 + + + More False @@ -28565,18 +28533,39 @@ Add Custom Pack Icon + + 47, 20 + + + Misc. + + + 24, 44 + + + 1016, 24 + + + 2 + + + menuStrip1 + + + menuStrip + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + 298, 17 - - 182, 92 - - - contextMenuMetaTree - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -28626,6 +28615,15 @@ Edit All Entries + + 182, 92 + + + contextMenuMetaTree + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + iVBORw0KGgoAAAANSUhEUgAAAbYAAAB7CAYAAAAYCKWuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -29312,219 +29310,6 @@ 8 - - pckOpen - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - openTab - - - 2 - - - label5 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - openTab - - - 3 - - - labelVersion - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - openTab - - - 4 - - - ChangelogRichTextBox - - - System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - openTab - - - 5 - - - 4, 38 - - - 18, 30, 20, 5 - - - 1016, 558 - - - 1 - - - openTab - - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - tabControl - - - 0 - - - True - - - None - - - metroLabel3 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 2 - - - labelImageSize - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 3 - - - fileEntryCountLabel - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 4 - - - PropertiesTabControl - - - MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 5 - - - label11 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 6 - - - treeViewMain - - - System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editorTab - - - 7 - - - pictureBoxImagePreview - - - PckStudio.PictureBoxWithInterpolationMode, PCK-Studio, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null - - - editorTab - - - 9 - - - 4, 38 - - - 5, 50, 5, 7 - - - 1016, 558 - - - 0 - - - editorTab - - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - tabControl - - - 1 - - - Fill - - - 20, 30 - - - 0, 0, 0, 0 - - - 1024, 600 - - - 0 - - - tabControl - - - MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - $this - - - 4 - None @@ -30635,6 +30420,57 @@ 5 + + 4, 38 + + + 18, 30, 20, 5 + + + 1016, 558 + + + 1 + + + openTab + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + tabControl + + + 0 + + + None + + + 9, 28 + + + 326, 19 + + + 0 + + + pckFileLabel + + + metroLabel3 + + + MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + editorTab + + + 2 + Top, Right @@ -30692,138 +30528,6 @@ Top, Bottom, Right - - MetaTab - - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - PropertiesTabControl - - - 0 - - - 338, 277 - - - 671, 282 - - - 11 - - - PropertiesTabControl - - - MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 5 - - - metroLabel2 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - MetaTab - - - 2 - - - treeMeta - - - System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MetaTab - - - 3 - - - entryTypeTextBox - - - MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - MetaTab - - - 4 - - - entryDataTextBox - - - MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - MetaTab - - - 5 - - - buttonEdit - - - MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - MetaTab - - - 6 - - - metroLabel1 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - MetaTab - - - 7 - - - 4, 38 - - - 3, 3, 3, 3 - - - 663, 240 - - - 0 - - - Properties - - - MetaTab - - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - PropertiesTabControl - - - 0 - Top, Right @@ -31025,6 +30729,54 @@ 7 + + 4, 38 + + + 3, 3, 3, 3 + + + 663, 240 + + + 0 + + + Properties + + + MetaTab + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + PropertiesTabControl + + + 0 + + + 338, 277 + + + 671, 282 + + + 11 + + + PropertiesTabControl + + + MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + editorTab + + + 5 + True @@ -31094,60 +30846,6 @@ 7 - - Top, Right - - - True - - - 866, 49 - - - 167, 15 - - - 21 - - - Open/Save as Vita/PS4 PCK - - - LittleEndianCheckBox - - - MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - $this - - - 2 - - - 9, 28 - - - 326, 19 - - - 0 - - - pckFileLabel - - - metroLabel3 - - - MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - editorTab - - - 2 - Top, Right @@ -31181,6 +30879,87 @@ 9 + + 4, 38 + + + 5, 50, 5, 7 + + + 1016, 558 + + + 0 + + + editorTab + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + tabControl + + + 1 + + + Fill + + + 20, 30 + + + 0, 0, 0, 0 + + + 1024, 600 + + + 0 + + + tabControl + + + MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + $this + + + 4 + + + Top, Right + + + True + + + 866, 49 + + + 167, 15 + + + 21 + + + Open/Save as Vita/PS4 PCK + + + LittleEndianCheckBox + + + MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + $this + + + 2 + True @@ -34215,6 +33994,12 @@ System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + behavioursbinToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MainForm From 0630e35d8cd43f14061172e6f521ca61fe502fb1 Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 04:50:19 -0500 Subject: [PATCH 16/19] Changed AcceptButton access to public --- .../Additional-Popups/Behaviours/AddBehaviour.Designer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs index c64f207a..3fc760c7 100644 --- a/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs +++ b/PCK-Studio/Forms/Additional-Popups/Behaviours/AddBehaviour.Designer.cs @@ -66,13 +66,13 @@ this.CancelBtn.UseVisualStyleBackColor = true; this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click); // - // treeViewBlocks + // treeViewEntity // this.treeViewEntity.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.treeViewEntity.Dock = System.Windows.Forms.DockStyle.Fill; this.treeViewEntity.ForeColor = System.Drawing.Color.White; this.treeViewEntity.Location = new System.Drawing.Point(0, 0); - this.treeViewEntity.Name = "treeViewBlocks"; + this.treeViewEntity.Name = "treeViewEntity"; this.treeViewEntity.Size = new System.Drawing.Size(318, 142); this.treeViewEntity.TabIndex = 14; this.treeViewEntity.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViews_AfterSelect); @@ -174,12 +174,12 @@ } #endregion - private System.Windows.Forms.Button acceptBtn; private System.Windows.Forms.Button CancelBtn; private System.Windows.Forms.TreeView treeViewEntity; private MetroFramework.Controls.MetroLabel metroLabel2; private MetroFramework.Controls.MetroTextBox metroTextBox1; private MetroFramework.Controls.MetroTabControl metroTabControl1; private System.Windows.Forms.TabPage Blocks; + public System.Windows.Forms.Button acceptBtn; } } \ No newline at end of file From 8e333b62e7043eeaae0887c7d0bed17bc5b616bf Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 05:10:28 -0500 Subject: [PATCH 17/19] Changed Rename tool to Change tool in BehaviourEditor --- .../Forms/Editor/BehaviourEditor.Designer.cs | 12 ++++---- PCK-Studio/Forms/Editor/BehaviourEditor.cs | 30 +++++++++++++++---- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs index df241105..102b60ce 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.Designer.cs @@ -80,7 +80,7 @@ this.renameToolStripMenuItem, this.removeToolStripMenuItem}); this.metroContextMenu1.Name = "metroContextMenu1"; - this.metroContextMenu1.Size = new System.Drawing.Size(118, 70); + this.metroContextMenu1.Size = new System.Drawing.Size(181, 92); // // addToolStripMenuItem // @@ -88,7 +88,7 @@ this.addNewEntryToolStripMenuItem, this.addNewPositionOverrideToolStripMenuItem}); this.addToolStripMenuItem.Name = "addToolStripMenuItem"; - this.addToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.addToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.addToolStripMenuItem.Text = "Add"; // // addNewEntryToolStripMenuItem @@ -108,14 +108,14 @@ // renameToolStripMenuItem // this.renameToolStripMenuItem.Name = "renameToolStripMenuItem"; - this.renameToolStripMenuItem.Size = new System.Drawing.Size(117, 22); - this.renameToolStripMenuItem.Text = "Rename"; - this.renameToolStripMenuItem.Click += new System.EventHandler(this.renameToolStripMenuItem_Click); + this.renameToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.renameToolStripMenuItem.Text = "Change"; + this.renameToolStripMenuItem.Click += new System.EventHandler(this.changeToolStripMenuItem_Click); // // removeToolStripMenuItem // this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; - this.removeToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.removeToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.removeToolStripMenuItem.Text = "Remove"; this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); // diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index d2223490..81bc984e 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -147,16 +147,36 @@ namespace PckStudio.Forms.Editor } } - private void renameToolStripMenuItem_Click(object sender, EventArgs e) + private void changeToolStripMenuItem_Click(object sender, EventArgs e) { if (!(treeView1.SelectedNode.Tag is BehaviourFile.RiderPositionOverride entry)) return; - using RenamePrompt diag = new RenamePrompt(entry.name); - if (diag.ShowDialog(this) == DialogResult.OK) + var diag = new Additional_Popups.Behaviours.AddBehaviour(); + diag.acceptBtn.Text = "Save"; + + if (diag.ShowDialog() == DialogResult.OK) { - entry.name = diag.NewText; + if (String.IsNullOrEmpty(diag.SelectedEntity)) return; + if (behaviourFile.entries.FindAll(behaviour => behaviour.name == diag.SelectedEntity).Count() > 0) + { + MessageBox.Show(this, "You cannot have two entries for one entity. Please use the \"Add New Position Override\" tool to add multiple overrides for entities", "Error", MessageBoxButtons.OK); + return; + } + + entry.name = diag.SelectedEntity; treeView1.SelectedNode.Tag = entry; - treeView1.SelectedNode.Text = diag.NewText; + + foreach (JObject content in Utilities.BehaviourUtil.entityData["entities"].Children()) + { + var prop = content.Properties().FirstOrDefault(prop => prop.Name == entry.name); + if (prop is JProperty) + { + treeView1.SelectedNode.Text = (string)prop.Value; + treeView1.SelectedNode.ImageIndex = Utilities.BehaviourUtil.entityData["entities"].Children().ToList().IndexOf(content); + treeView1.SelectedNode.SelectedImageIndex = treeView1.SelectedNode.ImageIndex; + break; + } + } } } From 12f3be70b353750f1bb9530efbc99d4fdbbf493c Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 05:23:47 -0500 Subject: [PATCH 18/19] Changed build from "a" to "b" --- PCK-Studio/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PCK-Studio/Program.cs b/PCK-Studio/Program.cs index dd83e93e..12416834 100644 --- a/PCK-Studio/Program.cs +++ b/PCK-Studio/Program.cs @@ -11,7 +11,7 @@ namespace PckStudio { // this is to specify which build release this is. This is manually updated for now // TODO: add different chars for different configurations - private const string BuildType = "a"; + private const string BuildType = "b"; private System.Globalization.Calendar BuildCalendar = new System.Globalization.CultureInfo("en-US").Calendar; private DateTime date = new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime; From 34f2cdfe47fa33045945e9f3891b373f3a84786a Mon Sep 17 00:00:00 2001 From: MattNL Date: Fri, 3 Mar 2023 09:19:05 -0500 Subject: [PATCH 19/19] Fix for a potential crash in BehaviourEditor --- PCK-Studio/Forms/Editor/BehaviourEditor.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index 81bc984e..f19ef875 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -149,6 +149,7 @@ namespace PckStudio.Forms.Editor private void changeToolStripMenuItem_Click(object sender, EventArgs e) { + if (treeView1.SelectedNode == null) return; if (!(treeView1.SelectedNode.Tag is BehaviourFile.RiderPositionOverride entry)) return; var diag = new Additional_Popups.Behaviours.AddBehaviour();