mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Output location systems implemented
This commit is contained in:
parent
4e0f061e05
commit
374178db3b
@ -59,6 +59,7 @@ namespace Wabbajack
|
|||||||
public class CompilerSettings
|
public class CompilerSettings
|
||||||
{
|
{
|
||||||
public ModManager LastCompiledModManager { get; set; }
|
public ModManager LastCompiledModManager { get; set; }
|
||||||
|
public string OutputLocation { get; set; }
|
||||||
public MO2CompilationSettings MO2Compilation { get; } = new MO2CompilationSettings();
|
public MO2CompilationSettings MO2Compilation { get; } = new MO2CompilationSettings();
|
||||||
public VortexCompilationSettings VortexCompilation { get; } = new VortexCompilationSettings();
|
public VortexCompilationSettings VortexCompilation { get; } = new VortexCompilationSettings();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using ReactiveUI;
|
using Microsoft.WindowsAPICodePack.Dialogs;
|
||||||
|
using ReactiveUI;
|
||||||
using ReactiveUI.Fody.Helpers;
|
using ReactiveUI.Fody.Helpers;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -12,6 +13,8 @@ namespace Wabbajack
|
|||||||
{
|
{
|
||||||
public class MO2CompilerVM : ViewModel, ISubCompilerVM
|
public class MO2CompilerVM : ViewModel, ISubCompilerVM
|
||||||
{
|
{
|
||||||
|
public CompilerVM Parent { get; }
|
||||||
|
|
||||||
private readonly MO2CompilationSettings _settings;
|
private readonly MO2CompilationSettings _settings;
|
||||||
|
|
||||||
private readonly ObservableAsPropertyHelper<string> _mo2Folder;
|
private readonly ObservableAsPropertyHelper<string> _mo2Folder;
|
||||||
@ -24,6 +27,8 @@ namespace Wabbajack
|
|||||||
|
|
||||||
public FilePickerVM ModlistLocation { get; }
|
public FilePickerVM ModlistLocation { get; }
|
||||||
|
|
||||||
|
public FilePickerVM OutputLocation { get; }
|
||||||
|
|
||||||
public IReactiveCommand BeginCommand { get; }
|
public IReactiveCommand BeginCommand { get; }
|
||||||
|
|
||||||
[Reactive]
|
[Reactive]
|
||||||
@ -37,17 +42,24 @@ namespace Wabbajack
|
|||||||
|
|
||||||
public MO2CompilerVM(CompilerVM parent)
|
public MO2CompilerVM(CompilerVM parent)
|
||||||
{
|
{
|
||||||
|
Parent = parent;
|
||||||
ModlistLocation = new FilePickerVM()
|
ModlistLocation = new FilePickerVM()
|
||||||
{
|
{
|
||||||
ExistCheckOption = FilePickerVM.ExistCheckOptions.On,
|
ExistCheckOption = FilePickerVM.ExistCheckOptions.On,
|
||||||
PathType = FilePickerVM.PathTypeOptions.File,
|
PathType = FilePickerVM.PathTypeOptions.File,
|
||||||
PromptTitle = "Select Modlist"
|
PromptTitle = "Select modlist"
|
||||||
};
|
};
|
||||||
DownloadLocation = new FilePickerVM()
|
DownloadLocation = new FilePickerVM()
|
||||||
{
|
{
|
||||||
ExistCheckOption = FilePickerVM.ExistCheckOptions.On,
|
ExistCheckOption = FilePickerVM.ExistCheckOptions.On,
|
||||||
PathType = FilePickerVM.PathTypeOptions.Folder,
|
PathType = FilePickerVM.PathTypeOptions.Folder,
|
||||||
PromptTitle = "Select Download Location",
|
PromptTitle = "Select download location",
|
||||||
|
};
|
||||||
|
OutputLocation = new FilePickerVM()
|
||||||
|
{
|
||||||
|
ExistCheckOption = FilePickerVM.ExistCheckOptions.IfNotEmpty,
|
||||||
|
PathType = FilePickerVM.PathTypeOptions.Folder,
|
||||||
|
PromptTitle = "Select the folder to place the resulting modlist.wabbajack file",
|
||||||
};
|
};
|
||||||
|
|
||||||
_mo2Folder = this.WhenAny(x => x.ModlistLocation.TargetPath)
|
_mo2Folder = this.WhenAny(x => x.ModlistLocation.TargetPath)
|
||||||
@ -92,16 +104,26 @@ namespace Wabbajack
|
|||||||
canExecute: Observable.CombineLatest(
|
canExecute: Observable.CombineLatest(
|
||||||
this.WhenAny(x => x.ModlistLocation.InError),
|
this.WhenAny(x => x.ModlistLocation.InError),
|
||||||
this.WhenAny(x => x.DownloadLocation.InError),
|
this.WhenAny(x => x.DownloadLocation.InError),
|
||||||
resultSelector: (ml, down) => !ml && !down)
|
this.WhenAny(x => x.OutputLocation.InError),
|
||||||
|
resultSelector: (ml, down, output) => !ml && !down && !output)
|
||||||
.ObserveOnGuiThread(),
|
.ObserveOnGuiThread(),
|
||||||
execute: async () =>
|
execute: async () =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
string outputFile;
|
||||||
|
if (string.IsNullOrWhiteSpace(OutputLocation.TargetPath))
|
||||||
|
{
|
||||||
|
outputFile = MOProfile + ExtensionManager.Extension;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputFile = Path.Combine(OutputLocation.TargetPath, MOProfile + ExtensionManager.Extension);
|
||||||
|
}
|
||||||
ActiveCompilation = new MO2Compiler(
|
ActiveCompilation = new MO2Compiler(
|
||||||
mo2Folder: Mo2Folder,
|
mo2Folder: Mo2Folder,
|
||||||
mo2Profile: MOProfile,
|
mo2Profile: MOProfile,
|
||||||
outputFile: MOProfile + ExtensionManager.Extension)
|
outputFile: outputFile)
|
||||||
{
|
{
|
||||||
ModListName = ModlistSettings.ModListName,
|
ModListName = ModlistSettings.ModListName,
|
||||||
ModListAuthor = ModlistSettings.AuthorText,
|
ModListAuthor = ModlistSettings.AuthorText,
|
||||||
@ -143,6 +165,7 @@ namespace Wabbajack
|
|||||||
{
|
{
|
||||||
DownloadLocation.TargetPath = _settings.DownloadLocation;
|
DownloadLocation.TargetPath = _settings.DownloadLocation;
|
||||||
}
|
}
|
||||||
|
OutputLocation.TargetPath = parent.MWVM.Settings.Compiler.OutputLocation;
|
||||||
parent.MWVM.Settings.SaveSignal
|
parent.MWVM.Settings.SaveSignal
|
||||||
.Subscribe(_ => Unload())
|
.Subscribe(_ => Unload())
|
||||||
.DisposeWith(CompositeDisposable);
|
.DisposeWith(CompositeDisposable);
|
||||||
@ -195,6 +218,7 @@ namespace Wabbajack
|
|||||||
{
|
{
|
||||||
_settings.DownloadLocation = DownloadLocation.TargetPath;
|
_settings.DownloadLocation = DownloadLocation.TargetPath;
|
||||||
_settings.LastCompiledProfileLocation = ModlistLocation.TargetPath;
|
_settings.LastCompiledProfileLocation = ModlistLocation.TargetPath;
|
||||||
|
Parent.MWVM.Settings.Compiler.OutputLocation = OutputLocation.TargetPath;
|
||||||
ModlistSettings?.Save();
|
ModlistSettings?.Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user