From de079d9d9ad45a5fa1a7ff8930c527d39cdefef5 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:56:03 +0100 Subject: [PATCH] Rename Util files and update OMI commit ref --- .../Additional-Popups/Animation/ChangeTile.cs | 10 +- PCK-Studio/Forms/Editor/AnimationEditor.cs | 6 +- PCK-Studio/Forms/Editor/BehaviourEditor.cs | 18 +-- PCK-Studio/Forms/Editor/MaterialsEditor.cs | 12 +- ...AnimationUtil.cs => AnimationResources.cs} | 15 +- ...BehaviourUtil.cs => BehaviourResources.cs} | 19 +-- .../Forms/Utilities/MaterialResources.cs | 33 ++++ PCK-Studio/Forms/Utilities/MaterialUtil.cs | 38 ----- .../{ModelsUtil.cs => ModelsResources.cs} | 15 +- PCK-Studio/MainForm.cs | 151 +++++++++--------- PCK-Studio/PckStudio.csproj | 8 +- Vendor/OMI-Lib | 2 +- 12 files changed, 155 insertions(+), 172 deletions(-) rename PCK-Studio/Forms/Utilities/{AnimationUtil.cs => AnimationResources.cs} (52%) rename PCK-Studio/Forms/Utilities/{BehaviourUtil.cs => BehaviourResources.cs} (53%) create mode 100644 PCK-Studio/Forms/Utilities/MaterialResources.cs delete mode 100644 PCK-Studio/Forms/Utilities/MaterialUtil.cs rename PCK-Studio/Forms/Utilities/{ModelsUtil.cs => ModelsResources.cs} (70%) diff --git a/PCK-Studio/Forms/Additional-Popups/Animation/ChangeTile.cs b/PCK-Studio/Forms/Additional-Popups/Animation/ChangeTile.cs index 4dbd756d..d09ace94 100644 --- a/PCK-Studio/Forms/Additional-Popups/Animation/ChangeTile.cs +++ b/PCK-Studio/Forms/Additional-Popups/Animation/ChangeTile.cs @@ -23,7 +23,7 @@ namespace PckStudio.Forms.Additional_Popups.Animation InitializeComponent(); ImageList tiles = new ImageList(); tiles.ColorDepth = ColorDepth.Depth32Bit; - tiles.Images.AddRange(AnimationUtil.tileImages); + tiles.Images.AddRange(AnimationResources.tileImages); treeViewBlocks.ImageList = tiles; treeViewItems.ImageList = tiles; @@ -31,9 +31,9 @@ namespace PckStudio.Forms.Additional_Popups.Animation { int i = 0; - if (AnimationUtil.tileData["blocks"] != null) + if (AnimationResources.tileData["blocks"] != null) { - foreach (JObject content in AnimationUtil.tileData["blocks"].Children()) + foreach (JObject content in AnimationResources.tileData["blocks"].Children()) { foreach (JProperty prop in content.Properties()) { @@ -52,9 +52,9 @@ namespace PckStudio.Forms.Additional_Popups.Animation } } } - if (AnimationUtil.tileData["items"] != null) + if (AnimationResources.tileData["items"] != null) { - foreach (JObject content in AnimationUtil.tileData["items"].Children()) + foreach (JObject content in AnimationResources.tileData["items"].Children()) { foreach (JProperty prop in content.Properties()) { diff --git a/PCK-Studio/Forms/Editor/AnimationEditor.cs b/PCK-Studio/Forms/Editor/AnimationEditor.cs index a10c232e..715e48f0 100644 --- a/PCK-Studio/Forms/Editor/AnimationEditor.cs +++ b/PCK-Studio/Forms/Editor/AnimationEditor.cs @@ -23,7 +23,7 @@ namespace PckStudio.Forms.Editor AnimationPlayer player; bool isItem = false; - string animationSection => AnimationUtil.GetAnimationSection(isItem); + string animationSection => AnimationResources.GetAnimationSection(isItem); public string TileName = string.Empty; @@ -58,7 +58,7 @@ namespace PckStudio.Forms.Editor : new Animation(frameTextures); player = new AnimationPlayer(pictureBoxWithInterpolationMode1); - foreach (JObject content in AnimationUtil.tileData[animationSection].Children()) + foreach (JObject content in AnimationResources.tileData[animationSection].Children()) { var prop = content.Properties().FirstOrDefault(prop => prop.Name == TileName); if (prop is JProperty) @@ -369,7 +369,7 @@ namespace PckStudio.Forms.Editor exportJavaAnimationToolStripMenuItem.Enabled = InterpolationCheckbox.Visible = !IsEditingSpecial; - foreach (JObject content in AnimationUtil.tileData[animationSection].Children()) + foreach (JObject content in AnimationResources.tileData[animationSection].Children()) { var first = content.Properties().FirstOrDefault(p => p.Name == TileName); if (first is JProperty p) tileLabel.Text = (string)p.Value; diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index 102f5800..c6559842 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -28,13 +28,13 @@ namespace PckStudio.Forms.Editor { TreeNode EntryNode = new TreeNode(entry.name); - foreach (JObject content in Utilities.BehaviourUtil.entityData["entities"].Children()) + foreach (JObject content in Utilities.BehaviourResources.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.ImageIndex = Utilities.BehaviourResources.entityData["entities"].Children().ToList().IndexOf(content); EntryNode.SelectedImageIndex = EntryNode.ImageIndex; break; } @@ -68,7 +68,7 @@ namespace PckStudio.Forms.Editor } treeView1.ImageList = new ImageList(); - treeView1.ImageList.Images.AddRange(Utilities.BehaviourUtil.entityImages); + treeView1.ImageList.Images.AddRange(Utilities.BehaviourResources.entityImages); treeView1.ImageList.ColorDepth = ColorDepth.Depth32Bit; SetUpTree(); } @@ -149,7 +149,7 @@ namespace PckStudio.Forms.Editor if (treeView1.SelectedNode == null) return; if (!(treeView1.SelectedNode.Tag is BehaviourFile.RiderPositionOverride entry)) return; - var diag = new Additional_Popups.EntityForms.AddEntry(Utilities.BehaviourUtil.entityData, Utilities.BehaviourUtil.entityImages); + var diag = new Additional_Popups.EntityForms.AddEntry(Utilities.BehaviourResources.entityData, Utilities.BehaviourResources.entityImages); diag.acceptBtn.Text = "Save"; if (diag.ShowDialog() == DialogResult.OK) @@ -164,13 +164,13 @@ namespace PckStudio.Forms.Editor entry.name = diag.SelectedEntity; treeView1.SelectedNode.Tag = entry; - foreach (JObject content in Utilities.BehaviourUtil.entityData["entities"].Children()) + foreach (JObject content in Utilities.BehaviourResources.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.ImageIndex = Utilities.BehaviourResources.entityData["entities"].Children().ToList().IndexOf(content); treeView1.SelectedNode.SelectedImageIndex = treeView1.SelectedNode.ImageIndex; break; } @@ -203,7 +203,7 @@ namespace PckStudio.Forms.Editor private void addNewEntryToolStripMenuItem_Click(object sender, EventArgs e) { - var diag = new AddEntry(Utilities.BehaviourUtil.entityData, Utilities.BehaviourUtil.entityImages); + var diag = new AddEntry(Utilities.BehaviourResources.entityData, Utilities.BehaviourResources.entityImages); if(diag.ShowDialog() == DialogResult.OK) { @@ -217,13 +217,13 @@ namespace PckStudio.Forms.Editor TreeNode NewOverrideNode = new TreeNode(NewOverride.name); NewOverrideNode.Tag = NewOverride; - foreach (JObject content in Utilities.BehaviourUtil.entityData["entities"].Children()) + foreach (JObject content in Utilities.BehaviourResources.entityData["entities"].Children()) { var prop = content.Properties().FirstOrDefault(prop => prop.Name == NewOverride.name); if (prop is JProperty) { NewOverrideNode.Text = (string)prop.Value; - NewOverrideNode.ImageIndex = Utilities.BehaviourUtil.entityData["entities"].Children().ToList().IndexOf(content); + NewOverrideNode.ImageIndex = Utilities.BehaviourResources.entityData["entities"].Children().ToList().IndexOf(content); NewOverrideNode.SelectedImageIndex = NewOverrideNode.ImageIndex; break; } diff --git a/PCK-Studio/Forms/Editor/MaterialsEditor.cs b/PCK-Studio/Forms/Editor/MaterialsEditor.cs index 1a3ea40c..83ceb106 100644 --- a/PCK-Studio/Forms/Editor/MaterialsEditor.cs +++ b/PCK-Studio/Forms/Editor/MaterialsEditor.cs @@ -27,13 +27,13 @@ namespace PckStudio.Forms.Editor { TreeNode EntryNode = new TreeNode(entry.Name); - foreach (JObject content in Utilities.MaterialUtil.entityData["entities"].Children()) + foreach (JObject content in Utilities.MaterialResources.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.MaterialUtil.entityData["entities"].Children().ToList().IndexOf(content); + EntryNode.ImageIndex = Utilities.MaterialResources.entityData["entities"].Children().ToList().IndexOf(content); EntryNode.SelectedImageIndex = EntryNode.ImageIndex; break; } @@ -58,7 +58,7 @@ namespace PckStudio.Forms.Editor } treeView1.ImageList = new ImageList(); - Utilities.MaterialUtil.entityImages.ToList().ForEach(img => treeView1.ImageList.Images.Add(img)); + Utilities.MaterialResources.entityImages.ToList().ForEach(img => treeView1.ImageList.Images.Add(img)); treeView1.ImageList.ColorDepth = ColorDepth.Depth32Bit; SetUpTree(); } @@ -132,7 +132,7 @@ namespace PckStudio.Forms.Editor private void addToolStripMenuItem_Click(object sender, EventArgs e) { - var diag = new Additional_Popups.EntityForms.AddEntry(Utilities.MaterialUtil.entityData, Utilities.MaterialUtil.entityImages); + var diag = new Additional_Popups.EntityForms.AddEntry(Utilities.MaterialResources.entityData, Utilities.MaterialResources.entityImages); if (diag.ShowDialog() == DialogResult.OK) { @@ -146,13 +146,13 @@ namespace PckStudio.Forms.Editor TreeNode NewEntryNode = new TreeNode(NewEntry.Name); NewEntryNode.Tag = NewEntry; - foreach (JObject content in Utilities.MaterialUtil.entityData["entities"].Children()) + foreach (JObject content in Utilities.MaterialResources.entityData["entities"].Children()) { var prop = content.Properties().FirstOrDefault(prop => prop.Name == NewEntry.Name); if (prop is JProperty) { NewEntryNode.Text = (string)prop.Value; - NewEntryNode.ImageIndex = Utilities.MaterialUtil.entityData["entities"].Children().ToList().IndexOf(content); + NewEntryNode.ImageIndex = Utilities.MaterialResources.entityData["entities"].Children().ToList().IndexOf(content); NewEntryNode.SelectedImageIndex = NewEntryNode.ImageIndex; break; } diff --git a/PCK-Studio/Forms/Utilities/AnimationUtil.cs b/PCK-Studio/Forms/Utilities/AnimationResources.cs similarity index 52% rename from PCK-Studio/Forms/Utilities/AnimationUtil.cs rename to PCK-Studio/Forms/Utilities/AnimationResources.cs index c728be49..4d8c1f4a 100644 --- a/PCK-Studio/Forms/Utilities/AnimationUtil.cs +++ b/PCK-Studio/Forms/Utilities/AnimationResources.cs @@ -10,25 +10,12 @@ using OMI.Formats.Pck; namespace PckStudio.Forms.Utilities { - public static class AnimationUtil + public static class AnimationResources { public static string GetAnimationSection(bool isItem) => isItem ? "items" : "blocks"; public static readonly JObject tileData = JObject.Parse(Resources.tileData); private static Image[] _tileImages; - public static Image[] tileImages => _tileImages ??= Resources.terrain_sheet.CreateImageList(16).Concat(Resources.items_sheet.CreateImageList(16)).ToArray(); - - public static PckFile.FileData CreateNewAnimationFile(Image source, string tileName, bool isItem) - { - PckFile.FileData file = new PckFile.FileData($"res/textures/{GetAnimationSection(isItem)}/{tileName}.png", PckFile.FileData.FileType.TextureFile); - file.Properties.Add(("ANIM", string.Empty)); - using (var stream = new MemoryStream()) - { - source.Save(stream, ImageFormat.Png); - file.SetData(stream.ToArray()); - } - return file; - } } } diff --git a/PCK-Studio/Forms/Utilities/BehaviourUtil.cs b/PCK-Studio/Forms/Utilities/BehaviourResources.cs similarity index 53% rename from PCK-Studio/Forms/Utilities/BehaviourUtil.cs rename to PCK-Studio/Forms/Utilities/BehaviourResources.cs index cce040f8..763c4e71 100644 --- a/PCK-Studio/Forms/Utilities/BehaviourUtil.cs +++ b/PCK-Studio/Forms/Utilities/BehaviourResources.cs @@ -8,28 +8,23 @@ using PckStudio.Classes.Extentions; using OMI.Formats.Behaviour; using OMI.Workers.Behaviour; using OMI.Formats.Pck; +using System; namespace PckStudio.Forms.Utilities { - public static class BehaviourUtil + public static class BehaviourResources { public static readonly JObject entityData = JObject.Parse(Resources.entityBehaviourData); private static Image[] _entityImages; public static Image[] entityImages => _entityImages ??= Resources.entities_sheet.CreateImageList(32).ToArray(); - public static PckFile.FileData CreateNewBehaviourFile() + internal static byte[] BehaviourFileInitializer() { - PckFile.FileData file = new PckFile.FileData($"behaviours.bin", PckFile.FileData.FileType.BehavioursFile); - - using (var stream = new MemoryStream()) - { - var writer = new BehavioursWriter(new BehaviourFile()); - writer.WriteToStream(stream); - file.SetData(stream.ToArray()); - } - - return file; + using var stream = new MemoryStream(); + var writer = new BehavioursWriter(new BehaviourFile()); + writer.WriteToStream(stream); + return stream.ToArray(); } } } diff --git a/PCK-Studio/Forms/Utilities/MaterialResources.cs b/PCK-Studio/Forms/Utilities/MaterialResources.cs new file mode 100644 index 00000000..7d27eda1 --- /dev/null +++ b/PCK-Studio/Forms/Utilities/MaterialResources.cs @@ -0,0 +1,33 @@ +using Newtonsoft.Json.Linq; +using System.Drawing; +using System.Linq; +using System.IO; + +using PckStudio.Properties; +using PckStudio.Classes.Extentions; +using OMI.Formats.Pck; +using OMI.Formats.Material; +using OMI.Workers.Material; +using System; + +namespace PckStudio.Forms.Utilities +{ + public static class MaterialResources + { + public static readonly JObject entityData = JObject.Parse(Resources.entityMaterialData); + private static Image[] _entityImages; + public static Image[] entityImages => _entityImages ??= Resources.entities_sheet.CreateImageList(32).ToArray(); + + public static byte[] MaterialsFileInitializer() + { + using var stream = new MemoryStream(); + var matFile = new MaterialContainer + { + new MaterialContainer.Material("bat", "entity_alphatest") + }; + var writer = new MaterialFileWriter(matFile); + writer.WriteToStream(stream); + return stream.ToArray(); + } + } +} diff --git a/PCK-Studio/Forms/Utilities/MaterialUtil.cs b/PCK-Studio/Forms/Utilities/MaterialUtil.cs deleted file mode 100644 index caa02fd1..00000000 --- a/PCK-Studio/Forms/Utilities/MaterialUtil.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Newtonsoft.Json.Linq; -using System.Drawing; -using System.Linq; -using System.IO; - -using PckStudio.Properties; -using PckStudio.Classes.Extentions; -using OMI.Formats.Pck; -using OMI.Formats.Material; -using OMI.Workers.Material; - -namespace PckStudio.Forms.Utilities -{ - public static class MaterialUtil - { - public static readonly JObject entityData = JObject.Parse(Resources.entityMaterialData); - private static Image[] _entityImages; - public static Image[] entityImages => _entityImages ??= Resources.entities_sheet.CreateImageList(32).ToArray(); - - public static PckFile.FileData CreateNewMaterialsFile() - { - PckFile.FileData file = new PckFile.FileData($"entityMaterials.bin", PckFile.FileData.FileType.MaterialFile); - - using (var stream = new MemoryStream()) - { - var matFile = new MaterialContainer - { - new MaterialContainer.Material("bat", "entity_alphatest") - }; - var writer = new MaterialFileWriter(matFile); - writer.WriteToStream(stream); - file.SetData(stream.ToArray()); - } - - return file; - } - } -} diff --git a/PCK-Studio/Forms/Utilities/ModelsUtil.cs b/PCK-Studio/Forms/Utilities/ModelsResources.cs similarity index 70% rename from PCK-Studio/Forms/Utilities/ModelsUtil.cs rename to PCK-Studio/Forms/Utilities/ModelsResources.cs index ee9c6449..43ed0e41 100644 --- a/PCK-Studio/Forms/Utilities/ModelsUtil.cs +++ b/PCK-Studio/Forms/Utilities/ModelsResources.cs @@ -11,24 +11,27 @@ using OMI.Workers.Model; namespace PckStudio.Forms.Utilities { - public static class ModelsUtil + public static class ModelsResources { public static readonly JObject entityData = JObject.Parse(Resources.entityModelData); private static Image[] _entityImages; public static Image[] entityImages => _entityImages ??= Resources.entities_sheet.CreateImageList(32).ToArray(); - public static PckFile.FileData CreateNewModelsFile() + public static void ModelsFileInitializer(PckFile.FileData file) { - PckFile.FileData file = new PckFile.FileData($"models.bin", PckFile.FileData.FileType.ModelsFile); - using (var stream = new MemoryStream()) { - var writer = new ModelFileWriter(new ModelContainer()); + var writer = new ModelFileWriter(new ModelContainer()); writer.WriteToStream(stream); file.SetData(stream.ToArray()); } - + } + + public static PckFile.FileData CreateNewModelsFile() + { + PckFile.FileData file = new PckFile.FileData("models.bin", PckFile.FileData.FileType.ModelsFile); + ModelsFileInitializer(file); return file; } } diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index cdf3a7bb..61e09012 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -841,7 +841,7 @@ namespace PckStudio audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.Overworld); audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.Nether); audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.End); - PckFile.FileData pckFileData = currentPCK.CreateNew("audio.pck", PckFile.FileData.FileType.AudioFile); + PckFile.FileData pckFileData = currentPCK.CreateNewFile("audio.pck", PckFile.FileData.FileType.AudioFile); using (var stream = new MemoryStream()) { PCKAudioFileWriter.Write(stream, audioPck, isLittle); @@ -869,28 +869,37 @@ namespace PckStudio private void createAnimatedTextureToolStripMenuItem_Click(object sender, EventArgs e) { - using (var ofd = new OpenFileDialog()) + using var ofd = new OpenFileDialog() { - ofd.Filter = "PNG Files | *.png"; - ofd.Title = "Select a PNG File"; - if (ofd.ShowDialog() == DialogResult.OK) + Filter = "PNG Files | *.png", + Title = "Select a PNG File", + }; + if (ofd.ShowDialog() != DialogResult.OK) + return; + + using ChangeTile diag = new ChangeTile(); + if (diag.ShowDialog(this) != DialogResult.OK) + return; + + using Image img = new Bitmap(ofd.FileName); + var file = currentPCK.CreateNewFile( + $"res/textures/{AnimationResources.GetAnimationSection(diag.IsItem)}/{diag.SelectedTile}.png", + PckFile.FileData.FileType.TextureFile, + () => { - using ChangeTile diag = new ChangeTile(); - if (diag.ShowDialog(this) == DialogResult.OK) - { - using Image img = new Bitmap(ofd.FileName); - var file = AnimationUtil.CreateNewAnimationFile(img, diag.SelectedTile, diag.IsItem); - using AnimationEditor animationEditor = new AnimationEditor(file); - if (animationEditor.ShowDialog() == DialogResult.OK) - { - file.Filename = animationEditor.TileName; - currentPCK.Files.Add(file); - ReloadMetaTreeView(); - BuildMainTreeView(); - wasModified = true; - } - } - } + using var stream = new MemoryStream(); + img.Save(stream, ImageFormat.Png); + return stream.ToArray(); + }); + file.Properties.Add(("ANIM", string.Empty)); + + using AnimationEditor animationEditor = new AnimationEditor(file); + if (animationEditor.ShowDialog() == DialogResult.OK) + { + file.Filename = animationEditor.TileName; + ReloadMetaTreeView(); + BuildMainTreeView(); + wasModified = true; } } @@ -955,7 +964,7 @@ namespace PckStudio { if (node.Tag is PckFile.FileData node_file) { - PckFile.FileData new_file = newPCKFile.CreateNew(node_file.Filename, node_file.Filetype); + PckFile.FileData new_file = newPCKFile.CreateNewFile(node_file.Filename, node_file.Filetype); foreach (var prop in node_file.Properties) new_file.Properties.Add(prop); new_file.SetData(node_file.Data); } @@ -1207,23 +1216,25 @@ namespace PckStudio private PckFile InitializePack(int packId, int packVersion, string packName, bool createSkinsPCK) { var newPck = new PckFile(3); - var zeroFile = newPck.CreateNew("0", PckFile.FileData.FileType.InfoFile); + + var zeroFile = newPck.CreateNewFile("0", PckFile.FileData.FileType.InfoFile); zeroFile.Properties.Add(("PACKID", packId.ToString())); zeroFile.Properties.Add(("PACKVERSION", packVersion.ToString())); - var loc = newPck.CreateNew("localisation.loc", PckFile.FileData.FileType.LocalisationFile); - var locFile = new LOCFile(); - locFile.InitializeDefault(packName); - using (var stream = new MemoryStream()) + + var loc = newPck.CreateNewFile("localisation.loc", PckFile.FileData.FileType.LocalisationFile, () => { + var locFile = new LOCFile(); + locFile.InitializeDefault(packName); + using var stream = new MemoryStream(); LOCFileWriter.Write(stream, locFile); - loc.SetData(stream.ToArray()); - } + return stream.ToArray(); + }); if (createSkinsPCK) { - PckFile.FileData skinsPCKFile = newPck.CreateNew("Skins.pck", PckFile.FileData.FileType.SkinDataFile); - using (var stream = new MemoryStream()) - { + PckFile.FileData skinsPCKFile = newPck.CreateNewFile("Skins.pck", PckFile.FileData.FileType.SkinDataFile, () => + { + using var stream = new MemoryStream(); var writer = new PckFileWriter(new PckFile(3) { HasVerionString = true @@ -1232,8 +1243,8 @@ namespace PckStudio ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian); writer.WriteToStream(stream); - skinsPCKFile.SetData(stream.ToArray()); - } + return stream.ToArray(); + }); } return newPck; } @@ -1241,7 +1252,17 @@ namespace PckStudio private PckFile InitializeTexturePack(int packId, int packVersion, string packName, string res, bool createSkinsPCK = false) { var newPck = InitializePack(packId, packVersion, packName, createSkinsPCK); - var texturepackInfo = newPck.CreateNew($"{res}/{res}Info.pck", PckFile.FileData.FileType.TexturePackInfoFile); + var texturepackInfo = newPck.CreateNewFile($"{res}/{res}Info.pck", PckFile.FileData.FileType.TexturePackInfoFile, + () => + { + using var ms = new MemoryStream(); + var writer = new PckFileWriter(new PckFile(3), + LittleEndianCheckBox.Checked + ? OMI.Endianness.LittleEndian + : OMI.Endianness.BigEndian); + writer.WriteToStream(ms); + return ms.ToArray(); + }); texturepackInfo.Properties.Add(("PACKID", "0")); texturepackInfo.Properties.Add(("DATAPATH", $"{res}Data.pck")); @@ -1249,34 +1270,25 @@ namespace PckStudio using (var ms = new MemoryStream()) { - var icon = infoPCK.CreateNew("icon.png", PckFile.FileData.FileType.TextureFile); + var icon = infoPCK.CreateNewFile("icon.png", PckFile.FileData.FileType.TextureFile); Resources.TexturePackIcon.Save(ms, ImageFormat.Png); icon.SetData(ms.ToArray()); } using (var ms = new MemoryStream()) { - var comparison = infoPCK.CreateNew("comparison.png", PckFile.FileData.FileType.TextureFile); + var comparison = infoPCK.CreateNewFile("comparison.png", PckFile.FileData.FileType.TextureFile); Resources.Comparison.Save(ms, ImageFormat.Png); comparison.SetData(ms.ToArray()); } - using (var ms = new MemoryStream()) - { - var writer = new PckFileWriter(new PckFile(3), - LittleEndianCheckBox.Checked - ? OMI.Endianness.LittleEndian - : OMI.Endianness.BigEndian); - writer.WriteToStream(ms); - texturepackInfo.SetData(ms.ToArray()); - } return newPck; } private PckFile InitializeMashUpPack(int packId, int packVersion, string packName, string res) { var newPck = InitializeTexturePack(packId, packVersion, packName, res, true); - var gameRuleFile = newPck.CreateNew("GameRules.grf", PckFile.FileData.FileType.GameRulesFile); + var gameRuleFile = newPck.CreateNewFile("GameRules.grf", PckFile.FileData.FileType.GameRulesFile); var grfFile = new GameRuleFile(); grfFile.AddRule("MapOptions", new KeyValuePair("seed", "0"), @@ -1604,7 +1616,7 @@ namespace PckStudio { string skinNameImport = Path.GetFileName(contents.FileName); byte[] data = File.ReadAllBytes(contents.FileName); - PckFile.FileData mfNew = currentPCK.CreateNew(skinNameImport, PckFile.FileData.FileType.SkinFile); + PckFile.FileData mfNew = currentPCK.CreateNewFile(skinNameImport, PckFile.FileData.FileType.SkinFile); mfNew.SetData(data); string propertyFile = Path.GetFileNameWithoutExtension(contents.FileName) + ".txt"; if (File.Exists(propertyFile)) @@ -1957,7 +1969,7 @@ namespace PckStudio renamePrompt.TextLabel.Text = "Path"; if (renamePrompt.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(renamePrompt.NewText)) { - var file = currentPCK.CreateNew(renamePrompt.NewText, PckFile.FileData.FileType.TextureFile); + var file = currentPCK.CreateNewFile(renamePrompt.NewText, PckFile.FileData.FileType.TextureFile); file.SetData(File.ReadAllBytes(fileDialog.FileName)); BuildMainTreeView(); wasModified = true; @@ -2030,14 +2042,13 @@ namespace PckStudio private void colourscolToolStripMenuItem_Click(object sender, EventArgs e) { - PckFile.FileData NewColorFile; - if (currentPCK.TryGetFile("colours.col", PckFile.FileData.FileType.ColourTableFile, out NewColorFile)) + if (currentPCK.TryGetFile("colours.col", PckFile.FileData.FileType.ColourTableFile, out _)) { MessageBox.Show("A color table file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - NewColorFile = currentPCK.CreateNew("colours.col", PckFile.FileData.FileType.ColourTableFile); - NewColorFile.SetData(Resources.tu69colours); + var newColorFile = currentPCK.CreateNewFile("colours.col", PckFile.FileData.FileType.ColourTableFile); + newColorFile.SetData(Resources.tu69colours); BuildMainTreeView(); } @@ -2143,19 +2154,14 @@ namespace PckStudio return; } - PckFile.FileData newSkinsPCKFile = currentPCK.CreateNew("Skins.pck", PckFile.FileData.FileType.SkinDataFile); - using (var stream = new MemoryStream()) + currentPCK.CreateNewFile("Skins.pck", PckFile.FileData.FileType.SkinDataFile, () => { - var writer = new PckFileWriter(new PckFile(3) - { - HasVerionString = true - }, - LittleEndianCheckBox.Checked - ? OMI.Endianness.LittleEndian - : OMI.Endianness.BigEndian); - writer.WriteToStream(stream); - newSkinsPCKFile.SetData(stream.ToArray()); - } + using var stream = new MemoryStream(); + var writer = new PckFileWriter(new PckFile(3) { HasVerionString = true }, + LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian); + writer.WriteToStream(stream); + return stream.ToArray(); + }); BuildMainTreeView(); @@ -2204,7 +2210,7 @@ namespace PckStudio using AddFilePrompt diag = new AddFilePrompt("res/" + Path.GetFileName(ofd.FileName)); if (diag.ShowDialog(this) == DialogResult.OK) { - PckFile.FileData file = currentPCK.CreateNew(diag.filepath, (PckFile.FileData.FileType)diag.filetype); + PckFile.FileData file = currentPCK.CreateNewFile(diag.filepath, (PckFile.FileData.FileType)diag.filetype); file.SetData(File.ReadAllBytes(ofd.FileName)); if (IsSubPCKNode(treeViewMain.SelectedNode.FullPath)) RebuildSubPCK(treeViewMain.SelectedNode); @@ -2219,27 +2225,24 @@ namespace PckStudio private void behavioursbinToolStripMenuItem_Click(object sender, EventArgs e) { - PckFile.FileData NewBehaviourFile; - if (currentPCK.TryGetFile("behaviours.bin", PckFile.FileData.FileType.BehavioursFile, out NewBehaviourFile)) + if (currentPCK.TryGetFile("behaviours.bin", PckFile.FileData.FileType.BehavioursFile, out _)) { 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); + + currentPCK.CreateNewFile("behaviours.bin", PckFile.FileData.FileType.BehavioursFile, BehaviourResources.BehaviourFileInitializer); BuildMainTreeView(); } private void entityMaterialsbinToolStripMenuItem_Click(object sender, EventArgs e) { - PckFile.FileData NewMaterialsFile; - if (currentPCK.TryGetFile("entityMaterials.bin", PckFile.FileData.FileType.MaterialFile, out NewMaterialsFile)) + if (currentPCK.TryGetFile("entityMaterials.bin", PckFile.FileData.FileType.MaterialFile, out _)) { MessageBox.Show("A behaviours file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - NewMaterialsFile = MaterialUtil.CreateNewMaterialsFile(); - currentPCK.Files.Add(NewMaterialsFile); + currentPCK.CreateNewFile("entityMaterials.bin", PckFile.FileData.FileType.MaterialFile, MaterialResources.MaterialsFileInitializer); BuildMainTreeView(); } } diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index a0a6cf2c..75617c94 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -346,10 +346,10 @@ pleaseWait.cs - - - - + + + + Form diff --git a/Vendor/OMI-Lib b/Vendor/OMI-Lib index e859271a..76ba41c7 160000 --- a/Vendor/OMI-Lib +++ b/Vendor/OMI-Lib @@ -1 +1 @@ -Subproject commit e859271a0d915343933234560014503b92991b3c +Subproject commit 76ba41c740d2814b03070fd1c78f39d39ee4e5d2