From 4cb3d5f03f4f6336c9ba2d963ccc2c552838d03c Mon Sep 17 00:00:00 2001 From: Lightczx <1686188646@qq.com> Date: Thu, 2 Nov 2023 14:23:34 +0800 Subject: [PATCH] launch scheme renewed --- .../Service/Game/KnownLaunchSchemes.cs | 52 ++++++ .../Service/Game/LaunchScheme.KnownSchemes.cs | 160 ------------------ .../Snap.Hutao/Service/Game/LaunchScheme.cs | 14 +- .../Service/Game/LaunchSchemeBilibili.cs | 22 +++ .../Service/Game/LaunchSchemeChinese.cs | 22 +++ .../Service/Game/LaunchSchemeOversea.cs | 22 +++ .../ViewModel/Game/LaunchGameViewModel.cs | 2 +- 7 files changed, 126 insertions(+), 168 deletions(-) create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Game/KnownLaunchSchemes.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.KnownSchemes.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeBilibili.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeChinese.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeOversea.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/KnownLaunchSchemes.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/KnownLaunchSchemes.cs new file mode 100644 index 00000000..16fac365 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/KnownLaunchSchemes.cs @@ -0,0 +1,52 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; + +namespace Snap.Hutao.Service.Game; + +internal static class KnownLaunchSchemes +{ + private static readonly LaunchScheme ServerChineseChannelDefaultSubChannelDefaultCompat = new LaunchSchemeChinese(ChannelType.Default, SubChannelType.Default, false); + private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelDefault = new LaunchSchemeChinese(ChannelType.Official, SubChannelType.Default); + private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelOfficial = new LaunchSchemeChinese(ChannelType.Official, SubChannelType.Official); + private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelNoTapTap = new LaunchSchemeChinese(ChannelType.Official, SubChannelType.NoTapTap); + private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelEpicCompat = new LaunchSchemeChinese(ChannelType.Official, SubChannelType.Epic, false); + + private static readonly LaunchScheme ServerChineseChannelBilibiliSubChannelDefault = new LaunchSchemeBilibili(SubChannelType.Default); + private static readonly LaunchScheme ServerChineseChannelBilibiliSubChannelOfficialCompat = new LaunchSchemeBilibili(SubChannelType.Official, false); + + private static readonly LaunchScheme ServerGlobalChannelDefaultSubChannelDefaultCompat = new LaunchSchemeOversea(ChannelType.Default, SubChannelType.Default, false); + private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelDefault = new LaunchSchemeOversea(ChannelType.Official, SubChannelType.Default); + private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelOfficial = new LaunchSchemeOversea(ChannelType.Official, SubChannelType.Official); + private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelEpic = new LaunchSchemeOversea(ChannelType.Official, SubChannelType.Epic); + private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelGoogle = new LaunchSchemeOversea(ChannelType.Official, SubChannelType.Google); + + /// + /// 获取已知的启动方案 + /// + /// 已知的启动方案 + public static List Get() + { + return new List() + { + // 官服 + ServerChineseChannelDefaultSubChannelDefaultCompat, + ServerChineseChannelOfficialSubChannelDefault, + ServerChineseChannelOfficialSubChannelOfficial, + ServerChineseChannelOfficialSubChannelNoTapTap, + ServerChineseChannelOfficialSubChannelEpicCompat, + + // 渠道服 + ServerChineseChannelBilibiliSubChannelDefault, + ServerChineseChannelBilibiliSubChannelOfficialCompat, + + // 国际服 + ServerGlobalChannelDefaultSubChannelDefaultCompat, + ServerGlobalChannelOfficialSubChannelDefault, + ServerGlobalChannelOfficialSubChannelOfficial, + ServerGlobalChannelOfficialSubChannelEpic, + ServerGlobalChannelOfficialSubChannelGoogle, + }; + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.KnownSchemes.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.KnownSchemes.cs deleted file mode 100644 index 338b3989..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.KnownSchemes.cs +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Model.Intrinsic; - -namespace Snap.Hutao.Service.Game; - -/// -/// 方案列表部分 -/// -internal sealed partial class LaunchScheme -{ - private const int SdkStaticLauncherChineseId = 18; - private const int SdkStaticLauncherBilibiliId = 17; - private const int SdkStaticLauncherGlobalId = 10; - - private const string SdkStaticLauncherChineseKey = "eYd89JmJ"; - private const string SdkStaticLauncherBilibiliKey = "KAtdSsoQ"; - private const string SdkStaticLauncherGlobalKey = "gcStgarh"; - - private static readonly LaunchScheme ServerChineseChannelDefaultSubChannelDefaultCompatOnly = new() - { - LauncherId = SdkStaticLauncherChineseId, - Key = SdkStaticLauncherChineseKey, - Channel = ChannelType.Default, - SubChannel = SubChannelType.Default, - IsOversea = false, - IsNotCompatOnly = false, - }; - - private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelDefault = new() - { - LauncherId = SdkStaticLauncherChineseId, - Key = SdkStaticLauncherChineseKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Default, - IsOversea = false, - }; - - private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelOfficial = new() - { - LauncherId = SdkStaticLauncherChineseId, - Key = SdkStaticLauncherChineseKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Official, - IsOversea = false, - }; - - private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelNoTapTap = new() - { - LauncherId = SdkStaticLauncherChineseId, - Key = SdkStaticLauncherChineseKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.NoTapTap, - IsOversea = false, - }; - - private static readonly LaunchScheme ServerChineseChannelOfficialSubChannelEpicCompatOnly = new() - { - LauncherId = SdkStaticLauncherChineseId, - Key = SdkStaticLauncherChineseKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Epic, - IsOversea = false, - IsNotCompatOnly = false, - }; - - private static readonly LaunchScheme ServerChineseChannelBilibiliSubChannelDefault = new() - { - LauncherId = SdkStaticLauncherBilibiliId, - Key = SdkStaticLauncherBilibiliKey, - Channel = ChannelType.Bili, - SubChannel = SubChannelType.Default, - IsOversea = false, - }; - - private static readonly LaunchScheme ServerChineseChannelBilibiliSubChannelOfficialCompatOnly = new() - { - LauncherId = SdkStaticLauncherBilibiliId, - Key = SdkStaticLauncherBilibiliKey, - Channel = ChannelType.Bili, - SubChannel = SubChannelType.Official, - IsOversea = false, - IsNotCompatOnly = false, - }; - - private static readonly LaunchScheme ServerGlobalChannelDefaultSubChannelDefaultCompatOnly = new() - { - LauncherId = SdkStaticLauncherGlobalId, - Key = SdkStaticLauncherGlobalKey, - Channel = ChannelType.Default, - SubChannel = SubChannelType.Default, - IsOversea = true, - IsNotCompatOnly = false, - }; - - private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelDefault = new() - { - LauncherId = SdkStaticLauncherGlobalId, - Key = SdkStaticLauncherGlobalKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Default, - IsOversea = true, - }; - - private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelOfficial = new() - { - LauncherId = SdkStaticLauncherGlobalId, - Key = SdkStaticLauncherGlobalKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Official, - IsOversea = true, - }; - - private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelEpic = new() - { - LauncherId = SdkStaticLauncherGlobalId, - Key = SdkStaticLauncherGlobalKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Epic, - IsOversea = true, - }; - - private static readonly LaunchScheme ServerGlobalChannelOfficialSubChannelGoogle = new() - { - LauncherId = SdkStaticLauncherGlobalId, - Key = SdkStaticLauncherGlobalKey, - Channel = ChannelType.Official, - SubChannel = SubChannelType.Google, - IsOversea = true, - }; - - /// - /// 获取已知的启动方案 - /// - /// 已知的启动方案 - public static List GetKnownSchemes() - { - return new List() - { - // 官服 - ServerChineseChannelDefaultSubChannelDefaultCompatOnly, - ServerChineseChannelOfficialSubChannelDefault, - ServerChineseChannelOfficialSubChannelOfficial, - ServerChineseChannelOfficialSubChannelNoTapTap, - ServerChineseChannelOfficialSubChannelEpicCompatOnly, - - // 渠道服 - ServerChineseChannelBilibiliSubChannelDefault, - ServerChineseChannelBilibiliSubChannelOfficialCompatOnly, - - // 国际服 - ServerGlobalChannelDefaultSubChannelDefaultCompatOnly, - ServerGlobalChannelOfficialSubChannelDefault, - ServerGlobalChannelOfficialSubChannelOfficial, - ServerGlobalChannelOfficialSubChannelEpic, - ServerGlobalChannelOfficialSubChannelGoogle, - }; - } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.cs index 523e0de6..5aeede35 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchScheme.cs @@ -9,7 +9,7 @@ namespace Snap.Hutao.Service.Game; /// 启动方案 /// [HighQuality] -internal sealed partial class LaunchScheme +internal partial class LaunchScheme { /// /// 显示名称 @@ -32,29 +32,29 @@ internal sealed partial class LaunchScheme /// /// 通道 /// - public ChannelType Channel { get; private set; } + public ChannelType Channel { get; private protected set; } /// /// 子通道 /// - public SubChannelType SubChannel { get; private set; } + public SubChannelType SubChannel { get; private protected set; } /// /// 启动器 Id /// - public int LauncherId { get; private set; } + public int LauncherId { get; private protected set; } /// /// API Key /// - public string Key { get; private set; } = default!; + public string Key { get; private protected set; } = default!; /// /// 是否为海外 /// - public bool IsOversea { get; private set; } + public bool IsOversea { get; private protected set; } - public bool IsNotCompatOnly { get; private set; } = true; + public bool IsNotCompatOnly { get; private protected set; } = true; /// /// 多通道相等 diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeBilibili.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeBilibili.cs new file mode 100644 index 00000000..cd5057be --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeBilibili.cs @@ -0,0 +1,22 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; + +namespace Snap.Hutao.Service.Game; + +internal sealed class LaunchSchemeBilibili : LaunchScheme +{ + private const int SdkStaticLauncherBilibiliId = 17; + private const string SdkStaticLauncherBilibiliKey = "KAtdSsoQ"; + + public LaunchSchemeBilibili(SubChannelType subChannel, bool isNotCompatOnly = true) + { + LauncherId = SdkStaticLauncherBilibiliId; + Key = SdkStaticLauncherBilibiliKey; + Channel = ChannelType.Bili; + SubChannel = subChannel; + IsOversea = false; + IsNotCompatOnly = isNotCompatOnly; + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeChinese.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeChinese.cs new file mode 100644 index 00000000..1e8f0e9f --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeChinese.cs @@ -0,0 +1,22 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; + +namespace Snap.Hutao.Service.Game; + +internal sealed class LaunchSchemeChinese : LaunchScheme +{ + private const int SdkStaticLauncherChineseId = 18; + private const string SdkStaticLauncherChineseKey = "eYd89JmJ"; + + public LaunchSchemeChinese(ChannelType channel, SubChannelType subChannel, bool isNotCompatOnly = true) + { + LauncherId = SdkStaticLauncherChineseId; + Key = SdkStaticLauncherChineseKey; + Channel = channel; + SubChannel = subChannel; + IsOversea = false; + IsNotCompatOnly = isNotCompatOnly; + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeOversea.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeOversea.cs new file mode 100644 index 00000000..2838d82e --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/LaunchSchemeOversea.cs @@ -0,0 +1,22 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Model.Intrinsic; + +namespace Snap.Hutao.Service.Game; + +internal sealed class LaunchSchemeOversea : LaunchScheme +{ + private const int SdkStaticLauncherOverseaId = 10; + private const string SdkStaticLauncherOverseaKey = "gcStgarh"; + + public LaunchSchemeOversea(ChannelType channel, SubChannelType subChannel, bool isNotCompatOnly = true) + { + LauncherId = SdkStaticLauncherOverseaId; + Key = SdkStaticLauncherOverseaKey; + Channel = channel; + SubChannel = subChannel; + IsOversea = true; + IsNotCompatOnly = isNotCompatOnly; + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs index 4badbf36..24dc9524 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/LaunchGameViewModel.cs @@ -55,7 +55,7 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel /// 已知的服务器方案 /// [SuppressMessage("", "CA1822")] - public List KnownSchemes { get => LaunchScheme.GetKnownSchemes(); } + public List KnownSchemes { get => KnownLaunchSchemes.Get(); } /// /// 当前选择的服务器方案