From c525243c5003b20ed69b52bca1e152ced3226643 Mon Sep 17 00:00:00 2001 From: Masusder <59669685+Masusder@users.noreply.github.com> Date: Fri, 7 Nov 2025 22:47:21 +0100 Subject: [PATCH] AWB json converter, fix paths --- CUE4Parse | 2 +- FModel/ViewModels/AudioPlayerViewModel.cs | 12 ++++---- FModel/ViewModels/CUE4ParseViewModel.cs | 34 +++++++++++------------ 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index 40813f38..b4ac4238 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 40813f382f3f7ab92cbc3597b1f2ab8b29db836a +Subproject commit b4ac4238fea01ef2ca2cb3849d135552e320ea9a diff --git a/FModel/ViewModels/AudioPlayerViewModel.cs b/FModel/ViewModels/AudioPlayerViewModel.cs index 2187bcbd..ba4ce7ef 100644 --- a/FModel/ViewModels/AudioPlayerViewModel.cs +++ b/FModel/ViewModels/AudioPlayerViewModel.cs @@ -586,11 +586,10 @@ public class AudioPlayerViewModel : ViewModel, ISource, IDisposable { byte[] wavData = HcaWaveStream.ConvertHcaToWav(SelectedAudioFile.Data, UserSettings.Default.CurrentDir.CriwareDecryptionKey); - string outputDir = Path.Combine(UserSettings.Default.OutputDirectory, ".data"); - Directory.CreateDirectory(outputDir); + string wavFilePath = Path.Combine(UserSettings.Default.AudioDirectory, SelectedAudioFile.FilePath.TrimStart('/')); + wavFilePath = Path.ChangeExtension(wavFilePath, ".wav"); - string wavFilePath = Path.Combine(outputDir, - Path.ChangeExtension(SelectedAudioFile.FileName, ".wav")); + Directory.CreateDirectory(Path.GetDirectoryName(wavFilePath)!); File.WriteAllBytes(wavFilePath, wavData); @@ -601,12 +600,13 @@ public class AudioPlayerViewModel : ViewModel, ISource, IDisposable } catch (CriwareDecryptionException ex) { - FLogger.Append(ELog.Error, () => FLogger.Text($"Failed to convert HCA: '{ex.Message}'", Constants.WHITE, true)); - Log.Error($"Failed to convert HCA: {ex.Message}"); + FLogger.Append(ELog.Error, () => FLogger.Text($"Encrypted HCA: {ex.Message}", Constants.WHITE, true)); + Log.Error($"Encrypted HCA: {ex.Message}"); return false; } catch (Exception ex) { + FLogger.Append(ELog.Error, () => FLogger.Text($"Failed to convert HCA: {ex.Message}", Constants.WHITE, true)); Log.Error($"Failed to convert HCA: {ex.Message}"); return false; } diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index 9637a107..05bc3eb4 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -781,6 +781,8 @@ public class CUE4ParseViewModel : ViewModel var archive = entry.CreateReader(); var awbReader = new AwbReader(archive); + TabControl.SelectedTab.SetDocumentText(JsonConvert.SerializeObject(awbReader, Formatting.Indented), saveProperties, updateUi); + var extractedSounds = CriWareProvider.ExtractCriWareSounds(awbReader, archive.Name); foreach (var sound in extractedSounds) { @@ -1029,26 +1031,24 @@ public class CUE4ParseViewModel : ViewModel } return false; } - case USoundAtomCueSheet when isNone && pointer.Object.Value is USoundAtomCueSheet atomCueSheet: + case USoundAtomCueSheet or UAtomCueSheet or USoundAtomCue or UAtomWaveBank when (isNone || saveAudio) && pointer.Object.Value is UObject atomObject: + { + var extractedSounds = atomObject switch { - var extractedSounds = CriWareProvider.ExtractCriWareSounds(atomCueSheet); - var directory = Path.GetDirectoryName(atomCueSheet.Owner?.Name) ?? "/Criware/"; - foreach (var sound in extractedSounds) - { - SaveAndPlaySound(Path.Combine(directory, sound.Name), sound.Extension, sound.Data, saveAudio); - } - return false; - } - case UAtomCueSheet when isNone && pointer.Object.Value is UAtomCueSheet atomCueSheet: + USoundAtomCueSheet cueSheet => CriWareProvider.ExtractCriWareSounds(cueSheet), + UAtomCueSheet cueSheet => CriWareProvider.ExtractCriWareSounds(cueSheet), + USoundAtomCue cue => CriWareProvider.ExtractCriWareSounds(cue), + UAtomWaveBank awb => CriWareProvider.ExtractCriWareSounds(awb), + _ => [] + }; + + var directory = Path.GetDirectoryName(atomObject.Owner?.Name) ?? "/Criware/"; + foreach (var sound in extractedSounds) { - var extractedSounds = CriWareProvider.ExtractCriWareSounds(atomCueSheet); - var directory = Path.GetDirectoryName(atomCueSheet.Owner?.Name) ?? "/Criware/"; - foreach (var sound in extractedSounds) - { - SaveAndPlaySound(Path.Combine(directory, sound.Name), sound.Extension, sound.Data, saveAudio); - } - return false; + SaveAndPlaySound(Path.Combine(directory, sound.Name).Replace("\\", "/"), sound.Extension, sound.Data, saveAudio); } + return false; + } case UAkMediaAssetData when isNone || saveAudio: case USoundWave when isNone || saveAudio: {