v2.3.1.1
- Separated appTasks into a separate list along with RunningTasks to improve stability - Remaining games and DLCs are now first added outside of their scheduled tasks to improve visual feedback
This commit is contained in:
parent
3840aa9f1b
commit
f6b7c7899a
2 changed files with 17 additions and 14 deletions
|
@ -5,7 +5,7 @@
|
||||||
<UseWindowsForms>True</UseWindowsForms>
|
<UseWindowsForms>True</UseWindowsForms>
|
||||||
<ApplicationIcon>Resources\ini.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\ini.ico</ApplicationIcon>
|
||||||
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
|
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
|
||||||
<Version>2.3.1.0</Version>
|
<Version>2.3.1.1</Version>
|
||||||
<PackageIcon>Resources\ini.ico</PackageIcon>
|
<PackageIcon>Resources\ini.ico</PackageIcon>
|
||||||
<PackageIconUrl />
|
<PackageIconUrl />
|
||||||
<Description>Automatically generates and installs CreamAPI files for Steam games on the user's computer. It can also generate and install CreamAPI for the Paradox Launcher should the user select a Paradox Interactive game.</Description>
|
<Description>Automatically generates and installs CreamAPI files for Steam games on the user's computer. It can also generate and install CreamAPI for the Paradox Launcher should the user select a Paradox Interactive game.</Description>
|
||||||
|
|
|
@ -192,9 +192,10 @@ internal partial class SelectForm : CustomForm
|
||||||
}
|
}
|
||||||
|
|
||||||
int CompleteTasks = 0;
|
int CompleteTasks = 0;
|
||||||
RunningTasks.Clear();
|
RunningTasks.Clear(); // contains all running tasks including games AND their dlc
|
||||||
RemainingGames.Clear();
|
RemainingGames.Clear(); // for display purposes only, otherwise ignorable
|
||||||
RemainingDLCs.Clear();
|
RemainingDLCs.Clear(); // for display purposes only, otherwise ignorable
|
||||||
|
List<Task> appTasks = new();
|
||||||
foreach (Tuple<int, string, string, int, string> program in applicablePrograms)
|
foreach (Tuple<int, string, string, int, string> program in applicablePrograms)
|
||||||
{
|
{
|
||||||
int appId = program.Item1;
|
int appId = program.Item1;
|
||||||
|
@ -205,10 +206,10 @@ internal partial class SelectForm : CustomForm
|
||||||
ProgramSelection selection = ProgramSelection.FromAppId(appId);
|
ProgramSelection selection = ProgramSelection.FromAppId(appId);
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
if (Program.IsGameBlocked(name, directory)) continue;
|
if (Program.IsGameBlocked(name, directory)) continue;
|
||||||
RunningTasks.Add(Task.Run(async () =>
|
AddToRemainingGames(name);
|
||||||
|
Task task = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
AddToRemainingGames(name);
|
|
||||||
List<string> dllDirectories = await GetDllDirectoriesFromGameDirectory(directory);
|
List<string> dllDirectories = await GetDllDirectoriesFromGameDirectory(directory);
|
||||||
if (dllDirectories is null)
|
if (dllDirectories is null)
|
||||||
{
|
{
|
||||||
|
@ -231,10 +232,10 @@ internal partial class SelectForm : CustomForm
|
||||||
foreach (int id in dlcIds)
|
foreach (int id in dlcIds)
|
||||||
{
|
{
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
|
AddToRemainingDLCs(id.ToString());
|
||||||
Task task = Task.Run(async () =>
|
Task task = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
AddToRemainingDLCs(id.ToString());
|
|
||||||
string dlcName = null;
|
string dlcName = null;
|
||||||
VProperty dlcAppInfo = await SteamCMD.GetAppInfo(id);
|
VProperty dlcAppInfo = await SteamCMD.GetAppInfo(id);
|
||||||
if (dlcAppInfo is not null) dlcName = dlcAppInfo.Value?.GetChild("common")?.GetChild("name")?.ToString();
|
if (dlcAppInfo is not null) dlcName = dlcAppInfo.Value?.GetChild("common")?.GetChild("name")?.ToString();
|
||||||
|
@ -265,6 +266,11 @@ internal partial class SelectForm : CustomForm
|
||||||
RemoveFromRemainingGames(name);
|
RemoveFromRemainingGames(name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
foreach (Task task in dlcTasks)
|
||||||
|
{
|
||||||
|
if (Program.Canceled) return;
|
||||||
|
await task;
|
||||||
|
}
|
||||||
|
|
||||||
selection ??= new();
|
selection ??= new();
|
||||||
selection.Usable = true;
|
selection.Usable = true;
|
||||||
|
@ -284,11 +290,6 @@ internal partial class SelectForm : CustomForm
|
||||||
}
|
}
|
||||||
if (allCheckBox.Checked) selection.Enabled = true;
|
if (allCheckBox.Checked) selection.Enabled = true;
|
||||||
|
|
||||||
foreach (Task task in dlcTasks)
|
|
||||||
{
|
|
||||||
if (Program.Canceled) return;
|
|
||||||
await task;
|
|
||||||
}
|
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
Program.Invoke(selectionTreeView, delegate
|
Program.Invoke(selectionTreeView, delegate
|
||||||
{
|
{
|
||||||
|
@ -322,10 +323,12 @@ internal partial class SelectForm : CustomForm
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
RemoveFromRemainingGames(name);
|
RemoveFromRemainingGames(name);
|
||||||
progress.Report(++CompleteTasks);
|
progress.Report(++CompleteTasks);
|
||||||
}));
|
});
|
||||||
|
appTasks.Add(task);
|
||||||
|
RunningTasks.Add(task);
|
||||||
progress.Report(-RunningTasks.Count);
|
progress.Report(-RunningTasks.Count);
|
||||||
}
|
}
|
||||||
foreach (Task task in RunningTasks.ToList())
|
foreach (Task task in appTasks)
|
||||||
{
|
{
|
||||||
if (Program.Canceled) return;
|
if (Program.Canceled) return;
|
||||||
await task;
|
await task;
|
||||||
|
|
Loading…
Reference in a new issue