From 7c0d3d46d4cc159f0f13b7f66c3bd90f67360c2f Mon Sep 17 00:00:00 2001 From: MattNL Date: Wed, 10 Aug 2022 14:27:24 -0400 Subject: [PATCH] fix to song order issue in AudioFileReader --- MinecraftUSkinEditor/Classes/IO/PCK/PCKAudioFileReader.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MinecraftUSkinEditor/Classes/IO/PCK/PCKAudioFileReader.cs b/MinecraftUSkinEditor/Classes/IO/PCK/PCKAudioFileReader.cs index 5137ba9b..d7d6ada6 100644 --- a/MinecraftUSkinEditor/Classes/IO/PCK/PCKAudioFileReader.cs +++ b/MinecraftUSkinEditor/Classes/IO/PCK/PCKAudioFileReader.cs @@ -56,6 +56,7 @@ namespace PckStudio.Classes.IO.PCK } } + private List original_categories = new List(); private void ReadCategories(Stream stream) { int categoryEntryCount = ReadInt(stream); @@ -64,6 +65,9 @@ namespace PckStudio.Classes.IO.PCK var parameterType = (PCKAudioFile.AudioCategory.EAudioParameterType)ReadInt(stream); var audioType = (PCKAudioFile.AudioCategory.EAudioType)ReadInt(stream); string name = ReadString(stream); + // AddCategory puts the file's categories out of order and causes some songs to be put in the wrong categories + // This is my simple fix for the issue. + original_categories.Add(new PCKAudioFile.AudioCategory(name, parameterType, audioType)); _file.AddCategory(parameterType, audioType, name); } } @@ -72,7 +76,7 @@ namespace PckStudio.Classes.IO.PCK { List credits = new List(); List creditIds = new List(); - foreach (var c in _file.Categories) + foreach (var c in original_categories) { int audioCount = ReadInt(stream); for (; 0 < audioCount; audioCount--) @@ -82,7 +86,7 @@ namespace PckStudio.Classes.IO.PCK switch (key) { case "CUENAME": - c.SongNames.Add(value); + _file.GetCategory(c.audioType).SongNames.Add(value); break; case "CREDIT": credits.Add(value);