Redownload asset index when install new game

This commit is contained in:
huanghongxun 2019-02-08 15:54:28 +08:00
parent 62c38482f6
commit f0c7f54cc6
4 changed files with 8 additions and 7 deletions

View File

@ -81,8 +81,7 @@ public class Versions {
public static void updateGameAssets(Profile profile, String version) { public static void updateGameAssets(Profile profile, String version) {
Version resolvedVersion = profile.getRepository().getResolvedVersion(version); Version resolvedVersion = profile.getRepository().getResolvedVersion(version);
TaskExecutor executor = new GameAssetIndexDownloadTask(profile.getDependency(), resolvedVersion) TaskExecutor executor = new GameAssetDownloadTask(profile.getDependency(), resolvedVersion, GameAssetDownloadTask.DOWNLOAD_INDEX_FORCIBLY)
.then(new GameAssetDownloadTask(profile.getDependency(), resolvedVersion))
.executor(); .executor();
Controllers.taskDialog(executor, i18n("version.manage.redownload_assets_index")); Controllers.taskDialog(executor, i18n("version.manage.redownload_assets_index"));
executor.start(); executor.start();

View File

@ -74,7 +74,7 @@ public class DefaultDependencyManager extends AbstractDependencyManager {
@Override @Override
public Task checkGameCompletionAsync(Version version) { public Task checkGameCompletionAsync(Version version) {
return new ParallelTask( return new ParallelTask(
new GameAssetDownloadTask(this, version), new GameAssetDownloadTask(this, version, GameAssetDownloadTask.DOWNLOAD_INDEX_IF_NECESSARY),
new GameLibrariesTask(this, version) new GameLibrariesTask(this, version)
); );
} }

View File

@ -54,7 +54,7 @@ public class DefaultGameBuilder extends GameBuilder {
version = version.setId(name).setJar(null); version = version.setId(name).setJar(null);
variables.set("version", version); variables.set("version", version);
Task result = downloadGameAsync(gameVersion, version).then(new ParallelTask( Task result = downloadGameAsync(gameVersion, version).then(new ParallelTask(
new GameAssetDownloadTask(dependencyManager, version), new GameAssetDownloadTask(dependencyManager, version, GameAssetDownloadTask.DOWNLOAD_INDEX_FORCIBLY),
new GameLibrariesTask(dependencyManager, version) // Game libraries will be downloaded for multiple times partly, this time is for vanilla libraries. new GameLibrariesTask(dependencyManager, version) // Game libraries will be downloaded for multiple times partly, this time is for vanilla libraries.
).with(new VersionJsonSaveTask(dependencyManager.getGameRepository(), version))); // using [with] because download failure here are tolerant. ).with(new VersionJsonSaveTask(dependencyManager.getGameRepository(), version))); // using [with] because download failure here are tolerant.

View File

@ -53,13 +53,13 @@ public final class GameAssetDownloadTask extends Task {
* @param dependencyManager the dependency manager that can provides {@link org.jackhuang.hmcl.game.GameRepository} * @param dependencyManager the dependency manager that can provides {@link org.jackhuang.hmcl.game.GameRepository}
* @param version the <b>resolved</b> version * @param version the <b>resolved</b> version
*/ */
public GameAssetDownloadTask(AbstractDependencyManager dependencyManager, Version version) { public GameAssetDownloadTask(AbstractDependencyManager dependencyManager, Version version, boolean forceDownloadingIndex) {
this.dependencyManager = dependencyManager; this.dependencyManager = dependencyManager;
this.version = version; this.version = version;
this.assetIndexInfo = version.getAssetIndex(); this.assetIndexInfo = version.getAssetIndex();
this.assetIndexFile = dependencyManager.getGameRepository().getIndexFile(version.getId(), assetIndexInfo.getId()); this.assetIndexFile = dependencyManager.getGameRepository().getIndexFile(version.getId(), assetIndexInfo.getId());
if (!assetIndexFile.exists()) if (!assetIndexFile.exists() || forceDownloadingIndex)
dependents.add(new GameAssetIndexDownloadTask(dependencyManager, version)); dependents.add(new GameAssetIndexDownloadTask(dependencyManager, version));
} }
@ -100,4 +100,6 @@ public final class GameAssetDownloadTask extends Task {
} }
} }
public static final boolean DOWNLOAD_INDEX_FORCIBLY = true;
public static final boolean DOWNLOAD_INDEX_IF_NECESSARY = false;
} }