Skip to content

Commit

Permalink
implemented #242
Browse files Browse the repository at this point in the history
  • Loading branch information
4sval committed Jan 10, 2022
1 parent 1603295 commit 1724039
Show file tree
Hide file tree
Showing 10 changed files with 157 additions and 42 deletions.
28 changes: 27 additions & 1 deletion FModel/App.xaml.cs
Expand Up @@ -43,14 +43,40 @@ protected override void OnStartup(StartupEventArgs e)
UserSettings.Default = new UserSettings();
}

var createMe = false;
if (!Directory.Exists(UserSettings.Default.OutputDirectory))
{
UserSettings.Default.OutputDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Output");
}
if (!Directory.Exists(UserSettings.Default.RawDataDirectory))
{
createMe = true;
UserSettings.Default.RawDataDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
}
if (!Directory.Exists(UserSettings.Default.PropertiesDirectory))
{
createMe = true;
UserSettings.Default.PropertiesDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
}
if (!Directory.Exists(UserSettings.Default.TextureDirectory))
{
createMe = true;
UserSettings.Default.TextureDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
}
if (!Directory.Exists(UserSettings.Default.AudioDirectory))
{
createMe = true;
UserSettings.Default.AudioDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
}
if (!Directory.Exists(UserSettings.Default.ModelDirectory))
{
createMe = true;
UserSettings.Default.ModelDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
}

Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FModel"));
Directory.CreateDirectory(Path.Combine(UserSettings.Default.OutputDirectory, "Backups"));
Directory.CreateDirectory(Path.Combine(UserSettings.Default.OutputDirectory, "Exports"));
if (createMe) Directory.CreateDirectory(Path.Combine(UserSettings.Default.OutputDirectory, "Exports"));
Directory.CreateDirectory(Path.Combine(UserSettings.Default.OutputDirectory, "Logs"));
Directory.CreateDirectory(Path.Combine(UserSettings.Default.OutputDirectory, ".data"));

Expand Down
28 changes: 28 additions & 0 deletions FModel/Settings/UserSettings.cs
Expand Up @@ -52,6 +52,34 @@ public string OutputDirectory
set => SetProperty(ref _outputDirectory, value);
}

private string _rawDataDirectory;
public string RawDataDirectory
{
get => _rawDataDirectory;
set => SetProperty(ref _rawDataDirectory, value);
}

private string _propertiesDirectory;
public string PropertiesDirectory
{
get => _propertiesDirectory;
set => SetProperty(ref _propertiesDirectory, value);
}

private string _textureDirectory;
public string TextureDirectory
{
get => _textureDirectory;
set => SetProperty(ref _textureDirectory, value);
}

private string _audioDirectory;
public string AudioDirectory
{
get => _audioDirectory;
set => SetProperty(ref _audioDirectory, value);
}

