diff --git a/src/Starward.Core/HoYoPlay/GameId.cs b/src/Starward.Core/HoYoPlay/GameId.cs index 01d040a0b..471ef8a62 100644 --- a/src/Starward.Core/HoYoPlay/GameId.cs +++ b/src/Starward.Core/HoYoPlay/GameId.cs @@ -18,14 +18,25 @@ public class GameId : IEquatable public GameBiz ToGameBiz() { - if (Enum.TryParse(Biz, out var biz) && biz.ToGame() is not GameBiz.None) + GameBiz result = Id switch { - return biz; - } - else + "g0mMIvshDb" => GameBiz.bh3_jp, + "uxB4MC7nzC" => GameBiz.bh3_kr, + "bxPTXSET5t" => GameBiz.bh3_overseas, + "wkE5P5WsIf" => GameBiz.bh3_tw, + "T2S0Gz4Dr2" => GameBiz.hk4e_bilibili, + "EdtUqXfCHh" => GameBiz.hkrpg_bilibili, + "HXAFlmYa17" => GameBiz.nap_bilibili, + _ => GameBiz.None, + }; + if (result is GameBiz.None) { - return GameBiz.None; + if (Enum.TryParse(Biz, out var biz) && biz.ToGame() is not GameBiz.None) + { + result = biz; + } } + return result; } @@ -35,12 +46,16 @@ public GameBiz ToGameBiz() { GameBiz.bh3_cn => new GameId { Id = "osvnlOc0S8", Biz = "bh3_cn" }, GameBiz.bh3_global => new GameId { Id = "5TIVvvcwtM", Biz = "bh3_global" }, + GameBiz.bh3_jp => new GameId { Id = "g0mMIvshDb", Biz = "bh3_jp" }, + GameBiz.bh3_kr => new GameId { Id = "uxB4MC7nzC", Biz = "bh3_kr" }, + GameBiz.bh3_overseas => new GameId { Id = "bxPTXSET5t", Biz = "bh3_overseas" }, + GameBiz.bh3_tw => new GameId { Id = "wkE5P5WsIf", Biz = "bh3_tw" }, GameBiz.hk4e_cn => new GameId { Id = "1Z8W5NHUQb", Biz = "hk4e_cn" }, GameBiz.hk4e_global => new GameId { Id = "gopR6Cufr3", Biz = "hk4e_global" }, - GameBiz.hk4e_bilibili => new GameId { Id = "T2S0Gz4Dr2", Biz = "hk4e_cn" }, + GameBiz.hk4e_bilibili => new GameId { Id = "T2S0Gz4Dr2", Biz = "hk4e_bilibili" }, GameBiz.hkrpg_cn => new GameId { Id = "64kMb5iAWu", Biz = "hkrpg_cn" }, GameBiz.hkrpg_global => new GameId { Id = "4ziysqXOQ8", Biz = "hkrpg_global" }, - GameBiz.hkrpg_bilibili => new GameId { Id = "EdtUqXfCHh", Biz = "hkrpg_cn" }, + GameBiz.hkrpg_bilibili => new GameId { Id = "EdtUqXfCHh", Biz = "hkrpg_bilibili" }, GameBiz.nap_cn => new GameId { Id = "x6znKlJ0xK", Biz = "nap_cn" }, GameBiz.nap_global => new GameId { Id = "U5hbdsT9W7", Biz = "nap_global" }, GameBiz.nap_bilibili => new GameId { Id = "HXAFlmYa17", Biz = "nap_bilibili" }, diff --git a/src/Starward.Core/HoYoPlay/LauncherId.cs b/src/Starward.Core/HoYoPlay/LauncherId.cs index d924aa96a..56dff06fc 100644 --- a/src/Starward.Core/HoYoPlay/LauncherId.cs +++ b/src/Starward.Core/HoYoPlay/LauncherId.cs @@ -41,7 +41,7 @@ public static bool IsBilibili(string launcherId) return biz switch { GameBiz.hk4e_cn or GameBiz.hkrpg_cn or GameBiz.bh3_cn or GameBiz.nap_cn => ChinaOfficial, - GameBiz.hk4e_global or GameBiz.hkrpg_global or GameBiz.bh3_global or GameBiz.nap_global => GlobalOfficial, + GameBiz.hk4e_global or GameBiz.hkrpg_global or GameBiz.bh3_global or GameBiz.bh3_jp or GameBiz.bh3_kr or GameBiz.bh3_overseas or GameBiz.bh3_tw or GameBiz.nap_global => GlobalOfficial, GameBiz.hk4e_bilibili => BilibiliGenshin, GameBiz.hkrpg_bilibili => BilibiliStarRail, GameBiz.nap_bilibili => BilibiliZZZ, diff --git a/src/Starward/Services/Launcher/GameLauncherService.cs b/src/Starward/Services/Launcher/GameLauncherService.cs index 34c0c7d09..4d750002b 100644 --- a/src/Starward/Services/Launcher/GameLauncherService.cs +++ b/src/Starward/Services/Launcher/GameLauncherService.cs @@ -149,12 +149,7 @@ public GameLauncherService(ILogger logger, HoYoPlayService /// public async Task GetLatestGameVersionAsync(GameBiz gameBiz) { - if (gameBiz.IsGlobalOfficial() && gameBiz.ToGame() is GameBiz.Honkai3rd) - { - var resource = await _launcherClient.GetLauncherGameResourceAsync(gameBiz); - return TryParseVersion(resource.Game.Latest.Version); - } - else if (gameBiz.IsChinaOfficial() || gameBiz.IsGlobalOfficial() || gameBiz.IsBilibili()) + if (gameBiz.IsChinaOfficial() || gameBiz.IsGlobalOfficial() || gameBiz.IsBilibili()) { var package = await _hoYoPlayService.GetGamePackageAsync(gameBiz); return TryParseVersion(package.Main.Major?.Version); @@ -249,12 +244,7 @@ public GameLauncherService(ILogger logger, HoYoPlayService /// public async Task GetPreDownloadGameVersionAsync(GameBiz gameBiz) { - if (gameBiz.IsGlobalOfficial() && gameBiz.ToGame() is GameBiz.Honkai3rd) - { - var resource = await _launcherClient.GetLauncherGameResourceAsync(gameBiz); - return TryParseVersion(resource.PreDownloadGame?.Latest.Version); - } - else if (gameBiz.IsChinaOfficial() || gameBiz.IsGlobalOfficial() || gameBiz.IsBilibili()) + if (gameBiz.IsChinaOfficial() || gameBiz.IsGlobalOfficial() || gameBiz.IsBilibili()) { var package = await _hoYoPlayService.GetGamePackageAsync(gameBiz); return TryParseVersion(package.PreDownload?.Major?.Version); diff --git a/src/Starward/Services/Launcher/GamePackageService.cs b/src/Starward/Services/Launcher/GamePackageService.cs index c41d51e6e..3ddafbbd4 100644 --- a/src/Starward/Services/Launcher/GamePackageService.cs +++ b/src/Starward/Services/Launcher/GamePackageService.cs @@ -39,56 +39,7 @@ public GamePackageService(ILogger logger, LauncherClient lau public async Task GetGamePackageAsync(GameBiz biz) { - if (biz.ToGame() is GameBiz.Honkai3rd && biz.IsGlobalOfficial()) - { - var res = await _launcherClient.GetLauncherGameResourceAsync(biz); - var package = new GamePackage - { - Main = new GamePackageVersion - { - Patches = [], - }, - PreDownload = new GamePackageVersion - { - Major = null!, - Patches = [], - }, - }; - package.Main.Major = new GamePackageResource - { - Version = res.Game.Latest.Version, - ResListUrl = res.Game.Latest.DecompressedPath, - GamePackages = [new GamePackageFile - { - DecompressedSize = res.Game.Latest.Size, - Size = res.Game.Latest.PackageSize, - Url = res.Game.Latest.Path, - MD5 = res.Game.Latest.Md5, - }], - AudioPackages = [], - }; - if (res.PreDownloadGame is not null) - { - package.PreDownload.Major = new GamePackageResource - { - Version = res.PreDownloadGame.Latest.Version, - ResListUrl = res.PreDownloadGame.Latest.DecompressedPath, - GamePackages = [new GamePackageFile - { - DecompressedSize = res.PreDownloadGame.Latest.Size, - Size = res.PreDownloadGame.Latest.PackageSize, - Url = res.PreDownloadGame.Latest.Path, - MD5 = res.PreDownloadGame.Latest.Md5, - }], - AudioPackages = [], - }; - } - return package; - } - else - { - return await _hoYoPlayService.GetGamePackageAsync(biz); - } + return await _hoYoPlayService.GetGamePackageAsync(biz); } diff --git a/src/Starward/Services/Launcher/LauncherBackgroundService.cs b/src/Starward/Services/Launcher/LauncherBackgroundService.cs index 79cef6221..a5a8dd3f2 100644 --- a/src/Starward/Services/Launcher/LauncherBackgroundService.cs +++ b/src/Starward/Services/Launcher/LauncherBackgroundService.cs @@ -87,12 +87,7 @@ public LauncherBackgroundService(ILogger logger, HoYo public async Task GetBackgroundImageUrlAsync(GameBiz gameBiz, CancellationToken cancellationToken = default) { string? url; - if (gameBiz.ToGame() is GameBiz.Honkai3rd && gameBiz.IsGlobalServer()) - { - var content = await GetLauncherContentAsync(gameBiz, cancellationToken); - url = content.BackgroundImage?.Background; - } - else if (gameBiz is GameBiz.hk4e_cloud) + if (gameBiz is GameBiz.hk4e_cloud) { var background = await _hoYoPlayService.GetGameInfoAsync(GameBiz.hk4e_cn); url = background.Display.Background.Url;