mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-26 04:05:50 +00:00
Added endianness conversion feature
Redone because it originally included a bunch of sub pck support, which is no longer planned.
This commit is contained in:
2077
PCK-Studio/MainForm.Designer.cs
generated
2077
PCK-Studio/MainForm.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -413,8 +413,22 @@ namespace PckStudio
|
||||
|
||||
private void HandleAudioFile(PckFileData file)
|
||||
{
|
||||
using AudioEditor audioEditor = new AudioEditor(file, LittleEndianCheckBox.Checked);
|
||||
wasModified = audioEditor.ShowDialog(this) == DialogResult.OK;
|
||||
try
|
||||
{
|
||||
using AudioEditor audioEditor = new AudioEditor(file, LittleEndianCheckBox.Checked);
|
||||
wasModified = audioEditor.ShowDialog(this) == DialogResult.OK;
|
||||
}
|
||||
catch (OverflowException)
|
||||
{
|
||||
MessageBox.Show(this, $"Failed to open {file.Filename}\n" +
|
||||
"Try converting the file by using the \"Misc. Functions/Set PCK Endianness\" tool and try again.",
|
||||
"Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Failed to open {file.Filename}\n" + ex.Message,
|
||||
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleLocalisationFile(PckFileData file)
|
||||
@@ -2334,5 +2348,42 @@ namespace PckStudio
|
||||
private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) => moveFile(-1);
|
||||
[Obsolete]
|
||||
private void moveDownToolStripMenuItem_Click(object sender, EventArgs e) => moveFile(1);
|
||||
|
||||
private void setPCKEndiannessStripMenuItem_Click(OMI.Endianness endianness)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (treeViewMain.SelectedNode.Tag is PckFileData file && (file.Filetype is PckFileType.AudioFile || file.Filetype is PckFileType.SkinDataFile || file.Filetype is PckFileType.TexturePackInfoFile))
|
||||
{
|
||||
using (var stream = new MemoryStream())
|
||||
{
|
||||
dynamic reader = file.Filetype is PckFileType.AudioFile
|
||||
? new PckAudioFileReader(endianness == OMI.Endianness.BigEndian ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian)
|
||||
: new PckFileReader(endianness == OMI.Endianness.BigEndian ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
|
||||
var pck = reader.FromStream(new MemoryStream(file.Data));
|
||||
dynamic writer = file.Filetype is PckFileType.AudioFile
|
||||
? new PckAudioFileWriter(pck, endianness)
|
||||
: new PckFileWriter(pck, endianness);
|
||||
writer.WriteToStream(stream);
|
||||
file.SetData(stream.ToArray());
|
||||
}
|
||||
wasModified = true;
|
||||
MessageBox.Show($"\"{file.Filename}\" successfully converted to {(endianness == OMI.Endianness.LittleEndian ? "little" : "big")} endian.", "Converted PCK file");
|
||||
}
|
||||
}
|
||||
catch (OverflowException)
|
||||
{
|
||||
MessageBox.Show(this, $"File was not a valid {(endianness != OMI.Endianness.LittleEndian ? "little" : "big")} endian PCK File.", "Not a valid PCK file");
|
||||
return;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, ex.Message, "Not a valid PCK file");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void littleEndianToolStripMenuItem_Click(object sender, EventArgs e) => setPCKEndiannessStripMenuItem_Click(OMI.Endianness.LittleEndian);
|
||||
private void bigEndianToolStripMenuItem_Click(object sender, EventArgs e) => setPCKEndiannessStripMenuItem_Click(OMI.Endianness.BigEndian);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user