private string _modelDirectory;
public string ModelDirectory
{
Expand Down
2 changes: 1 addition & 1 deletion FModel/ViewModels/AudioPlayerViewModel.cs
Expand Up @@ -307,7 +307,7 @@ public void Save(AudioFile file = null, bool auto = false)
{
Title = "Save Audio",
FileName = fileToSave.FileName,
InitialDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports")
InitialDirectory = UserSettings.Default.AudioDirectory
};
if (!(bool) saveFileDialog.ShowDialog()) return;
path = saveFileDialog.FileName;
Expand Down
7 changes: 2 additions & 5 deletions FModel/ViewModels/CUE4ParseViewModel.cs
Expand Up @@ -729,9 +729,8 @@ public void ExtractAndScroll(string fullPath, string objectName)

private void SaveAndPlaySound(string fullPath, string ext, byte[] data)
{
var userDir = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");
if (fullPath.StartsWith("/")) fullPath = fullPath[1..];
var savedAudioPath = Path.Combine(userDir,
var savedAudioPath = Path.Combine(UserSettings.Default.AudioDirectory,
UserSettings.Default.KeepDirectoryStructure ? fullPath : fullPath.SubstringAfterLast('/')).Replace('\\', '/') + $".{ext.ToLower()}";

if (!UserSettings.Default.IsAutoOpenSounds)
Expand Down Expand Up @@ -776,13 +775,11 @@ private void SaveExport(UObject export)
public void ExportData(string fullPath)
{
var fileName = fullPath.SubstringAfterLast('/');
var directory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports");

if (Provider.TrySavePackage(fullPath, out var assets))
{
foreach (var kvp in assets)
{
var path = Path.Combine(directory, UserSettings.Default.KeepDirectoryStructure ? kvp.Key : kvp.Key.SubstringAfterLast('/')).Replace('\\', '/');
var path = Path.Combine(UserSettings.Default.RawDataDirectory, UserSettings.Default.KeepDirectoryStructure ? kvp.Key : kvp.Key.SubstringAfterLast('/')).Replace('\\', '/');
Directory.CreateDirectory(path.SubstringBeforeLast('/'));
File.WriteAllBytes(path, kvp.Value);
}
Expand Down
12 changes: 12 additions & 0 deletions FModel/ViewModels/SettingsViewModel.cs
Expand Up @@ -133,6 +133,10 @@ public ETextureFormat SelectedTextureExportFormat
private readonly FGame _game;
private Game _gamePreset;
private string _outputSnapshot;
private string _rawDataSnapshot;
private string _propertiesSnapshot;
private string _textureSnapshot;
private string _audioSnapshot;
private string _modelSnapshot;
private string _gameSnapshot;
private EUpdateMode _updateModeSnapshot;
Expand All @@ -155,6 +159,10 @@ public SettingsViewModel(FGame game)
public void Initialize()
{
_outputSnapshot = UserSettings.Default.OutputDirectory;
_rawDataSnapshot = UserSettings.Default.RawDataDirectory;
_propertiesSnapshot = UserSettings.Default.PropertiesDirectory;
_textureSnapshot = UserSettings.Default.TextureDirectory;
_audioSnapshot = UserSettings.Default.AudioDirectory;
_modelSnapshot = UserSettings.Default.ModelDirectory;
_gameSnapshot = UserSettings.Default.GameDirectory;
_updateModeSnapshot = UserSettings.Default.UpdateMode;
Expand Down Expand Up @@ -252,6 +260,10 @@ public SettingsOut Save()
if (_ueGameSnapshot != SelectedUeGame || // combobox
_customVersionsSnapshot != SelectedCustomVersions || _optionsSnapshot != SelectedOptions ||
_outputSnapshot != UserSettings.Default.OutputDirectory || // textbox
_rawDataSnapshot != UserSettings.Default.RawDataDirectory || // textbox
_propertiesSnapshot != UserSettings.Default.PropertiesDirectory || // textbox
_textureSnapshot != UserSettings.Default.TextureDirectory || // textbox
_audioSnapshot != UserSettings.Default.AudioDirectory || // textbox
_modelSnapshot != UserSettings.Default.ModelDirectory || // textbox
_gameSnapshot != UserSettings.Default.GameDirectory) // textbox
ret = SettingsOut.Restart;
Expand Down
8 changes: 4 additions & 4 deletions FModel/ViewModels/TabControlViewModel.cs
Expand Up @@ -266,7 +266,7 @@ private void SaveImage(TabImage image, bool autoSave)
{
if (image == null) return;
var fileName = $"{image.ExportName}.png";
var directory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports",
var directory = Path.Combine(UserSettings.Default.TextureDirectory,
UserSettings.Default.KeepDirectoryStructure ? Directory : "", fileName!).Replace('\\', '/');

if (!autoSave)
Expand All @@ -275,7 +275,7 @@ private void SaveImage(TabImage image, bool autoSave)
{
Title = "Save Texture",
FileName = fileName,
InitialDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports"),
InitialDirectory = UserSettings.Default.TextureDirectory,
Filter = "PNG Files (*.png)|*.png|All Files (*.*)|*.*"
};
var result = saveFileDialog.ShowDialog();
Expand All @@ -298,7 +298,7 @@ private void SaveImage(TabImage image, bool autoSave)
public void SaveProperty(bool autoSave)
{
var fileName = Path.ChangeExtension(Header, ".json");
var directory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports",
var directory = Path.Combine(UserSettings.Default.PropertiesDirectory,
UserSettings.Default.KeepDirectoryStructure ? Directory : "", fileName).Replace('\\', '/');

if (!autoSave)
Expand All @@ -307,7 +307,7 @@ public void SaveProperty(bool autoSave)
{
Title = "Save Property",
FileName = fileName,
InitialDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports"),
InitialDirectory = UserSettings.Default.PropertiesDirectory,
Filter = "JSON Files (*.json)|*.json|INI Files (*.ini)|*.ini|XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
};
var result = saveFileDialog.ShowDialog();
Expand Down
2 changes: 1 addition & 1 deletion FModel/Views/AudioPlayer.xaml.cs
Expand Up @@ -59,7 +59,7 @@ private void OnPreviewKeyDown(object sender, KeyEventArgs e)
var openFileDialog = new OpenFileDialog
{
Title = "Select an audio file",
InitialDirectory = Path.Combine(UserSettings.Default.OutputDirectory, "Exports"),
InitialDirectory = UserSettings.Default.AudioDirectory,
Filter = "OGG Files (*.ogg)|*.ogg|WAV Files (*.wav)|*.wav|WEM Files (*.wem)|*.wem|ADPCM Files (*.adpcm)|*.adpcm|All Files (*.*)|*.*",
Multiselect = true
};
Expand Down
2 changes: 1 addition & 1 deletion FModel/Views/MapViewer.xaml.cs
Expand Up @@ -30,7 +30,7 @@ public MapViewer()
private void OnClick(object sender, RoutedEventArgs e)
{
if (_applicationView.MapViewer.MapImage == null) return;
var path = Path.Combine(UserSettings.Default.OutputDirectory, "Exports", "MiniMap.png");
var path = Path.Combine(UserSettings.Default.TextureDirectory, "MiniMap.png");

var saveFileDialog = new SaveFileDialog
{
Expand Down

0 comments on commit 1724039

Please sign in to comment.