From c2e7c09a25e5162e676a8c824e04205dd8c8af54 Mon Sep 17 00:00:00 2001
From: Scighost <scighost@outlook.com>
Date: Sat, 16 Nov 2024 15:06:25 +0800
Subject: [PATCH] hoyoplay game server config

---
 src/Starward.Core/HoYoPlay/GameId.cs   |  6 ++-
 src/Starward.Core/HoYoPlay/GameInfo.cs | 57 ++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/src/Starward.Core/HoYoPlay/GameId.cs b/src/Starward.Core/HoYoPlay/GameId.cs
index 469b9fff4..509c4444c 100644
--- a/src/Starward.Core/HoYoPlay/GameId.cs
+++ b/src/Starward.Core/HoYoPlay/GameId.cs
@@ -24,6 +24,10 @@ public class GameId : IEquatable<GameId>
         {
             GameBiz.bh3_cn => new GameId { Id = "osvnlOc0S8", GameBiz = "bh3_cn" },
             GameBiz.bh3_global => new GameId { Id = "5TIVvvcwtM", GameBiz = "bh3_global" },
+            GameBiz.bh3_jp => new GameId { Id = "g0mMIvshDb", GameBiz = "bh3_global" },
+            GameBiz.bh3_kr => new GameId { Id = "uxB4MC7nzC", GameBiz = "bh3_global" },
+            GameBiz.bh3_os => new GameId { Id = "bxPTXSET5t", GameBiz = "bh3_global" },
+            GameBiz.bh3_asia => new GameId { Id = "wkE5P5WsIf", GameBiz = "bh3_global" },
             GameBiz.hk4e_cn => new GameId { Id = "1Z8W5NHUQb", GameBiz = "hk4e_cn" },
             GameBiz.hk4e_global => new GameId { Id = "gopR6Cufr3", GameBiz = "hk4e_global" },
             GameBiz.hk4e_bilibili => new GameId { Id = "T2S0Gz4Dr2", GameBiz = "hk4e_cn" },
@@ -32,7 +36,7 @@ public class GameId : IEquatable<GameId>
             GameBiz.hkrpg_bilibili => new GameId { Id = "EdtUqXfCHh", GameBiz = "hkrpg_cn" },
             GameBiz.nap_cn => new GameId { Id = "x6znKlJ0xK", GameBiz = "nap_cn" },
             GameBiz.nap_global => new GameId { Id = "U5hbdsT9W7", GameBiz = "nap_global" },
-            GameBiz.nap_bilibili => new GameId { Id = "HXAFlmYa17", GameBiz = "nap_bilibili" },
+            GameBiz.nap_bilibili => new GameId { Id = "HXAFlmYa17", GameBiz = "nap_cn" },
             _ => null,
         };
     }
diff --git a/src/Starward.Core/HoYoPlay/GameInfo.cs b/src/Starward.Core/HoYoPlay/GameInfo.cs
index ff951889b..df42fc4a1 100644
--- a/src/Starward.Core/HoYoPlay/GameInfo.cs
+++ b/src/Starward.Core/HoYoPlay/GameInfo.cs
@@ -28,6 +28,11 @@ public class GameInfo : GameId
     [JsonPropertyName("display_status")]
     public string DisplayStatus { get; set; }
 
+    /// <summary>
+    /// 服务器信息,暂时仅崩坏三国际服在使用
+    /// </summary>
+    [JsonPropertyName("game_server_configs")]
+    public List<GameServerConfig> GameServerConfigs { get; set; }
 
 }
 
@@ -103,4 +108,56 @@ public abstract class GameInfoDisplayStatus
     public const string LAUNCHER_GAME_DISPLAY_STATUS_COMING_SOON = "LAUNCHER_GAME_DISPLAY_STATUS_COMING_SOON";
 
     public const string LAUNCHER_GAME_DISPLAY_STATUS_RESERVATION_ENABLED = "LAUNCHER_GAME_DISPLAY_STATUS_RESERVATION_ENABLED";
+}
+
+
+
+public class GameServerConfig
+{
+
+    /// <summary>
+    /// 游戏本地化名称
+    /// </summary>
+    [JsonPropertyName("i18n_name")]
+    public string I18nName { get; set; }
+
+    /// <summary>
+    /// 游戏服务器本地化名称
+    /// </summary>
+    [JsonPropertyName("i18n_description")]
+    public string I18nDescription { get; set; }
+
+    /// <summary>
+    /// 服务器id
+    /// </summary>
+    [JsonPropertyName("package_name")]
+    public string PackageName { get; set; }
+
+    /// <summary>
+    /// 注册表key
+    /// </summary>
+    [JsonPropertyName("auto_scan_registry_key")]
+    public string AutoScanRegistryKey { get; set; }
+
+    /// <summary>
+    /// 服务器id
+    /// </summary>
+    [JsonPropertyName("package_detection_info")]
+    public string PackageDetectionInfo { get; set; }
+
+    [JsonPropertyName("game_id")]
+    public string GameId { get; set; }
+
+    /// <summary>
+    /// 预约链接
+    /// </summary>
+    [JsonPropertyName("reservation")]
+    public GameInfoReservation? Reservation { get; set; }
+
+    /// <summary>
+    /// <see cref="GameInfoDisplayStatus"/>
+    /// </summary>
+    [JsonPropertyName("display_status")]
+    public string DisplayStatus { get; set; }
+
 }
\ No newline at end of file