feat(star-rail): improved update pre-download state implementation

This commit is contained in:
Observer KRypt0n_ 2023-07-17 21:34:33 +02:00
parent 2740eae5b5
commit 69ec45d5a4
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
2 changed files with 24 additions and 16 deletions

View file

@ -9,7 +9,7 @@ edition = "2021"
[dependencies.anime-game-core] [dependencies.anime-game-core]
git = "https://github.com/an-anime-team/anime-game-core" git = "https://github.com/an-anime-team/anime-game-core"
tag = "1.13.2" tag = "1.13.3"
features = ["all"] features = ["all"]
# path = "../anime-game-core" # ! for dev purposes only # path = "../anime-game-core" # ! for dev purposes only

View file

@ -25,7 +25,10 @@ pub enum LauncherState {
PrefixNotExists, PrefixNotExists,
/// Always contains `VersionDiff::Predownload` /// Always contains `VersionDiff::Predownload`
PredownloadAvailable(VersionDiff), PredownloadAvailable {
diff: VersionDiff,
patch: JadeitePatchStatusVariant
},
// Always contains `VersionDiff::Diff` // Always contains `VersionDiff::Diff`
GameUpdateAvailable(VersionDiff), GameUpdateAvailable(VersionDiff),
@ -101,24 +104,29 @@ impl LauncherState {
return Ok(Self::TelemetryNotDisabled); return Ok(Self::TelemetryNotDisabled);
} }
match jadeite::get_metadata()?.hsr.for_edition(params.game_edition).get_status(version) { // Request current patch status from the metadata file
JadeitePatchStatusVariant::Verified => { let patch = jadeite::get_metadata()?.games.hsr
.for_edition(params.game_edition)
.get_status(version);
// Check if update predownload available // Check if update predownload available
if let VersionDiff::Predownload { .. } = diff { if let VersionDiff::Predownload { .. } = diff {
Ok(Self::PredownloadAvailable(diff)) Ok(Self::PredownloadAvailable {
diff,
patch
})
} }
// Otherwise we can launch the game // Otherwise we can launch the game or say that the patch is unstable
else { else {
Ok(Self::Launch) match patch {
} JadeitePatchStatusVariant::Verified => Ok(Self::Launch),
}
JadeitePatchStatusVariant::Unverified => Ok(Self::PatchNotVerified), JadeitePatchStatusVariant::Unverified => Ok(Self::PatchNotVerified),
JadeitePatchStatusVariant::Broken => Ok(Self::PatchBroken), JadeitePatchStatusVariant::Broken => Ok(Self::PatchBroken),
JadeitePatchStatusVariant::Unsafe => Ok(Self::PatchUnsafe) JadeitePatchStatusVariant::Unsafe => Ok(Self::PatchUnsafe)
} }
} }
}
VersionDiff::Diff { .. } => Ok(Self::GameUpdateAvailable(diff)), VersionDiff::Diff { .. } => Ok(Self::GameUpdateAvailable(diff)),
VersionDiff::Outdated { .. } => Ok(Self::GameOutdated(diff)), VersionDiff::Outdated { .. } => Ok(Self::GameOutdated(diff)),