Merge branch 'main' into game_support_readme_update

This commit is contained in:
Timothy Baldridge 2022-11-05 07:17:18 -06:00 committed by GitHub
commit 77eb536162
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 125 additions and 34 deletions

View File

@ -132,12 +132,13 @@ namespace Wabbajack
try
{
var assembly = Assembly.GetExecutingAssembly();
var location = assembly.Location;
if (string.IsNullOrWhiteSpace(location))
location = Process.GetCurrentProcess().MainModule?.FileName ?? throw new Exception("Assembly location is unavailable!");
var assemblyLocation = assembly.Location;
var processLocation = Process.GetCurrentProcess().MainModule?.FileName ?? throw new Exception("Process location is unavailable!");
_logger.LogInformation("App Location: {Location}", assembly.Location);
var fvi = FileVersionInfo.GetVersionInfo(location);
_logger.LogInformation("Assembly Location: {AssemblyLocation}", assemblyLocation);
_logger.LogInformation("Process Location: {ProcessLocation}", processLocation);
var fvi = FileVersionInfo.GetVersionInfo(string.IsNullOrWhiteSpace(assemblyLocation) ? processLocation : assemblyLocation);
Consts.CurrentMinimumWabbajackVersion = Version.Parse(fvi.FileVersion);
VersionDisplay = $"v{fvi.FileVersion}";
AppName = "WABBAJACK " + VersionDisplay;
@ -151,7 +152,7 @@ namespace Wabbajack
{
var applicationRegistrationService = _serviceProvider.GetRequiredService<IApplicationRegistrationService>();
var applicationInfo = new ApplicationInfo("Wabbajack", "Wabbajack", "Wabbajack", location);
var applicationInfo = new ApplicationInfo("Wabbajack", "Wabbajack", "Wabbajack", processLocation);
applicationInfo.SupportedExtensions.Add("wabbajack");
applicationRegistrationService.RegisterApplication(applicationInfo);
}

View File

@ -165,7 +165,11 @@
<Button Name="AddInclude">
<icon:Material Kind="Plus"></icon:Material>
</Button>
<Label>Include</Label>
<Label>Include Folders</Label>
<Button Name="AddIncludeFiles">
<icon:Material Kind="Plus"></icon:Material>
</Button>
<Label>Include Files</Label>
</StackPanel>
<ListBox x:Name="Include">
<ListBox.ItemTemplate>
@ -179,7 +183,11 @@
<Button Name="AddIgnore">
<icon:Material Kind="Plus"></icon:Material>
</Button>
<Label>Ignore</Label>
<Label>Ignore Folders</Label>
<Button Name="AddIgnoreFiles">
<icon:Material Kind="Plus"></icon:Material>
</Button>
<Label>Ignore Files</Label>
</StackPanel>
<ListBox x:Name="Ignore">
<ListBox.ItemTemplate>

View File

@ -219,6 +219,7 @@ namespace Wabbajack
.DisposeWith(disposables);
AddInclude.Command = ReactiveCommand.CreateFromTask(async () => await AddIncludeCommand());
AddIncludeFiles.Command = ReactiveCommand.CreateFromTask(async () => await AddIncludeFilesCommand());
ViewModel.WhenAnyValue(vm => vm.Ignore)
.WhereNotNull()
@ -227,6 +228,7 @@ namespace Wabbajack
.DisposeWith(disposables);
AddIgnore.Command = ReactiveCommand.CreateFromTask(async () => await AddIgnoreCommand());
AddIgnoreFiles.Command = ReactiveCommand.CreateFromTask(async () => await AddIgnoreFilesCommand());
});
@ -258,16 +260,19 @@ namespace Wabbajack
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = false,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
foreach (var fileName in dlg.FileNames)
{
var selectedPath = fileName.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) return;
ViewModel.AddAlwaysEnabled(selectedPath.RelativeTo(ViewModel.Source));
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddAlwaysEnabled(selectedPath.RelativeTo(ViewModel.Source));
}
}
public async Task AddOtherProfileCommand()
@ -295,16 +300,19 @@ namespace Wabbajack
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = false,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source.Combine("profiles"))) return;
ViewModel.AddOtherProfile(selectedPath.FileName.ToString());
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source.Combine("profiles"))) continue;
ViewModel.AddOtherProfile(selectedPath.FileName.ToString());
}
}
public Task AddNoMatchIncludeCommand()
@ -321,16 +329,20 @@ namespace Wabbajack
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = false,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return Task.CompletedTask;
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) return Task.CompletedTask;
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddNoMatchInclude(selectedPath.RelativeTo(ViewModel!.Source));
}
ViewModel.AddNoMatchInclude(selectedPath.RelativeTo(ViewModel!.Source));
return Task.CompletedTask;
}
@ -338,7 +350,7 @@ namespace Wabbajack
{
var dlg = new CommonOpenFileDialog
{
Title = "Please select a file to include",
Title = "Please select folders to include",
IsFolderPicker = true,
InitialDirectory = ViewModel!.Source.ToString(),
AddToMostRecentlyUsedList = false,
@ -348,23 +360,55 @@ namespace Wabbajack
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = false,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) return;
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
}
}
public async Task AddIncludeFilesCommand()
{
var dlg = new CommonOpenFileDialog
{
Title = "Please select files to include",
IsFolderPicker = false,
InitialDirectory = ViewModel!.Source.ToString(),
AddToMostRecentlyUsedList = false,
AllowNonFileSystemItems = false,
DefaultDirectory = ViewModel!.Source.ToString(),
EnsureFileExists = true,
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddInclude(selectedPath.RelativeTo(ViewModel!.Source));
}
}
public async Task AddIgnoreCommand()
{
var dlg = new CommonOpenFileDialog
{
Title = "Please select a file to ignore",
Title = "Please select folders to ignore",
IsFolderPicker = true,
InitialDirectory = ViewModel!.Source.ToString(),
AddToMostRecentlyUsedList = false,
@ -374,16 +418,48 @@ namespace Wabbajack
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = false,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
var selectedPath = dlg.FileNames.First().ToAbsolutePath();
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) return;
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
}
}
public async Task AddIgnoreFilesCommand()
{
var dlg = new CommonOpenFileDialog
{
Title = "Please select files to ignore",
IsFolderPicker = false,
InitialDirectory = ViewModel!.Source.ToString(),
AddToMostRecentlyUsedList = false,
AllowNonFileSystemItems = false,
DefaultDirectory = ViewModel!.Source.ToString(),
EnsureFileExists = true,
EnsurePathExists = true,
EnsureReadOnly = false,
EnsureValidNames = true,
Multiselect = true,
ShowPlacesList = true,
};
if (dlg.ShowDialog() != CommonFileDialogResult.Ok) return;
foreach (var filename in dlg.FileNames)
{
var selectedPath = filename.ToAbsolutePath();
if (!selectedPath.InFolder(ViewModel.Source)) continue;
ViewModel.AddIgnore(selectedPath.RelativeTo(ViewModel!.Source));
}
}
}
}

View File

@ -64,7 +64,7 @@ public class CompilerSettings
public RelativePath[] Include { get; set; } = Array.Empty<RelativePath>();
/// <summary>
/// These files are inlined into the modlist
/// These files are ignored when compiling the modlist
/// </summary>
public RelativePath[] Ignore { get; set; } = Array.Empty<RelativePath>();

View File

@ -107,6 +107,12 @@ public static class GameRegistry
MO2Name = "Skyrim Special Edition",
MO2ArchiveName = "skyrimse",
SteamIDs = new[] {489830},
GOGIDs = new[]
{
1711230643,// The Elder Scrolls V: Skyrim Special Edition AKA Base Game
1801825368,// The Elder Scrolls V: Skyrim Anniversary Edition AKA The Store Bundle
1162721350 // Upgrade DLC
},
RequiredFiles = new[]
{
"SkyrimSE.exe".ToRelativePath()