feat(star-rail): improved update pre-download state implementation
This commit is contained in:
parent
2740eae5b5
commit
69ec45d5a4
2 changed files with 24 additions and 16 deletions
|
@ -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
|
||||||
|
|
|
@ -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)),
|
||||||
|
|
Loading…
Reference in a new issue