mirror of
https://github.com/4sval/FModel.git
synced 2026-08-22 09:24:32 -05:00
AWB json converter, fix paths
This commit is contained in:
Submodule CUE4Parse updated: 40813f382f...b4ac4238fe
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user