Skip to content

Commit 9c1ba76

Browse files
committed
Fix HSR Game Repair still downloads blacklisted files
1 parent 8db7557 commit 9c1ba76

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

CollapseLauncher/Classes/GamePresetProperty.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ internal static GamePresetProperty Create(UIElement uiElementParent, ILauncherAp
6060
case GameNameType.StarRail:
6161
property.GameVersion = new GameTypeStarRailVersion(launcherApis, gamePreset);
6262
property.GameSettings = new StarRailSettings(property.GameVersion);
63-
property.GameCache = new StarRailCache(uiElementParent, property.GameVersion, property.GameSettings);
64-
property.GameRepair = new StarRailRepair(uiElementParent, property.GameVersion, property.GameSettings);
6563
property.GameInstall = new StarRailInstall(uiElementParent, property.GameVersion, property.GameSettings);
64+
property.GameCache = new StarRailCache(uiElementParent, property.GameVersion, property.GameSettings);
65+
property.GameRepair = new StarRailRepair(uiElementParent, property.GameVersion, property.GameInstall, property.GameSettings);
6666
break;
6767
case GameNameType.Genshin:
6868
property.GameVersion = new GameTypeGenshinVersion(launcherApis, gamePreset);

CollapseLauncher/Classes/InstallManagement/StarRail/StarRailInstall.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public override async ValueTask<int> StartPackageVerification(List<GameInstallPa
9393
protected override StarRailRepair GetGameRepairInstance(string? versionString) =>
9494
new StarRailRepair(ParentUI,
9595
GameVersionManager,
96+
this,
9697
GameSettings,
9798
true,
9899
versionString);
@@ -115,7 +116,7 @@ protected override async Task StartPackageInstallationInner(List<GameInstallPack
115116

116117
// Then start on processing hdifffiles list and deletefiles list
117118
await ApplyHdiffListPatch();
118-
await ApplyDeleteFileActionAsync(Token.Token);
119+
await ApplyDeleteFileActionAsync(Token!.Token);
119120

120121
// Update the audio lang list if not in isOnlyInstallPackage mode
121122
if (!isOnlyInstallPackage)

CollapseLauncher/Classes/RepairManagement/StarRail/StarRailRepair.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using CollapseLauncher.GameVersioning;
2+
using CollapseLauncher.InstallManager.StarRail;
23
using CollapseLauncher.Interfaces;
34
using Hi3Helper.Data;
45
using Hi3Helper.Shared.ClassStruct;
@@ -23,6 +24,7 @@ public override string GamePath
2324
}
2425

2526
private GameTypeStarRailVersion InnerGameVersionManager { get; }
27+
private StarRailInstall InnerGameInstaller { get; }
2628
private bool IsOnlyRecoverMain { get; }
2729
private List<FilePropertiesRemote> OriginAssetIndex { get; set; }
2830
private string ExecName { get; }
@@ -59,6 +61,7 @@ private string GameAudioLangListPath
5961
public StarRailRepair(
6062
UIElement parentUI,
6163
IGameVersion gameVersionManager,
64+
IGameInstallManager gameInstallManager,
6265
IGameSettings gameSettings,
6366
bool onlyRecoverMainAsset = false,
6467
string versionOverride = null)
@@ -71,6 +74,7 @@ public StarRailRepair(
7174
// Get flag to only recover main assets
7275
IsOnlyRecoverMain = onlyRecoverMainAsset;
7376
InnerGameVersionManager = gameVersionManager as GameTypeStarRailVersion;
77+
InnerGameInstaller = gameInstallManager as StarRailInstall;
7478
ExecName = Path.GetFileNameWithoutExtension(InnerGameVersionManager!.GamePreset.GameExecutableName);
7579
}
7680

@@ -105,15 +109,18 @@ private async Task<bool> CheckRoutine()
105109
ResetStatusAndProgress();
106110

107111
// Step 1: Fetch asset indexes
108-
await Fetch(AssetIndex, Token.Token);
112+
await Fetch(AssetIndex, Token!.Token);
109113

110-
// Step 2: Calculate the total size and count of the files
114+
// Step 2: Remove blacklisted files from asset index (borrow function from StarRailInstall)
115+
await InnerGameInstaller.FilterAssetList(AssetIndex, x => x.N, Token.Token);
116+
117+
// Step 3: Calculate the total size and count of the files
111118
CountAssetIndex(AssetIndex);
112119

113-
// Step 3: Check for the asset indexes integrity
120+
// Step 4: Check for the asset indexes integrity
114121
await Check(AssetIndex, Token.Token);
115122

116-
// Step 4: Summarize and returns true if the assetIndex count != 0 indicates broken file was found.
123+
// Step 5: Summarize and returns true if the assetIndex count != 0 indicates broken file was found.
117124
// either way, returns false.
118125
return SummarizeStatusAndProgress(
119126
AssetIndex,
@@ -124,7 +131,7 @@ private async Task<bool> CheckRoutine()
124131
private async Task<bool> RepairRoutine()
125132
{
126133
// Assign repair task
127-
Task<bool> repairTask = Repair(AssetIndex, Token.Token);
134+
Task<bool> repairTask = Repair(AssetIndex, Token!.Token);
128135

129136
// Run repair process
130137
bool repairTaskSuccess = await TryRunExamineThrow(repairTask);

0 commit comments

Comments
 (0)