Skip to content

Commit

Permalink
adapt honkai 3rd to hoyoplay api
Browse files Browse the repository at this point in the history
  • Loading branch information
Scighost committed Nov 30, 2024
1 parent bb3c501 commit f14d759
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 76 deletions.
29 changes: 22 additions & 7 deletions src/Starward.Core/HoYoPlay/GameId.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,25 @@ public class GameId : IEquatable<GameId>

public GameBiz ToGameBiz()
{
if (Enum.TryParse<GameBiz>(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<GameBiz>(Biz, out var biz) && biz.ToGame() is not GameBiz.None)
{
result = biz;
}
}
return result;
}


Expand All @@ -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" },
Expand Down
2 changes: 1 addition & 1 deletion src/Starward.Core/HoYoPlay/LauncherId.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
14 changes: 2 additions & 12 deletions src/Starward/Services/Launcher/GameLauncherService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,7 @@ public GameLauncherService(ILogger<GameLauncherService> logger, HoYoPlayService
/// <returns></returns>
public async Task<Version?> 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);
Expand Down Expand Up @@ -249,12 +244,7 @@ public GameLauncherService(ILogger<GameLauncherService> logger, HoYoPlayService
/// <returns></returns>
public async Task<Version?> 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);
Expand Down
51 changes: 1 addition & 50 deletions src/Starward/Services/Launcher/GamePackageService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,56 +39,7 @@ public GamePackageService(ILogger<GamePackageService> logger, LauncherClient lau

public async Task<GamePackage> 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);
}


Expand Down
7 changes: 1 addition & 6 deletions src/Starward/Services/Launcher/LauncherBackgroundService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,7 @@ public LauncherBackgroundService(ILogger<LauncherBackgroundService> logger, HoYo
public async Task<string?> 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;
Expand Down

0 comments on commit f14d759

Please sign in to comment.