From aba4d6ab3468bb55be52bfef25f33591f8e1c46a Mon Sep 17 00:00:00 2001
From: miku-666 <74728189+NessieHax@users.noreply.github.com>
Date: Sat, 4 Mar 2023 12:41:53 +0100
Subject: [PATCH] PCKFile - Add 'CreateNew' method
---
PCK-Studio/Classes/FileTypes/PCKFile.cs | 13 +++++++
PCK-Studio/MainForm.Designer.cs | 2 +-
PCK-Studio/MainForm.cs | 52 +++++++++----------------
3 files changed, 33 insertions(+), 34 deletions(-)
diff --git a/PCK-Studio/Classes/FileTypes/PCKFile.cs b/PCK-Studio/Classes/FileTypes/PCKFile.cs
index e7eb8042..1b03dadc 100644
--- a/PCK-Studio/Classes/FileTypes/PCKFile.cs
+++ b/PCK-Studio/Classes/FileTypes/PCKFile.cs
@@ -120,6 +120,19 @@ namespace PckStudio.Classes.FileTypes
return LUT;
}
+ ///
+ /// Creates and adds new object.
+ ///
+ /// Filename
+ /// Filetype
+ /// Added object
+ public FileData CreateNew(string name, FileData.FileType type)
+ {
+ var file = new FileData(name, type);
+ Files.Add(file);
+ return file;
+ }
+
///
/// Checks wether a file with and exists
///
diff --git a/PCK-Studio/MainForm.Designer.cs b/PCK-Studio/MainForm.Designer.cs
index 060441a4..24f869e9 100644
--- a/PCK-Studio/MainForm.Designer.cs
+++ b/PCK-Studio/MainForm.Designer.cs
@@ -236,7 +236,7 @@
//
resources.ApplyResources(this.importSkinToolStripMenuItem, "importSkinToolStripMenuItem");
this.importSkinToolStripMenuItem.Name = "importSkinToolStripMenuItem";
- this.importSkinToolStripMenuItem.Click += new System.EventHandler(this.importSkin);
+ this.importSkinToolStripMenuItem.Click += new System.EventHandler(this.importSkinToolStripMenuItem_Click);
//
// importExtractedSkinsFolderToolStripMenuItem
//
diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs
index b3f140cf..8c87722f 100644
--- a/PCK-Studio/MainForm.cs
+++ b/PCK-Studio/MainForm.cs
@@ -678,7 +678,7 @@ namespace PckStudio
//if (folderDialog.ShowDialog() == DialogResult.OK)
//{
// string[] FilePaths = Directory.GetFiles(folderDialog.SelectedPath, "*.png");
- // Array.ForEach(FilePaths, filePath => currentPCK.Files.Add(new PCKFile.FileData(filePath, 2)));
+ // Array.ForEach(FilePaths, filePath => currentPCK.Createnew(filePath, 2));
//}
// should never happen unless its a folder
MessageBox.Show("Can't replace a folder.");
@@ -814,14 +814,14 @@ namespace PckStudio
}
}
- private static PCKFile.FileData CreateNewAudioFile(bool isLittle)
+ private PCKFile.FileData CreateNewAudioFile(bool isLittle)
{
// create actual valid pck file structure
PCKAudioFile audioPck = new PCKAudioFile();
audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.Overworld);
audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.Nether);
audioPck.AddCategory(PCKAudioFile.AudioCategory.EAudioType.End);
- PCKFile.FileData pckFileData = new PCKFile.FileData("audio.pck", PCKFile.FileData.FileType.AudioFile);
+ PCKFile.FileData pckFileData = currentPCK.CreateNew("audio.pck", PCKFile.FileData.FileType.AudioFile);
using (var stream = new MemoryStream())
{
PCKAudioFileWriter.Write(stream, audioPck, isLittle);
@@ -840,7 +840,6 @@ namespace PckStudio
if (!TryGetLocFile(out LOCFile locFile))
throw new Exception("No .loc file found.");
var file = CreateNewAudioFile(LittleEndianCheckBox.Checked);
- currentPCK.Files.Add(file);
AudioEditor diag = new AudioEditor(file, locFile, LittleEndianCheckBox.Checked);
if (diag.ShowDialog(this) == DialogResult.OK)
TrySetLocFile(locFile);
@@ -935,10 +934,9 @@ namespace PckStudio
{
if (node.Tag is PCKFile.FileData node_file)
{
- PCKFile.FileData new_file = new PCKFile.FileData(node_file.Filename, node_file.Filetype);
+ PCKFile.FileData new_file = newPCKFile.CreateNew(node_file.Filename, node_file.Filetype);
foreach (var prop in node_file.Properties) new_file.Properties.Add(prop);
new_file.SetData(node_file.Data);
- newPCKFile.Files.Add(new_file);
}
}
@@ -1195,10 +1193,10 @@ namespace PckStudio
private PCKFile InitializePack(int packId, int packVersion, string packName, bool createSkinsPCK)
{
var newPck = new PCKFile(3);
- var zeroFile = new PCKFile.FileData("0", PCKFile.FileData.FileType.InfoFile);
+ var zeroFile = newPck.CreateNew("0", PCKFile.FileData.FileType.InfoFile);
zeroFile.Properties.Add(("PACKID", packId.ToString()));
zeroFile.Properties.Add(("PACKVERSION", packVersion.ToString()));
- var loc = new PCKFile.FileData("localisation.loc", PCKFile.FileData.FileType.LocalisationFile);
+ var loc = newPck.CreateNew("localisation.loc", PCKFile.FileData.FileType.LocalisationFile);
var locFile = new LOCFile();
locFile.InitializeDefault(packName);
using (var stream = new MemoryStream())
@@ -1206,18 +1204,15 @@ namespace PckStudio
LOCFileWriter.Write(stream, locFile);
loc.SetData(stream.ToArray());
}
- newPck.Files.Add(zeroFile);
- newPck.Files.Add(loc);
if (createSkinsPCK)
{
- PCKFile.FileData skinsPCKFile = new PCKFile.FileData("Skins.pck", PCKFile.FileData.FileType.SkinDataFile);
+ PCKFile.FileData skinsPCKFile = newPck.CreateNew("Skins.pck", PCKFile.FileData.FileType.SkinDataFile);
using (var stream = new MemoryStream())
{
PCKFileWriter.Write(stream, new PCKFile(3), LittleEndianCheckBox.Checked, true);
skinsPCKFile.SetData(stream.ToArray());
}
- newPck.Files.Add(skinsPCKFile);
}
return newPck;
}
@@ -1225,7 +1220,7 @@ 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 = new PCKFile.FileData($"{res}/{res}Info.pck", PCKFile.FileData.FileType.TexturePackInfoFile);
+ var texturepackInfo = newPck.CreateNew($"{res}/{res}Info.pck", PCKFile.FileData.FileType.TexturePackInfoFile);
texturepackInfo.Properties.Add(("PACKID", "0"));
texturepackInfo.Properties.Add(("DATAPATH", $"{res}Data.pck"));
@@ -1233,18 +1228,16 @@ namespace PckStudio
using (var ms = new MemoryStream())
{
- var icon = new PCKFile.FileData("icon.png", PCKFile.FileData.FileType.TextureFile);
+ var icon = infoPCK.CreateNew("icon.png", PCKFile.FileData.FileType.TextureFile);
Resources.TexturePackIcon.Save(ms, ImageFormat.Png);
icon.SetData(ms.ToArray());
- infoPCK.Files.Add(icon);
}
using (var ms = new MemoryStream())
{
- var comparison = new PCKFile.FileData("comparison.png", PCKFile.FileData.FileType.TextureFile);
- Resources.Comparison.Save(ms, ImageFormat.Png);
- comparison.SetData(ms.ToArray());
- infoPCK.Files.Add(comparison);
+ var comparison = infoPCK.CreateNew("comparison.png", PCKFile.FileData.FileType.TextureFile);
+ Resources.Comparison.Save(ms, ImageFormat.Png);
+ comparison.SetData(ms.ToArray());
}
using (var ms = new MemoryStream())
@@ -1252,15 +1245,13 @@ namespace PckStudio
PCKFileWriter.Write(ms, infoPCK, LittleEndianCheckBox.Checked);
texturepackInfo.SetData(ms.ToArray());
}
-
- newPck.Files.Add(texturepackInfo);
return newPck;
}
private PCKFile InitializeMashUpPack(int packId, int packVersion, string packName, string res)
{
var newPck = InitializeTexturePack(packId, packVersion, packName, res, true);
- var gameRuleFile = new PCKFile.FileData("GameRules.grf", PCKFile.FileData.FileType.GameRulesFile);
+ var gameRuleFile = newPck.CreateNew("GameRules.grf", PCKFile.FileData.FileType.GameRulesFile);
var grfFile = new GRFFile();
grfFile.AddRule("MapOptions",
new KeyValuePair("seed", "0"),
@@ -1281,7 +1272,6 @@ namespace PckStudio
GRFFileWriter.Write(stream, grfFile, GRFFile.eCompressionType.ZlibRleCrc);
gameRuleFile.SetData(stream.ToArray());
}
- newPck.Files.Add(gameRuleFile);
return newPck;
}
@@ -1575,7 +1565,7 @@ namespace PckStudio
}
- private void importSkin(object sender, EventArgs e)
+ private void importSkinToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog contents = new OpenFileDialog())
{
@@ -1586,7 +1576,7 @@ namespace PckStudio
{
string skinNameImport = Path.GetFileName(contents.FileName);
byte[] data = File.ReadAllBytes(contents.FileName);
- PCKFile.FileData mfNew = new PCKFile.FileData(skinNameImport, 0);
+ PCKFile.FileData mfNew = currentPCK.CreateNew(skinNameImport, PCKFile.FileData.FileType.SkinFile);
mfNew.SetData(data);
string propertyFile = Path.GetFileNameWithoutExtension(contents.FileName) + ".txt";
if (File.Exists(propertyFile))
@@ -1980,9 +1970,8 @@ namespace PckStudio
renamePrompt.TextLabel.Text = "Path";
if (renamePrompt.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(renamePrompt.NewText))
{
- var file = new PCKFile.FileData(renamePrompt.NewText, PCKFile.FileData.FileType.TextureFile);
+ var file = currentPCK.CreateNew(renamePrompt.NewText, PCKFile.FileData.FileType.TextureFile);
file.SetData(File.ReadAllBytes(fileDialog.FileName));
- currentPCK.Files.Add(file);
BuildMainTreeView();
wasModified = true;
}
@@ -2060,9 +2049,8 @@ namespace PckStudio
MessageBox.Show("A color table file already exists in this PCK and a new one cannot be created.", "Operation aborted");
return;
}
- NewColorFile = new PCKFile.FileData("colours.col", PCKFile.FileData.FileType.ColourTableFile);
+ NewColorFile = currentPCK.CreateNew("colours.col", PCKFile.FileData.FileType.ColourTableFile);
NewColorFile.SetData(Resources.tu69colours);
- currentPCK.Files.Add(NewColorFile);
BuildMainTreeView();
}
@@ -2168,15 +2156,13 @@ namespace PckStudio
return;
}
- PCKFile.FileData newSkinsPCKFile = new PCKFile.FileData("Skins.pck", PCKFile.FileData.FileType.SkinDataFile);
+ PCKFile.FileData newSkinsPCKFile = currentPCK.CreateNew("Skins.pck", PCKFile.FileData.FileType.SkinDataFile);
using (var stream = new MemoryStream())
{
PCKFileWriter.Write(stream, new PCKFile(3), LittleEndianCheckBox.Checked, true);
newSkinsPCKFile.SetData(stream.ToArray());
}
- currentPCK.Files.Add(newSkinsPCKFile);
-
BuildMainTreeView();
TreeNode skinsNode = treeViewMain.Nodes.Find("Skins.pck", false).FirstOrDefault();
@@ -2224,7 +2210,7 @@ namespace PckStudio
using AddFilePrompt diag = new AddFilePrompt("res/" + Path.GetFileName(ofd.FileName));
if (diag.ShowDialog(this) == DialogResult.OK)
{
- PCKFile.FileData file = new PCKFile.FileData(diag.filepath, (PCKFile.FileData.FileType)diag.filetype);
+ PCKFile.FileData file = currentPCK.CreateNew(diag.filepath, (PCKFile.FileData.FileType)diag.filetype);
file.SetData(File.ReadAllBytes(ofd.FileName));
currentPCK.Files.Add(file);