Removed Depot ID since they can be used independently from DLCs.

Improve log verbosity.
This commit is contained in:
Jeddunk 2021-04-28 17:14:29 +02:00
parent fd518e4504
commit 0c1c1226fb
3 changed files with 64 additions and 14 deletions

View File

@ -34,7 +34,7 @@ namespace GoldbergGUI.Core.Models
/// </summary> /// </summary>
public List<DlcApp> DlcList { get; set; } public List<DlcApp> DlcList { get; set; }
//public List<Depot> Depots { get; set; } public List<int> Depots { get; set; }
public List<Group> SubscribedGroups { get; set; } public List<Group> SubscribedGroups { get; set; }
@ -67,10 +67,7 @@ namespace GoldbergGUI.Core.Models
public class DlcApp : SteamApp public class DlcApp : SteamApp
{ {
/// <summary> //public int? DepotId { get; set; }
/// ID of depot (optional)
/// </summary>
public int? DepotId { get; set; }
//public string DepotName { get; set; } //public string DepotName { get; set; }
/// <summary> /// <summary>
/// Path to DLC (relative to Steam API DLL) (optional) /// Path to DLC (relative to Steam API DLL) (optional)

View File

@ -29,6 +29,7 @@ namespace GoldbergGUI.Core.Services
} }
// ReSharper disable once UnusedType.Global // ReSharper disable once UnusedType.Global
// ReSharper disable once ClassNeverInstantiated.Global
public class GoldbergService : IGoldbergService public class GoldbergService : IGoldbergService
{ {
private IMvxLog _log; private IMvxLog _log;
@ -221,6 +222,7 @@ namespace GoldbergGUI.Core.Services
} }
var dlcTxt = Path.Combine(path, "steam_settings", "DLC.txt"); var dlcTxt = Path.Combine(path, "steam_settings", "DLC.txt");
var appPathTxt = Path.Combine(path, "steam_settings", "app_paths.txt");
if (File.Exists(dlcTxt)) if (File.Exists(dlcTxt))
{ {
_log.Info("Getting DLCs..."); _log.Info("Getting DLCs...");
@ -237,6 +239,20 @@ namespace GoldbergGUI.Core.Services
Name = match.Groups["name"].Value Name = match.Groups["name"].Value
}); });
} }
// ReSharper disable once InvertIf
if (File.Exists(appPathTxt))
{
var appPathAllLinesAsync = await File.ReadAllLinesAsync(dlcTxt).ConfigureAwait(false);
var appPathExpression = new Regex(@"(?<id>.*) *= *(?<appPath>.*)");
foreach (var line in appPathAllLinesAsync)
{
var match = appPathExpression.Match(line);
if (match.Success)
dlcList[Convert.ToInt32(match.Groups["id"].Value)].AppPath =
match.Groups["appPath"].Value;
}
}
} }
else else
{ {
@ -273,6 +289,7 @@ namespace GoldbergGUI.Core.Services
{ {
CopyDllFiles(path, x64Name); CopyDllFiles(path, x64Name);
} }
_log.Info("DLL setup finished!");
// Create steam_settings folder if missing // Create steam_settings folder if missing
_log.Info("Saving settings..."); _log.Info("Saving settings...");
@ -285,50 +302,81 @@ namespace GoldbergGUI.Core.Services
await File.WriteAllTextAsync(Path.Combine(path, "steam_appid.txt"), c.AppId.ToString()) await File.WriteAllTextAsync(Path.Combine(path, "steam_appid.txt"), c.AppId.ToString())
.ConfigureAwait(false); .ConfigureAwait(false);
// DLC // DLC + App path
if (c.DlcList.Count > 0) if (c.DlcList.Count > 0)
{ {
var dlcString = ""; _log.Info("Saving DLC settings...");
c.DlcList.ForEach(x => dlcString += $"{x}\n"); var dlcContent = "";
await File.WriteAllTextAsync(Path.Combine(path, "steam_settings", "DLC.txt"), dlcString) //var depotContent = "";
var appPathContent = "";
c.DlcList.ForEach(x =>
{
dlcContent += $"{x}\n";
//depotContent += $"{x.DepotId}\n";
appPathContent += $"{x.AppId}={x.AppPath}\n";
});
await File.WriteAllTextAsync(Path.Combine(path, "steam_settings", "DLC.txt"), dlcContent)
.ConfigureAwait(false); .ConfigureAwait(false);
/*if (!string.Equals(depotContent, ""))
{
await File.WriteAllTextAsync(Path.Combine(path, "steam_settings", "depots.txt"), depotContent)
.ConfigureAwait(false);
}*/
if (!string.Equals(appPathContent, ""))
{
await File.WriteAllTextAsync(Path.Combine(path, "steam_settings", "app_paths.txt"), appPathContent)
.ConfigureAwait(false);
}
_log.Info("Saved DLC settings.");
} }
else else
{ {
_log.Info("No DLC set! Removing DLC configuration files...");
if (File.Exists(Path.Combine(path, "steam_settings", "DLC.txt"))) if (File.Exists(Path.Combine(path, "steam_settings", "DLC.txt")))
File.Delete(Path.Combine(path, "steam_settings", "DLC.txt")); File.Delete(Path.Combine(path, "steam_settings", "DLC.txt"));
if (File.Exists(Path.Combine(path, "steam_settings", "app_paths.txt")))
File.Delete(Path.Combine(path, "steam_settings", "app_paths.txt"));
_log.Info("Removed DLC configuration files.");
} }
// Offline // Offline
if (c.Offline) if (c.Offline)
{ {
_log.Info("Create offline.txt");
await File.Create(Path.Combine(path, "steam_settings", "offline.txt")).DisposeAsync() await File.Create(Path.Combine(path, "steam_settings", "offline.txt")).DisposeAsync()
.ConfigureAwait(false); .ConfigureAwait(false);
} }
else else
{ {
_log.Info("Delete offline.txt if it exists");
File.Delete(Path.Combine(path, "steam_settings", "offline.txt")); File.Delete(Path.Combine(path, "steam_settings", "offline.txt"));
} }
// Disable Networking // Disable Networking
if (c.DisableNetworking) if (c.DisableNetworking)
{ {
_log.Info("Create disable_networking.txt");
await File.Create(Path.Combine(path, "steam_settings", "disable_networking.txt")).DisposeAsync() await File.Create(Path.Combine(path, "steam_settings", "disable_networking.txt")).DisposeAsync()
.ConfigureAwait(false); .ConfigureAwait(false);
} }
else else
{ {
_log.Info("Delete disable_networking.txt if it exists");
File.Delete(Path.Combine(path, "steam_settings", "disable_networking.txt")); File.Delete(Path.Combine(path, "steam_settings", "disable_networking.txt"));
} }
// Disable Overlay // Disable Overlay
if (c.DisableOverlay) if (c.DisableOverlay)
{ {
_log.Info("Create disable_overlay.txt");
await File.Create(Path.Combine(path, "steam_settings", "disable_overlay.txt")).DisposeAsync() await File.Create(Path.Combine(path, "steam_settings", "disable_overlay.txt")).DisposeAsync()
.ConfigureAwait(false); .ConfigureAwait(false);
} }
else else
{ {
_log.Info("Delete disable_overlay.txt if it exists");
File.Delete(Path.Combine(path, "steam_settings", "disable_overlay.txt")); File.Delete(Path.Combine(path, "steam_settings", "disable_overlay.txt"));
} }
} }
@ -337,17 +385,21 @@ namespace GoldbergGUI.Core.Services
{ {
var steamApiDll = Path.Combine(path, $"{name}.dll"); var steamApiDll = Path.Combine(path, $"{name}.dll");
var originalDll = Path.Combine(path, $"{name}_o.dll"); var originalDll = Path.Combine(path, $"{name}_o.dll");
var guiBackup = Path.Combine(path, $"{name}.dll.GOLDBERGGUIBACKUP"); var guiBackup = Path.Combine(path, $".{name}.dll.GOLDBERGGUIBACKUP");
var goldbergDll = Path.Combine(_goldbergPath, $"{name}.dll"); var goldbergDll = Path.Combine(_goldbergPath, $"{name}.dll");
if (!File.Exists(originalDll)) if (!File.Exists(originalDll))
{
_log.Info("Back up original Steam API DLL...");
File.Move(steamApiDll, originalDll); File.Move(steamApiDll, originalDll);
}
else else
{ {
File.Move(steamApiDll, guiBackup, true); File.Move(steamApiDll, guiBackup, true);
File.SetAttributes(guiBackup, FileAttributes.Hidden); File.SetAttributes(guiBackup, FileAttributes.Hidden);
} }
_log.Info("Copy Goldberg DLL to target path...");
File.Copy(goldbergDll, steamApiDll); File.Copy(goldbergDll, steamApiDll);
} }
@ -411,6 +463,7 @@ namespace GoldbergGUI.Core.Services
var contentLength = headResponse.Content.Headers.ContentLength; var contentLength = headResponse.Content.Headers.ContentLength;
await client.GetFileAsync(downloadUrl, fileStream).ContinueWith(async t => await client.GetFileAsync(downloadUrl, fileStream).ContinueWith(async t =>
{ {
// ReSharper disable once AccessToDisposedClosure
await fileStream.DisposeAsync().ConfigureAwait(false); await fileStream.DisposeAsync().ConfigureAwait(false);
var fileLength = new FileInfo(_goldbergZipPath).Length; var fileLength = new FileInfo(_goldbergZipPath).Length;
// Environment.Exit(128); // Environment.Exit(128);

View File

@ -56,12 +56,12 @@
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="App ID" Binding="{Binding AppId}" Width="80" /> <DataGridTextColumn Header="App ID" Binding="{Binding AppId}" Width="80" />
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*" /> <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*" />
<DataGridTextColumn Header="Depot ID" Binding="{Binding DepotId}" Width="80" Visibility="{Binding Source={x:Reference showOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}"/> <!--<DataGridTextColumn Header="Depot ID" Binding="{Binding DepotId}" Width="80" Visibility="{Binding Source={x:Reference ShowOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}"/>
<!--<DataGridTextColumn Header="Depot Name" Binding="{Binding DepotName}" Width="*" Visibility="{Binding Source={x:Reference showOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}" />--> <DataGridTextColumn Header="Depot Name" Binding="{Binding DepotName}" Width="*" Visibility="{Binding Source={x:Reference ShowOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}" />-->
<DataGridTextColumn Header="App Path" Binding="{Binding AppPath}" Width="*" Visibility="{Binding Source={x:Reference showOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}" /> <DataGridTextColumn Header="App Path" Binding="{Binding AppPath}" Width="*" Visibility="{Binding Source={x:Reference ShowOptionalDlcSettings}, Path=IsChecked, Converter={StaticResource B2V}}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
<CheckBox Grid.Row="1" x:Name="showOptionalDlcSettings" Margin="0,5,0,0" Content="Show optional settings"/> <CheckBox Grid.Row="1" x:Name="ShowOptionalDlcSettings" Margin="0,5,0,0" Content="Show optional settings"/>
<Button Content="Get _DLCs for AppID" Command="{Binding GetListOfDlcCommand}" Grid.Row="1" Width="120" HorizontalAlignment="Right" Margin="0,5,0,0" Height="20"/> <Button Content="Get _DLCs for AppID" Command="{Binding GetListOfDlcCommand}" Grid.Row="1" Width="120" HorizontalAlignment="Right" Margin="0,5,0,0" Height="20"/>
</Grid> </Grid>
</GroupBox> </GroupBox>