diff --git a/Plain Craft Launcher 2/Application.xaml.cs b/Plain Craft Launcher 2/Application.xaml.cs
index 3d9d10035..c72dee976 100644
--- a/Plain Craft Launcher 2/Application.xaml.cs
+++ b/Plain Craft Launcher 2/Application.xaml.cs
@@ -102,14 +102,14 @@ private void Application_Startup() // (sender As Object, e As StartupEventArgs)
Lang.Text("Application.EnvironmentWarning.IKnow"),
IsWarn: true);
// 设置初始化
- ModBase.Setup.Load("SystemDebugMode");
- ModBase.Setup.Load("SystemDebugAnim");
- ModBase.Setup.Load("SystemHttpProxy");
- ModBase.Setup.Load("SystemHttpProxyCustomUsername");
- ModBase.Setup.Load("SystemHttpProxyType");
- ModBase.Setup.Load("ToolDownloadThread");
- ModBase.Setup.Load("ToolDownloadSpeed");
- ModBase.Setup.Load("UiFont");
+ _ = Config.Debug.Enabled;
+ _ = Config.Debug.AnimationSpeed;
+ _ = Config.Network.HttpProxy.CustomAddress;
+ _ = Config.Network.HttpProxy.CustomUsername;
+ _ = Config.Network.HttpProxy.Type;
+ _ = Config.Download.ThreadLimit;
+ _ = Config.Download.SpeedLimit;
+ _ = Config.Preference.Font;
var updateBranchCfg = Config.Update.UpdateChannelConfig;
if (updateBranchCfg.IsDefault())
updateBranchCfg.SetValue(ModBase.VersionBaseName.Contains("beta")
diff --git a/Plain Craft Launcher 2/Controls/MyHint.xaml.cs b/Plain Craft Launcher 2/Controls/MyHint.xaml.cs
index fccf18002..676516049 100644
--- a/Plain Craft Launcher 2/Controls/MyHint.xaml.cs
+++ b/Plain Craft Launcher 2/Controls/MyHint.xaml.cs
@@ -2,8 +2,8 @@
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Markup;
-
using PCL.Core.App;
+using PCL.Core.App.Configuration;
using PCL.Core.UI.Theme;
using System.Windows.Controls;
@@ -135,13 +135,14 @@ private void UpdateUI()
private void MyHint_Loaded(object sender, RoutedEventArgs e)
{
ThemeService.ColorModeChanged += (v, theme) => _ThemeChanged(v, theme);
- if (CanClose && ModBase.Setup.Get(RelativeSetup) != null)
+ if (CanClose && ConfigService.TryGetConfigItemNoType(RelativeSetup, out var item) && item.GetValueNoType() != null)
Visibility = Visibility.Collapsed;
}
private void BtnClose_Click(object sender, EventArgs e)
{
- ModBase.Setup.Set(RelativeSetup, true);
+ if (ConfigService.TryGetConfigItemNoType(RelativeSetup, out var item))
+ item.SetValueNoType(true);
ModAnimation.AniDispose(this, false);
}
diff --git a/Plain Craft Launcher 2/FormMain.xaml.cs b/Plain Craft Launcher 2/FormMain.xaml.cs
index 02791518c..4de0f6ed7 100644
--- a/Plain Craft Launcher 2/FormMain.xaml.cs
+++ b/Plain Craft Launcher 2/FormMain.xaml.cs
@@ -86,18 +86,13 @@ public FormMain()
// 触发降级
DowngradeSub(LastVersion);
// 版本隔离设置迁移
- if (ModBase.Setup.IsUnset("LaunchArgumentIndieV2"))
+ if (Config.Launch.IndieSolutionV2Config.IsDefault())
{
- if (!ModBase.Setup.IsUnset("LaunchArgumentIndie"))
+ if (!Config.Launch.IndieSolutionV1Config.IsDefault())
{
ModBase.Log("[Start] 从老 PCL 迁移版本隔离");
Config.Launch.IndieSolutionV2 = Config.Launch.IndieSolutionV1;
}
- else if (!ModBase.Setup.IsUnset("WindowHeight"))
- {
- ModBase.Log("[Start] 从老 PCL 升级,但此前未调整版本隔离,使用老的版本隔离默认值");
- Config.Launch.IndieSolutionV2Config.Reset(Config.Launch.IndieSolutionV1Config.DefaultValue);
- }
else
{
ModBase.Log("[Start] 全新的 PCL,使用新的版本隔离默认值");
@@ -105,7 +100,7 @@ public FormMain()
}
}
- ModBase.Setup.Load("UiLauncherTheme");
+ _ = Config.Preference.Theme.ThemeSelected;
// 注册拖拽事件(不能直接加 Handles,否则没用;#6340)
AddHandler(DragDrop.DragEnterEvent, new DragEventHandler(HandleDrag), true);
AddHandler(DragDrop.DragOverEvent, new DragEventHandler(HandleDrag), true);
@@ -169,11 +164,14 @@ private void FormMain_Loaded() // (sender As Object, e As RoutedEventArgs) Handl
ModBase.ApplicationStartTick = TimeUtils.GetTimeTick();
ModBase.FrmHandle = new WindowInteropHelper(this).Handle;
// 读取设置
- ModBase.Setup.Load("UiBackgroundOpacity");
- ModBase.Setup.Load("UiBackgroundBlur");
- ModBase.Setup.Load("UiLogoType");
- ModBase.Setup.Load("UiHiddenPageDownload");
- ModBase.Setup.Load("UiAutoPauseVideo"); // 智能暂停视频背景
+ _ = Config.Preference.Background.WallpaperOpacity;
+ _ = Config.Preference.Background.WallpaperBlurRadius;
+ _ = Config.Preference.WindowTitleType;
+ _ = Config.Preference.Hide.PageDownload;
+ _ = Config.Preference.Background.AutoPauseVideo; // 智能暂停视频背景
+ ModSetup.UiLogoType((int)Config.Preference.WindowTitleType);
+ ModSetup.UiLogoText(Config.Preference.WindowTitleCustomText);
+ ModSetup.UiLogoLeft(Config.Preference.TopBarLeftAlign);
PageSetupUI.HiddenRefresh();
PageSetupUI.BackgroundRefresh(false, true);
ModMusic.MusicRefreshPlay(false, true);
@@ -375,7 +373,7 @@ private void UpgradeSub(int LastVersionCode)
// 迁移旧版用户档案
if (LastVersionCode <= 368) ModBase.RunInNewThread(() => ModProfile.MigrateOldProfile());
// Mod 命名设置迁移
- if (!ModBase.Setup.IsUnset("ToolDownloadTranslate") && ModBase.Setup.IsUnset("ToolDownloadTranslateV2"))
+ if (!Config.Download.Comp.NameFormatV1Config.IsDefault() && Config.Download.Comp.NameFormatV2Config.IsDefault())
{
Config.Download.Comp.NameFormatV2 += 1;
ModBase.Log("[Start] 已从老版本迁移 Mod 命名设置");
diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.cs b/Plain Craft Launcher 2/Modules/Base/ModBase.cs
index 9a3de4f68..e81c2d6c6 100644
--- a/Plain Craft Launcher 2/Modules/Base/ModBase.cs
+++ b/Plain Craft Launcher 2/Modules/Base/ModBase.cs
@@ -69,7 +69,7 @@ public static class ModBase
///
/// 程序可执行文件所在目录,以“\”结尾。
///
- public static readonly string ExePath = Conversions.ToString(Basics.ExecutableDirectory.EndsWith(@"\")
+ public static readonly string ExePath = (Basics.ExecutableDirectory.EndsWith(@"\")
? Basics.ExecutableDirectory
: Basics.ExecutableDirectory + @"\");
diff --git a/Plain Craft Launcher 2/Modules/Base/ModSetup.cs b/Plain Craft Launcher 2/Modules/Base/ModSetup.cs
index 0c9984994..4abc25583 100644
--- a/Plain Craft Launcher 2/Modules/Base/ModSetup.cs
+++ b/Plain Craft Launcher 2/Modules/Base/ModSetup.cs
@@ -76,78 +76,6 @@ private static ConfigItem GetConfigItem(string key)
return result ? item! : throw new KeyNotFoundException($"配置项 '{key}' 不存在");
}
- ///
- /// 改变某个设置项的值。
- ///
- public void Set(string key, object value, bool forceReload = false, ModMinecraft.McInstance? instance = null)
- {
- GetConfigItem(key).SetValueNoType(value, instance?.PathInstance);
- }
-
- ///
- /// 应用某个设置项的值。
- ///
- public object Load(string key, bool forceReload = false, ModMinecraft.McInstance? instance = null)
- {
- var value = Get(key, instance);
- InvokeEventMethod(key, () => value);
- return value;
- }
-
- ///
- /// 写入某个未经加密的设置项。
- /// 若该设置项经过了加密,则会抛出异常。
- ///
- public void SetSafe(string key, object value, bool forceReload = false, ModMinecraft.McInstance instance = null)
- {
- if (!ConfigService.TryGetConfigItemNoType(key, out ConfigItem item)) return;
- if (item.Source == ConfigSource.SharedEncrypt) throw new InvalidOperationException("禁止写入加密设置项:" + key);
- Set(key, value, forceReload, instance);
- }
-
- ///
- /// 获取某个未经加密的设置项的值。
- /// 若该设置项经过了加密,则会抛出异常。
- ///
- public object GetSafe(string key, ModMinecraft.McInstance instance = null)
- {
- if (!ConfigService.TryGetConfigItemNoType(key, out ConfigItem item)) return null;
- if (item.Source == ConfigSource.SharedEncrypt) throw new InvalidOperationException("禁止读取加密设置项:" + key);
- return Get(key, instance);
- }
-
- ///
- /// 获取某个设置项的值。
- ///
- public object Get(string key, ModMinecraft.McInstance? instance = null)
- {
- return GetConfigItem(key).GetValueNoType(instance?.PathInstance);
- }
-
- ///
- /// 初始化某个设置项的值。
- ///
- public void Reset(string key, bool forceReload = false, ModMinecraft.McInstance? instance = null)
- {
- GetConfigItem(key).Reset(instance?.PathInstance);
- }
-
- ///
- /// 获取某个设置项的默认值。
- ///
- public object GetDefault(string key)
- {
- return GetConfigItem(key).DefaultValueNoType;
- }
-
- ///
- /// 某个设置项是否从未被设置过。
- ///
- public bool IsUnset(string key, ModMinecraft.McInstance? instance = null)
- {
- return GetConfigItem(key).IsDefault(instance?.PathInstance);
- }
-
#endregion
#region Launch
@@ -368,7 +296,7 @@ public void UiFont(string value)
}
// 主页
- public void UiCustomType(int Value)
+ public static void UiCustomType(int Value)
{
if (ModMain.FrmSetupUI is null)
return;
@@ -448,7 +376,7 @@ public void UiBlurType(int Value)
}
// 顶部栏
- public void UiLogoType(int Value)
+ public static void UiLogoType(int Value)
{
if (ThemeService.CurrentTheme == ColorTheme.HmclBlue) Value = 4;
switch (Value)
@@ -505,7 +433,7 @@ public void UiLogoType(int Value)
ModMain.FrmSetupUI.PanLogoChange.Visibility = Visibility.Collapsed;
}
- ModBase.Setup.Load("UiLogoText", true);
+ _ = Config.Preference.WindowTitleCustomText;
break;
}
case 3: // 图片
@@ -551,17 +479,17 @@ public void UiLogoType(int Value)
break;
}
- ModBase.Setup.Load("UiLogoLeft", true);
+ _ = Config.Preference.TopBarLeftAlign;
if (ModMain.FrmSetupUI != null)
ModMain.FrmSetupUI.CardLogo.TriggerForceResize();
}
- public void UiLogoText(string Value)
+ public static void UiLogoText(string Value)
{
ModMain.FrmMain.LabTitleLogo.Text = Value;
}
- public void UiLogoLeft(bool Value)
+ public static void UiLogoLeft(bool Value)
{
ModMain.FrmMain.PanTitleMain.ColumnDefinitions[0].Width = new GridLength(
Value && Config.Preference.WindowTitleType == LauncherTitleType.None ? 0 : 1,
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.cs b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.cs
index ecf5cca61..d9908e9df 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.cs
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.cs
@@ -4,7 +4,6 @@
using System.Net.Http;
using System.Text;
using Microsoft.VisualBasic;
-using Microsoft.VisualBasic.CompilerServices;
using Newtonsoft.Json.Linq;
using PCL.Core.App;
using PCL.Core.Utils;
@@ -82,7 +81,7 @@ public static DownloadFile DlClientAssetIndexGet(ModMinecraft.McInstance Version
#region 下载支持库文件
- if (Conversions.ToBoolean(ModMinecraft.ShouldIgnoreFileCheck(Version)))
+ if (ModMinecraft.ShouldIgnoreFileCheck(Version))
{
ModBase.Log("[Download] 已跳过所有 Libraries 检查");
}
@@ -103,7 +102,7 @@ public static DownloadFile DlClientAssetIndexGet(ModMinecraft.McInstance Version
#region 下载资源文件
- if (Conversions.ToBoolean(ModMinecraft.ShouldIgnoreFileCheck(Version)))
+ if (ModMinecraft.ShouldIgnoreFileCheck(Version))
{
ModBase.Log("[Download] 已跳过所有 Assets 检查");
}
@@ -277,7 +276,7 @@ private static void DlClientListMain(ModLoader.LoaderTask, int>>
@@ -285,7 +284,7 @@ private static void DlClientListMain(ModLoader.LoaderTask, int>>
@@ -372,12 +371,10 @@ private static void DlClientListMojangMain(ModLoader.LoaderTask, int>>
@@ -604,7 +599,7 @@ private static void DlOptiFineListMain(ModLoader.LoaderTask, int>>
@@ -763,7 +758,7 @@ private static void DlForgeListMain(ModLoader.LoaderTask
{
switch (Config.Download.VersionListSource)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case 0:
{
DlSourceLoader(Loader,
new List, int>>
@@ -771,7 +766,7 @@ private static void DlForgeListMain(ModLoader.LoaderTask
Loader.IsForceRestarting);
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
DlSourceLoader(Loader,
new List, int>>
@@ -799,12 +794,12 @@ private static void DlForgeListMain(ModLoader.LoaderTask
private static void DlForgeListOfficialMain(ModLoader.LoaderTask Loader)
{
- var Result = Conversions.ToString(Requester.FetchJson(
+ var Result = Requester.FetchJson(
"https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.2.4.html", new RequestParam
{
Encoding = Encoding.Default,
UseBrowserUserAgent = true
- }));
+ })?.ToString() ?? "";
if (Result.Length < 200)
throw new Exception("获取到的版本列表长度不足(" + Result + ")");
// 获取所有版本信息
@@ -824,11 +819,11 @@ private static void DlForgeListOfficialMain(ModLoader.LoaderTask Loader)
{
var Result =
- Conversions.ToString(Requester.FetchJson("https://bmclapi2.bangbang93.com/forge/minecraft",
+ Requester.FetchJson("https://bmclapi2.bangbang93.com/forge/minecraft",
new RequestParam
{
Encoding = Encoding.Default,
- }));
+ })?.ToString() ?? "";
if (Result.Length < 200)
throw new Exception("获取到的版本列表长度不足(" + Result + ")");
// 获取所有版本信息
@@ -955,7 +950,7 @@ public DlForgeVersionEntry(string Version, string Branch, string Inherit)
// 司马版本的特殊处理
if (Version == "11.15.1.2318" || Version == "11.15.1.1902" || Version == "11.15.1.1890")
Branch = "1.8.9";
- if (Branch is null && Inherit == "1.7.10" && Conversions.ToDouble(Version.Split(".")[3]) >= 1300d)
+ if (Branch is null && Inherit == "1.7.10" && double.Parse(Version.Split(".")[3]) >= 1300d)
Branch = "1.7.10";
// 为 DlForgelikeEntry 提供所有信息
ForgeType = ForgelikeType.Forge;
@@ -979,7 +974,7 @@ public static void DlForgeVersionMain(ModLoader.LoaderTask>, int>>
@@ -987,7 +982,7 @@ public static void DlForgeVersionMain(ModLoader.LoaderTask>, int>>
@@ -1015,12 +1010,12 @@ public static void DlForgeVersionOfficialMain(ModLoader.LoaderTask, int>>
@@ -1293,7 +1288,7 @@ private static void DlNeoForgeListMain(ModLoader.LoaderTask, int>>
@@ -1465,14 +1460,14 @@ private static void DlCleanroomListMain(ModLoader.LoaderTask, int>>
{ new(DlCleanroomListOfficialLoader, 30) }, Loader.IsForceRestarting);
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
DlSourceLoader(Loader,
new List, int>>
@@ -1610,7 +1605,7 @@ private static void DlLiteLoaderListMain(ModLoader.LoaderTask, int>>
@@ -1619,7 +1614,7 @@ private static void DlLiteLoaderListMain(ModLoader.LoaderTask, int>>
@@ -1664,7 +1659,7 @@ private static void DlLiteLoaderListOfficialMain(ModLoader.LoaderTask, int>>
@@ -1765,7 +1760,7 @@ private static void DlFabricListMain(ModLoader.LoaderTask, int>>
@@ -1873,7 +1868,7 @@ private static void DlQuiltListMain(ModLoader.LoaderTask
{
switch (Config.Download.VersionListSource)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case 0:
{
DlSourceLoader(Loader,
new List, int>>
@@ -1881,7 +1876,7 @@ private static void DlQuiltListMain(ModLoader.LoaderTask
Loader.IsForceRestarting);
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
DlSourceLoader(Loader,
new List, int>>
@@ -1966,7 +1961,7 @@ private static void DlLabyModListMain(ModLoader.LoaderTask, int>>
@@ -1974,7 +1969,7 @@ private static void DlLabyModListMain(ModLoader.LoaderTask, int>>
@@ -2063,14 +2058,14 @@ public static T DlModRequest(string url)
if ((McimUrl ?? "") != (url ?? ""))
switch (Config.Download.Comp.CompSourceSolution)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case 0:
{
Urls.Add(new KeyValuePair(McimUrl, 5));
Urls.Add(new KeyValuePair(McimUrl, 10));
Urls.Add(new KeyValuePair(url, 15));
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
Urls.Add(new KeyValuePair(url, 5));
Urls.Add(new KeyValuePair(McimUrl, 5));
@@ -2129,14 +2124,14 @@ public static T DlModRequest(string url, string method, string data, string c
if ((McimUrl ?? "") != (url ?? ""))
switch (allowMirror ? Config.Download.Comp.CompSourceSolution : 2)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case 0:
{
Urls.Add(new KeyValuePair(McimUrl, 5));
Urls.Add(new KeyValuePair(McimUrl, 10));
Urls.Add(new KeyValuePair(url, 15));
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
Urls.Add(new KeyValuePair(url, 5));
Urls.Add(new KeyValuePair(McimUrl, 5));
@@ -2185,9 +2180,9 @@ public static T DlModRequest(string url, string method, string data, string c
///
/// 下载文件(而非获取版本列表)的时候,是否优先使用官方源。
///
- public static bool DlSourcePreferMojang => Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(Config.Download.FileSource, 2, false) ||
- (Operators.ConditionalCompareObjectEqual(Config.Download.FileSource, 1, false) && DlPreferMojang));
+ public static bool DlSourcePreferMojang =>
+ Config.Download.FileSource == 2 ||
+ (Config.Download.FileSource == 1 && DlPreferMojang);
///
/// 下载文件(而非获取版本列表)的时候,根据是否优先使用官方源决定使用 Url 的顺序。
@@ -2200,10 +2195,9 @@ public static IEnumerable DlSourceOrder(IEnumerable OfficialUrls
///
/// 获取版本列表(而非下载文件)的时候,是否优先使用官方源。
///
- public static bool DlVersionListPreferMojang => Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(Config.Download.VersionListSource, 2, false) ||
- (Operators.ConditionalCompareObjectEqual(Config.Download.VersionListSource, 1, false) &&
- DlPreferMojang));
+ public static bool DlVersionListPreferMojang =>
+ Config.Download.VersionListSource == 2 ||
+ (Config.Download.VersionListSource == 1 && DlPreferMojang);
///
/// 获取版本列表(而非下载文件)的时候,根据是否优先使用官方源决定使用 Url 的顺序。
@@ -2314,19 +2308,19 @@ public static List DlSourceModDownloadGet(string original)
// like https://edge.forgecdn.net/files/6767/951/jei-1.21.5-neoforge-21.4.0.27.jar
switch (Config.Download.Comp.CompSourceSolution)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false): // 镜像源
+ case 0: // 镜像源
{
res.Add(mirrorDl);
res.Add(mirrorDl);
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false): // 平衡
+ case 1: // 平衡
{
res.Add(original);
res.Add(mirrorDl);
break;
}
- case var case2 when Operators.ConditionalCompareObjectEqual(case2, 2, false): // 官方源
+ case 2: // 官方源
{
res.Add(original);
res.Add(original); // 错误
@@ -2335,7 +2329,7 @@ public static List DlSourceModDownloadGet(string original)
default:
{
- ModBase.Setup.Reset("ToolDownloadMod");
+ Config.Download.Comp.CompSourceSolution = 1;
res.Add(original);
break;
}
@@ -2472,14 +2466,14 @@ private static void DlLegacyFabricListMain(ModLoader.LoaderTask, int>>
{ new(DlLegacyFabricListOfficialLoader, 30) }, Loader.IsForceRestarting);
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false):
+ case 1:
{
DlSourceLoader(Loader,
new List, int>>
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.cs b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.cs
index 0e12f991b..61402b941 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.cs
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.cs
@@ -290,7 +290,7 @@ public static bool IsGameSet64BitJava(ModMinecraft.McInstance RelatedVersion = n
{
ModBase.Log(ex, "检查 Java 类别时出错", ModBase.LogLevel.Feedback);
if (RelatedVersion is not null)
- ModBase.Setup.Reset("VersionArgumentJavaSelect", instance: RelatedVersion);
+ Config.Instance.SelectedJava[RelatedVersion.PathInstance] = "使用全局设置";
Config.Launch.SelectedJava = "";
}
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
index ff9e7c66b..85ee37e6f 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
@@ -33,7 +33,7 @@ public static class ModLaunch
private static void McLaunchPrecheck()
{
- if (Conversions.ToBoolean(Config.Debug.AddRandomDelay))
+ if (Config.Debug.AddRandomDelay)
Thread.Sleep(RandomUtils.NextInt(100, 2000));
// 检查路径
if (ModMinecraft.McInstanceSelected.PathIndie.Contains("!") ||
@@ -42,8 +42,8 @@ private static void McLaunchPrecheck()
if (ModMinecraft.McInstanceSelected.PathInstance.Contains("!") ||
ModMinecraft.McInstanceSelected.PathInstance.Contains(";"))
throw new Exception(Lang.Text("Minecraft.Launch.Precheck.InvalidPathChars", ModMinecraft.McInstanceSelected.PathInstance));
- if (Conversions.ToBoolean(ModBase.IsUtf8CodePage() && !(bool)States.Hint.NonAsciiGamePath &&
- !ModMinecraft.McInstanceSelected.PathInstance.IsASCII()))
+ if (ModBase.IsUtf8CodePage() && !States.Hint.NonAsciiGamePath &&
+ !ModMinecraft.McInstanceSelected.PathInstance.IsASCII())
{
var userChoice = ModMain.MyMsgBox(
Lang.Text("Minecraft.Launch.Precheck.NonAsciiPath.Message", ModMinecraft.McInstanceSelected.Name),
@@ -60,40 +60,31 @@ private static void McLaunchPrecheck()
throw new Exception(Lang.Text("Minecraft.Launch.Precheck.InstanceError", ModMinecraft.McInstanceSelected.Desc));
// 检查输入信息
var CheckResult = "";
- ModBase.RunInUiWait(() => CheckResult = Conversions.ToString(ModProfile.IsProfileValid()));
+ ModBase.RunInUiWait(() => CheckResult = ModProfile.IsProfileValid());
if (ModProfile.SelectedProfile is null) // 没选档案
{
CheckResult = Lang.Text("Minecraft.Launch.Precheck.NoProfile");
}
- else if (ModMinecraft.McInstanceSelected.Info.HasLabyMod || Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(
- ModBase.Setup.Get("VersionServerLoginRequire", ModMinecraft.McInstanceSelected), 1,
- false))) // 要求正版验证
+ else if (ModMinecraft.McInstanceSelected.Info.HasLabyMod ||
+ Config.InstanceAuth.LoginRequirementSolution[ModMinecraft.McInstanceSelected?.PathInstance] == 1) // 要求正版验证
{
if (!(ModProfile.SelectedProfile.Type == McLoginType.Ms)) CheckResult = Lang.Text("Minecraft.Launch.Precheck.RequireMicrosoft");
}
- else if (Conversions.ToBoolean(Operators.ConditionalCompareObjectEqual(
- ModBase.Setup.Get("VersionServerLoginRequire", ModMinecraft.McInstanceSelected), 2,
- false))) // 要求第三方验证
+ else if (Config.InstanceAuth.LoginRequirementSolution[ModMinecraft.McInstanceSelected?.PathInstance] == 2) // 要求第三方验证
{
if (!(ModProfile.SelectedProfile.Type == McLoginType.Auth))
CheckResult = Lang.Text("Minecraft.Launch.Precheck.RequireThirdParty");
- else if (Conversions.ToBoolean(!Operators.ConditionalCompareObjectEqual(
- ModProfile.SelectedProfile.Server.BeforeLast("/authserver"),
- ModBase.Setup.Get("VersionServerAuthServer", ModMinecraft.McInstanceSelected), false)))
+ else if (ModProfile.SelectedProfile.Server.BeforeLast("/authserver") !=
+ Config.InstanceAuth.AuthServerAddress[ModMinecraft.McInstanceSelected?.PathInstance])
CheckResult = Lang.Text("Minecraft.Launch.Precheck.AuthServerMismatch");
}
- else if (Conversions.ToBoolean(Operators.ConditionalCompareObjectEqual(
- ModBase.Setup.Get("VersionServerLoginRequire", ModMinecraft.McInstanceSelected), 3,
- false))) // 要求正版验证或第三方验证
+ else if (Config.InstanceAuth.LoginRequirementSolution[ModMinecraft.McInstanceSelected?.PathInstance] == 3) // 要求正版验证或第三方验证
{
if (ModProfile.SelectedProfile.Type == McLoginType.Legacy)
CheckResult = Lang.Text("Minecraft.Launch.Precheck.RequireMicrosoftOrThirdParty");
- else if (Conversions.ToBoolean(ModProfile.SelectedProfile.Type == McLoginType.Auth &&
- !Operators.ConditionalCompareObjectEqual(
- ModProfile.SelectedProfile.Server.BeforeLast("/authserver"),
- ModBase.Setup.Get("VersionServerAuthServer",
- ModMinecraft.McInstanceSelected), false)))
+ else if (ModProfile.SelectedProfile.Type == McLoginType.Auth &&
+ ModProfile.SelectedProfile.Server.BeforeLast("/authserver") !=
+ Config.InstanceAuth.AuthServerAddress[ModMinecraft.McInstanceSelected?.PathInstance])
CheckResult = Lang.Text("Minecraft.Launch.Precheck.AuthServerMismatch");
}
@@ -626,7 +617,7 @@ private static void McLoginStart(ModLoader.LoaderTask task)
internal static void SecretLaunchJvmArgs(ref List DataList)
{
- var DataJvmCustom =
- Conversions.ToString(ModBase.Setup.Get("VersionAdvanceJvm", ModMinecraft.McInstanceSelected));
+ var DataJvmCustom = Config.Instance.JvmArgs[ModMinecraft.McInstanceSelected?.PathInstance];
DataList.Insert(0,
- Conversions.ToString(string.IsNullOrEmpty(DataJvmCustom)
+ string.IsNullOrEmpty(DataJvmCustom)
? Config.Launch.JvmArgs
- : DataJvmCustom)); // 可变 JVM 参数
+ : DataJvmCustom); // 可变 JVM 参数
switch (Config.Launch.PreferredIpStack)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case JvmPreferredIpStack.PreferV4:
{
DataList.Add("-Djava.net.preferIPv4Stack=true");
DataList.Add("-Djava.net.preferIPv4Addresses=true");
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 2, false):
+ case JvmPreferredIpStack.PreferV6:
{
DataList.Add("-Djava.net.preferIPv6Stack=true");
DataList.Add("-Djava.net.preferIPv6Addresses=true");
@@ -2240,10 +2230,10 @@ private static void WriteLinkD(string Path)
///
private static bool McLaunchNeedsRetroWrapper(ModMinecraft.McInstance Mc)
{
- return Conversions.ToBoolean((Mc.ReleaseTime >= new DateTime(2013, 6, 25) && Mc.Info.Drop == 99) ||
- (Mc.Info.Drop < 60 && Mc.Info.Drop != 99 &&
- !(bool)Config.Launch.DisableRw &&
- !(bool)ModBase.Setup.Get("VersionAdvanceDisableRW", Mc))); // <1.6
+ return (Mc.ReleaseTime >= new DateTime(2013, 6, 25) && Mc.Info.Drop == 99) ||
+ (Mc.Info.Drop < 60 && Mc.Info.Drop != 99 &&
+ !Config.Launch.DisableRw &&
+ !Config.Instance.DisableRw[Mc.PathInstance]); // <1.6
}
///
@@ -2339,17 +2329,14 @@ private static void McLaunchArgumentMain(ModLoader.LoaderTask new DateTime(2023, 4, 4))
@@ -2413,9 +2400,9 @@ private static string McLaunchArgumentsJvmOld(ModMinecraft.McInstance instance)
// 输出固定参数
DataList.Add("-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump");
- var ArgumentJvm = Conversions.ToString(ModBase.Setup.Get("VersionAdvanceJvm", ModMinecraft.McInstanceSelected));
+ var ArgumentJvm = Config.Instance.JvmArgs[ModMinecraft.McInstanceSelected?.PathInstance];
if (string.IsNullOrEmpty(ArgumentJvm))
- ArgumentJvm = Conversions.ToString(Config.Launch.JvmArgs);
+ ArgumentJvm = Config.Launch.JvmArgs;
if (!ArgumentJvm.Contains("-Dlog4j2.formatMsgNoLookups=true"))
ArgumentJvm += " -Dlog4j2.formatMsgNoLookups=true";
ArgumentJvm = ArgumentJvm.Replace(" -XX:MaxDirectMemorySize=256M", ""); // #3511 的清理
@@ -2465,13 +2452,11 @@ private static string McLaunchArgumentsJvmOld(ModMinecraft.McInstance instance)
// 渲染器
var Renderer = 0;
- if (Conversions.ToBoolean(Operators.ConditionalCompareObjectNotEqual(
- ModBase.Setup.Get("VersionAdvanceRenderer", ModMinecraft.McInstanceSelected), 0, false)))
- Renderer = Conversions.ToInteger(
- Operators.SubtractObject(ModBase.Setup.Get("VersionAdvanceRenderer", ModMinecraft.McInstanceSelected),
- 1));
+ var instanceRenderer = Config.Instance.Renderer[ModMinecraft.McInstanceSelected?.PathInstance];
+ if (instanceRenderer != 0)
+ Renderer = instanceRenderer - 1;
else
- Renderer = Conversions.ToInteger(Config.Launch.Renderer);
+ Renderer = Config.Launch.Renderer;
var MesaLoaderWindowsVersion = "25.3.5";
var MesaLoaderWindowsTargetFile =
Path.Combine(ModBase.PathPure, "mesa-loader-windows", MesaLoaderWindowsVersion, "Loader.jar");
@@ -2486,7 +2471,7 @@ private static string McLaunchArgumentsJvmOld(ModMinecraft.McInstance instance)
!string.IsNullOrWhiteSpace(Config.Network.HttpProxy.CustomAddress))
try
{
- var ProxyAddress = new Uri(Conversions.ToString(Config.Network.HttpProxy.CustomAddress));
+ var ProxyAddress = new Uri(Config.Network.HttpProxy.CustomAddress);
DataList.Add(
$"-D{(ProxyAddress.Scheme.StartsWithF("https:") ? "https" : "http")}.proxyHost={ProxyAddress.AbsoluteUri}");
DataList.Add(
@@ -2498,9 +2483,8 @@ private static string McLaunchArgumentsJvmOld(ModMinecraft.McInstance instance)
}
// 添加 Java Wrapper 作为主 Jar
- if (Conversions.ToBoolean(ModBase.IsUtf8CodePage() && !(bool)Config.Launch.DisableJlw &&
- !(bool)ModBase.Setup.Get("VersionAdvanceDisableJLW",
- ModMinecraft.McInstanceSelected)))
+ if (ModBase.IsUtf8CodePage() && !Config.Launch.DisableJlw &&
+ !Config.Instance.DisableJlw[ModMinecraft.McInstanceSelected?.PathInstance])
{
if (McLaunchJavaSelected.Installation.MajorVersion >= 9)
DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED");
@@ -2590,13 +2574,11 @@ private static string McLaunchArgumentsJvmNew(ModMinecraft.McInstance instance)
// 渲染器
var Renderer = 0;
- if (Conversions.ToBoolean(Operators.ConditionalCompareObjectNotEqual(
- ModBase.Setup.Get("VersionAdvanceRenderer", ModMinecraft.McInstanceSelected), 0, false)))
- Renderer = Conversions.ToInteger(
- Operators.SubtractObject(ModBase.Setup.Get("VersionAdvanceRenderer", ModMinecraft.McInstanceSelected),
- 1));
+ var instanceRenderer = Config.Instance.Renderer[ModMinecraft.McInstanceSelected?.PathInstance];
+ if (instanceRenderer != 0)
+ Renderer = instanceRenderer - 1;
else
- Renderer = Conversions.ToInteger(Config.Launch.Renderer);
+ Renderer = Config.Launch.Renderer;
var MesaLoaderWindowsVersion = "25.3.5";
var MesaLoaderWindowsTargetFile =
Path.Combine(ModBase.PathPure, "mesa-loader-windows", MesaLoaderWindowsVersion, "Loader.jar");
@@ -2611,7 +2593,7 @@ private static string McLaunchArgumentsJvmNew(ModMinecraft.McInstance instance)
!string.IsNullOrWhiteSpace(Config.Network.HttpProxy.CustomAddress))
try
{
- var ProxyAddress = new Uri(Conversions.ToString(Config.Network.HttpProxy.CustomAddress));
+ var ProxyAddress = new Uri(Config.Network.HttpProxy.CustomAddress);
DataList.Add(
$"-D{(ProxyAddress.Scheme.StartsWithF("https:") ? "https" : "http")}.proxyHost={ProxyAddress.AbsoluteUri}");
DataList.Add(
@@ -2627,9 +2609,8 @@ private static string McLaunchArgumentsJvmNew(ModMinecraft.McInstance instance)
// https://github.com/NeRdTheNed/RetroWrapper/wiki/RetroWrapper-flags
DataList.Add("-Dretrowrapper.doUpdateCheck=false");
// 添加 Java Wrapper 作为主 Jar
- if (Conversions.ToBoolean(ModBase.IsUtf8CodePage() && !(bool)Config.Launch.DisableJlw &&
- !(bool)ModBase.Setup.Get("VersionAdvanceDisableJLW",
- ModMinecraft.McInstanceSelected)))
+ if (ModBase.IsUtf8CodePage() && !Config.Launch.DisableJlw &&
+ !Config.Instance.DisableJlw[ModMinecraft.McInstanceSelected?.PathInstance])
{
if (McLaunchJavaSelected.Installation.MajorVersion >= 9)
DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED");
@@ -2825,12 +2806,11 @@ private static Dictionary McLaunchArgumentsReplace(ModMinecraft.
GameArguments.Add("${launcher_name}", "PCLCE");
GameArguments.Add("${launcher_version}", ModBase.VersionCode.ToString());
GameArguments.Add("${version_name}", instance.Name);
- var ArgumentInfo =
- Conversions.ToString(ModBase.Setup.Get("VersionArgumentInfo", ModMinecraft.McInstanceSelected));
+ var ArgumentInfo = Config.Instance.TypeInfo[ModMinecraft.McInstanceSelected?.PathInstance];
GameArguments.Add("${version_type}",
- Conversions.ToString(string.IsNullOrEmpty(ArgumentInfo)
+ string.IsNullOrEmpty(ArgumentInfo)
? Config.Launch.TypeInfo
- : ArgumentInfo));
+ : ArgumentInfo);
GameArguments.Add("${game_directory}",
ModBase.ShortenPath(Strings.Left(ModMinecraft.McInstanceSelected.PathIndie,
ModMinecraft.McInstanceSelected.PathIndie.Count() - 1)));
@@ -2847,7 +2827,7 @@ private static Dictionary McLaunchArgumentsReplace(ModMinecraft.
Size GameSize;
switch (Config.Launch.GameWindowMode)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 2, false): // 与启动器尺寸一致
+ case GameWindowSizeMode.Launcher: // 与启动器尺寸一致
{
Size Result;
ModBase.RunInUiWait(() => Result = new Size(ModBase.GetPixelSize(ModMain.FrmMain.PanForm.ActualWidth),
@@ -2856,7 +2836,7 @@ private static Dictionary McLaunchArgumentsReplace(ModMinecraft.
GameSize.Height -= 29.5d * ModBase.DPI / 96d; // 标题栏高度
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 3, false): // 自定义
+ case GameWindowSizeMode.Custom: // 自定义
{
GameSize = new Size(Math.Max(100, (double)Config.Launch.GameWindowWidth),
Math.Max(100, (double)Config.Launch.GameWindowHeight));
@@ -3237,12 +3217,12 @@ private static void McLaunchPrerun()
// 窗口
switch (Config.Launch.GameWindowMode)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false): // 全屏
+ case GameWindowSizeMode.Fullscreen: // 全屏
{
ModBase.WriteIni(SetupFileAddress, "fullscreen", "true");
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 1, false): // 默认
+ case GameWindowSizeMode.Default: // 默认
// 其他
{
break;
@@ -3308,11 +3288,10 @@ or LocalizationFontProfile.Japanese
private static void McLaunchCustom(ModLoader.LoaderTask Loader)
{
// 获取自定义命令
- var CustomCommandGlobal = Conversions.ToString(Config.Launch.PreLaunchCommand);
+ var CustomCommandGlobal = Config.Launch.PreLaunchCommand;
if (!string.IsNullOrEmpty(CustomCommandGlobal))
CustomCommandGlobal = ArgumentReplace(CustomCommandGlobal, true);
- var CustomCommandVersion =
- Conversions.ToString(ModBase.Setup.Get("VersionAdvanceRun", ModMinecraft.McInstanceSelected));
+ var CustomCommandVersion = Config.Instance.PreLaunchCommand[ModMinecraft.McInstanceSelected?.PathInstance];
if (!string.IsNullOrEmpty(CustomCommandVersion))
CustomCommandVersion = ArgumentReplace(CustomCommandVersion, true);
@@ -3359,7 +3338,7 @@ private static void McLaunchCustom(ModLoader.LoaderTask Loader)
CustomProcess.StartInfo.UseShellExecute = false;
CustomProcess.StartInfo.CreateNoWindow = true;
CustomProcess.Start();
- if (Conversions.ToBoolean(Config.Launch.PreLaunchCommandWait))
+ if (Config.Launch.PreLaunchCommandWait)
while (!CustomProcess.HasExited && !Loader.IsAborted)
Thread.Sleep(10);
}
@@ -3389,7 +3368,7 @@ private static void McLaunchCustom(ModLoader.LoaderTask Loader)
CustomProcess.StartInfo.UseShellExecute = false;
CustomProcess.StartInfo.CreateNoWindow = true;
CustomProcess.Start();
- if (Conversions.ToBoolean(ModBase.Setup.Get("VersionAdvanceRunWait", ModMinecraft.McInstanceSelected)))
+ if (Config.Instance.PreLaunchCommandWait[ModMinecraft.McInstanceSelected?.PathInstance])
while (!CustomProcess.HasExited && !Loader.IsAborted)
Thread.Sleep(10);
}
@@ -3410,8 +3389,8 @@ private static void McLaunchCustom(ModLoader.LoaderTask Loader)
private static void McLaunchRun(ModLoader.LoaderTask Loader)
{
- var noJavaw = Conversions.ToBoolean((bool)Config.Launch.NoJavaw &&
- McLaunchJavaSelected.Installation.JavawExePath is not null);
+ var noJavaw = Config.Launch.NoJavaw &&
+ McLaunchJavaSelected.Installation.JavawExePath is not null;
// 启动信息
var GameProcess = new Process();
@@ -3452,12 +3431,12 @@ private static void McLaunchRun(ModLoader.LoaderTask Loader)
GameProcess.PriorityBoostEnabled = true;
switch (Config.Launch.ProcessPriority)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false): // 高
+ case GameProcessPriority.AboveNormal: // 高
{
GameProcess.PriorityClass = ProcessPriorityClass.AboveNormal;
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 2, false): // 低
+ case GameProcessPriority.BelowNormal: // 低
{
GameProcess.PriorityClass = ProcessPriorityClass.BelowNormal; // 中
break;
@@ -3505,10 +3484,10 @@ private static void McLaunchWait(ModLoader.LoaderTask Loader)
McLaunchLog("");
// 获取窗口标题
- var WindowTitle = (string?)ModBase.Setup.Get("VersionArgumentTitle", ModMinecraft.McInstanceSelected);
+ var WindowTitle = Config.Instance.Title[ModMinecraft.McInstanceSelected?.PathInstance];
if (string.IsNullOrEmpty(WindowTitle) &&
- !(bool)ModBase.Setup.Get("VersionArgumentTitleEmpty", ModMinecraft.McInstanceSelected))
- WindowTitle = Conversions.ToString(Config.Launch.Title);
+ !Config.Instance.UseGlobalTitle[ModMinecraft.McInstanceSelected?.PathInstance])
+ WindowTitle = Config.Launch.Title;
WindowTitle = ArgumentReplace(WindowTitle, false);
// JStack 路径
@@ -3546,12 +3525,12 @@ private static void McLaunchEnd()
McLaunchLog("开始启动结束处理");
// 暂停或开始音乐播放
- if (Conversions.ToBoolean(Config.Preference.Music.StopInGame))
+ if (Config.Preference.Music.StopInGame)
ModBase.RunInUi(() =>
{
if (ModMusic.MusicPause()) ModBase.Log("[Music] 已根据设置,在启动后暂停音乐播放");
});
- else if (Conversions.ToBoolean(Config.Preference.Music.StartInGame))
+ else if (Config.Preference.Music.StartInGame)
ModBase.RunInUi(() =>
{
if (ModMusic.MusicResume()) ModBase.Log("[Music] 已根据设置,在启动后开始音乐播放");
@@ -3561,32 +3540,32 @@ private static void McLaunchEnd()
ModVideoBack.VideoPause();
// 启动器可见性
McLaunchLog(
- Conversions.ToString(Operators.ConcatenateObject("启动器可见性:", Config.Launch.LauncherVisibility)));
+ "启动器可见性:" + Config.Launch.LauncherVisibility);
switch (Config.Launch.LauncherVisibility)
{
- case var @case when Operators.ConditionalCompareObjectEqual(@case, 0, false):
+ case LauncherVisibility.ExitImmediately:
{
// 直接关闭
McLaunchLog("已根据设置,在启动后关闭启动器");
ModBase.RunInUi(() => ModMain.FrmMain.EndProgram(false));
break;
}
- case var case1 when Operators.ConditionalCompareObjectEqual(case1, 2, false):
- case var case2 when Operators.ConditionalCompareObjectEqual(case2, 3, false):
+ case LauncherVisibility.HideAndExit:
+ case LauncherVisibility.HideAndReopen:
{
// 隐藏
McLaunchLog("已根据设置,在启动后隐藏启动器");
ModBase.RunInUi(() => ModMain.FrmMain.Hidden = true);
break;
}
- case var case3 when Operators.ConditionalCompareObjectEqual(case3, 4, false):
+ case LauncherVisibility.MinimizeAndReopen:
{
// 最小化
McLaunchLog("已根据设置,在启动后最小化启动器");
ModBase.RunInUi(() => ModMain.FrmMain.WindowState = WindowState.Minimized);
break;
}
- case var case4 when Operators.ConditionalCompareObjectEqual(case4, 5, false):
+ case LauncherVisibility.DoNothing:
{
break;
}
@@ -3596,9 +3575,8 @@ private static void McLaunchEnd()
// 启动计数
States.System.LaunchCount += 1;
- ModBase.Setup.Set("VersionLaunchCount",
- Operators.AddObject(ModBase.Setup.Get("VersionLaunchCount", ModMinecraft.McInstanceSelected), 1),
- instance: ModMinecraft.McInstanceSelected);
+ States.Instance.LaunchCount[ModMinecraft.McInstanceSelected.PathInstance] =
+ States.Instance.LaunchCount[ModMinecraft.McInstanceSelected.PathInstance] + 1;
}
///
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.cs b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.cs
index 174f2e02e..3ff50743e 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.cs
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.cs
@@ -7,7 +7,6 @@
using System.Text.Json.Nodes;
using System.Text.RegularExpressions;
using Microsoft.VisualBasic;
-using Microsoft.VisualBasic.CompilerServices;
using Newtonsoft.Json.Linq;
using PCL.Core.App;
using PCL.Core.UI;
@@ -99,16 +98,16 @@ public static int CompareVersion(string left, string right)
// 两边均缺失,感觉是一个东西
if (lefts.Count - 1 < i && rights.Count - 1 < i)
{
- if (Operators.CompareString(left, right, false) > 0)
+ if (string.CompareOrdinal(left, right) > 0)
return 1;
- if (Operators.CompareString(left, right, false) < 0)
+ if (string.CompareOrdinal(left, right) < 0)
return -1;
return 0;
}
// 确定两边的数值
- var leftValue = Conversions.ToString(lefts.Count - 1 < i ? 0 : lefts[i]);
- var rightValue = Conversions.ToString(rights.Count - 1 < i ? 0 : rights[i]);
+ var leftValue = lefts.Count - 1 < i ? "0" : lefts[i];
+ var rightValue = rights.Count - 1 < i ? "0" : rights[i];
if ((leftValue ?? "") == (rightValue ?? ""))
goto NextEntry;
if (leftValue == "rc")
@@ -132,9 +131,9 @@ public static int CompareVersion(string left, string right)
if (leftValValue == 0d && rightValValue == 0d)
{
// 如果没有数值则直接比较字符串
- if (Operators.CompareString(leftValue, rightValue, false) > 0) return 1;
+ if (string.CompareOrdinal(leftValue, rightValue) > 0) return 1;
- if (Operators.CompareString(leftValue, rightValue, false) < 0) return -1;
+ if (string.CompareOrdinal(leftValue, rightValue) < 0) return -1;
}
// 如果有数值则比较数值
// 这会使得一边是数字一边是字母时数字方更大
@@ -360,7 +359,7 @@ private static void McFolderListLoadSub()
}
foreach (var Folder in cacheMcFolderList) McFolderLauncherProfilesJsonCreate(Folder.Location);
- if (Conversions.ToBoolean(Config.Debug.AddRandomDelay))
+ if (Config.Debug.AddRandomDelay)
Thread.Sleep(RandomUtils.NextInt(200, 2000));
// 回设
@@ -910,8 +909,7 @@ public JObject JsonObject
inheritInstanceName = _jsonObject["inheritsFrom"] is null
? ""
: _jsonObject["inheritsFrom"].ToString();
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(inheritInstanceName, Name, false)))
+ if (Equals(inheritInstanceName, Name))
{
ModBase.Log("[Minecraft] 自引用的继承实例:" + Name, ModBase.LogLevel.Debug);
inheritInstanceName = "";
@@ -920,16 +918,13 @@ public JObject JsonObject
Recheck: ;
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectNotEqual(inheritInstanceName, "", false)))
+ if (!Equals(inheritInstanceName, ""))
{
- var inheritInstance = new McInstance(Conversions.ToString(inheritInstanceName));
+ var inheritInstance = new McInstance(inheritInstanceName?.ToString() ?? "");
// 继续循环
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(inheritInstance.InheritInstanceName,
- inheritInstanceName, false)))
- throw new Exception(Conversions.ToString(
- Operators.ConcatenateObject("版本依赖项出现嵌套:", inheritInstanceName)));
+ if (Equals(inheritInstance.InheritInstanceName,
+ inheritInstanceName))
+ throw new Exception("版本依赖项出现嵌套:" + inheritInstanceName);
inheritInstanceName = inheritInstance.InheritInstanceName;
// 合并
inheritInstance.JsonObject.Merge(_jsonObject);
@@ -1312,7 +1307,7 @@ public McInstance Load()
// 确定实例收藏状态
IsStar = States.Instance.Starred[PathInstance];
// 确定实例显示种类
- DisplayType = (McInstanceCardType)Conversions.ToInteger(States.Instance.CardType[PathInstance]);
+ DisplayType = (McInstanceCardType)States.Instance.CardType[PathInstance];
// 写入缓存
if (Directory.Exists(PathInstance))
{
@@ -1970,14 +1965,14 @@ private static Dictionary> InitMcInstanceLi
var results = new Dictionary>();
try
{
- var cardCount = Conversions.ToInteger(ModBase.ReadIni(path + "PCL.ini", "CardCount", (-1).ToString()));
+ var cardCount = int.Parse(ModBase.ReadIni(path + "PCL.ini", "CardCount", (-1).ToString()));
if (cardCount == -1)
return null;
for (int i = 0, loopTo = cardCount - 1; i <= loopTo; i++)
{
var cardType =
- (McInstanceCardType)Conversions.ToInteger(ModBase.ReadIni(path + "PCL.ini", "CardKey" + (i + 1),
- ":"));
+ (McInstanceCardType)int.Parse(ModBase.ReadIni(path + "PCL.ini", "CardKey" + (i + 1),
+ "0"));
var instanceList = new List();
// 循环读取实例
@@ -2016,10 +2011,10 @@ private static Dictionary> InitMcInstanceLi
instance.ReleaseTime = DateTime.Parse(instanceCfg.ReleaseTime[instance.PathInstance]);
if (!instanceCfg.StateConfig.IsDefault(instance.PathInstance))
instance.State =
- (McInstanceState)Conversions.ToInteger(instanceCfg.State[instance.PathInstance]);
+ (McInstanceState)(int)instanceCfg.State[instance.PathInstance];
instance.IsStar = instanceCfg.Starred[instance.PathInstance];
instance.DisplayType =
- (McInstanceCardType)Conversions.ToInteger(instanceCfg.CardType[instance.PathInstance]);
+ (McInstanceCardType)(int)instanceCfg.CardType[instance.PathInstance];
if (instance.State != McInstanceState.Error &&
!instanceCfg.VanillaVersionNameConfig.IsDefault(instance.PathInstance) &&
!instanceCfg.VanillaVersionConfig
@@ -2298,9 +2293,9 @@ private static Dictionary> InitMcInstanceLi
McInstanceCardType.Rubbish, McInstanceCardType.Fool, McInstanceCardType.Error,
McInstanceCardType.Hidden
})
- if (results.ContainsKey((McInstanceCardType)Conversions.ToInteger(sortRule)))
- sortedInstanceList.Add((McInstanceCardType)Conversions.ToInteger(sortRule),
- results[(McInstanceCardType)Conversions.ToInteger(sortRule)]);
+ if (results.ContainsKey(sortRule))
+ sortedInstanceList.Add(sortRule,
+ results[sortRule]);
results = sortedInstanceList;
// 版本排序
@@ -2352,7 +2347,7 @@ int getComponentCode(McInstance instance)
if (getComponentCode(left) != getComponentCode(right))
return getComponentCode(left) > getComponentCode(right);
// 名称
- return Operators.CompareString(left.Name, right.Name, false) > 0;
+ return string.CompareOrdinal(left.Name, right.Name) > 0;
});
}
@@ -2578,11 +2573,11 @@ public static string McSkinSex(string Uuid)
{
if (!(Uuid.Length == 32))
return "Steve";
- var a = int.Parse(Conversions.ToString(Uuid[7]), NumberStyles.AllowHexSpecifier);
- var b = int.Parse(Conversions.ToString(Uuid[15]), NumberStyles.AllowHexSpecifier);
- var c = int.Parse(Conversions.ToString(Uuid[23]), NumberStyles.AllowHexSpecifier);
- var d = int.Parse(Conversions.ToString(Uuid[31]), NumberStyles.AllowHexSpecifier);
- return Conversions.ToBoolean((a ^ b ^ c ^ d) % 2) ? "Alex" : "Steve";
+ var a = int.Parse(Uuid[7].ToString(), NumberStyles.AllowHexSpecifier);
+ var b = int.Parse(Uuid[15].ToString(), NumberStyles.AllowHexSpecifier);
+ var c = int.Parse(Uuid[23].ToString(), NumberStyles.AllowHexSpecifier);
+ var d = int.Parse(Uuid[31].ToString(), NumberStyles.AllowHexSpecifier);
+ return ((a ^ b ^ c ^ d) % 2) != 0 ? "Alex" : "Steve";
// Math.floorMod(uuid.hashCode(), 18)
// Public Function hashCode(ByVal str As String) As Integer
@@ -3042,9 +3037,8 @@ public static List McLibNetFilesFromInstance(McInstance instance)
Path.Combine(ModBase.PathPure, "mesa-loader-windows", mesaLoaderWindowsVersion, "Loader.jar");
var renderer = -1;
if (McInstanceSelected is not null)
- renderer = Conversions.ToInteger(
- Operators.SubtractObject(ModBase.Setup.Get("VersionAdvanceRenderer", McInstanceSelected), 1));
- if (renderer == -1) renderer = Conversions.ToInteger(Config.Launch.Renderer);
+ renderer = Config.Instance.Renderer[McInstanceSelected?.PathInstance] - 1;
+ if (renderer == -1) renderer = Config.Launch.Renderer;
if (renderer != 0 && !File.Exists(mesaLoaderWindowsTargetFile))
{
@@ -3095,7 +3089,7 @@ public static List McLibNetFilesFromInstance(McInstance instance)
}
// 跳过校验
- if (Conversions.ToBoolean(ShouldIgnoreFileCheck(instance)))
+ if (ShouldIgnoreFileCheck(instance))
{
ModBase.Log("[Minecraft] 用户要求尽量忽略文件检查,这可能会保留有误的文件");
result = result.Where(f =>
@@ -3237,10 +3231,10 @@ public static string McLibGet(string original, bool withHead = true, bool ignore
///
/// 检查设置,是否应当忽略文件检查?
///
- public static object ShouldIgnoreFileCheck(McInstance Version)
+ public static bool ShouldIgnoreFileCheck(McInstance Version)
{
- return (bool)ModBase.Setup.Get("VersionAdvanceAssetsV2", Version) ||
- Operators.ConditionalCompareObjectEqual(ModBase.Setup.Get("VersionAdvanceAssets", Version), 2, false);
+ return Config.Instance.DisableAssetVerifyV2[Version.PathInstance] ||
+ Config.Instance.AssetVerifySolutionV1[Version.PathInstance] == 2;
}
#endregion
@@ -3387,7 +3381,7 @@ private static List McAssetsListGet(McInstance instance)
LocalPath = localPath,
SourcePath = file.Key,
Hash = file.Value["hash"].ToString(),
- Size = Conversions.ToLong(file.Value["size"].ToString())
+ Size = long.Parse(file.Value["size"].ToString())
});
}
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModProfile.cs b/Plain Craft Launcher 2/Modules/Minecraft/ModProfile.cs
index d8e746a20..86a02b8c5 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModProfile.cs
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModProfile.cs
@@ -6,7 +6,6 @@
using System.Text.Json;
using FluentValidation;
using Microsoft.VisualBasic;
-using Microsoft.VisualBasic.CompilerServices;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PCL.Core.App;
@@ -59,16 +58,15 @@ public static void MigrateOldProfile()
ProfileLog("开始从旧版配置迁移档案");
var profileCount = 0;
// 正版档案
- if (Conversions.ToBoolean(
- !Operators.ConditionalCompareObjectEqual(States.Game.LegacyProfile.LoginMsJson, "{}", false)))
+ if (States.Game.LegacyProfile.LoginMsJson != "{}")
{
- var oldMsJson = (JObject)ModBase.GetJson(Conversions.ToString(States.Game.LegacyProfile.LoginMsJson));
+ var oldMsJson = (JObject)ModBase.GetJson(States.Game.LegacyProfile.LoginMsJson);
ProfileLog($"找到 {oldMsJson.Count} 个旧版正版档案信息");
foreach (var Profile in oldMsJson)
{
var newProfile = new McProfile
{
- Username = Profile.Key, Uuid = Conversions.ToString(McLoginMojangUuid(Profile.Key, false)),
+ Username = Profile.Key, Uuid = McLoginMojangUuid(Profile.Key, false)?.ToString() ?? "",
Type = ModLaunch.McLoginType.Ms
};
ProfileList.Add(newProfile);
@@ -77,7 +75,7 @@ public static void MigrateOldProfile()
SaveProfile();
ProfileLog("旧版正版档案迁移完成");
- ModBase.Setup.Reset("LoginMsJson");
+ States.Game.LegacyProfile.LoginMsJson = "{}";
}
else
{
@@ -85,7 +83,7 @@ public static void MigrateOldProfile()
}
// 离线档案
- if (!string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.LoginLegacyName)))
+ if (!string.IsNullOrWhiteSpace(States.Game.LegacyProfile.LoginLegacyName))
{
var oldOfflineInfo = (string[])((dynamic)States.Game.LegacyProfile.LoginLegacyName).Split("¨");
ProfileLog($"找到 {oldOfflineInfo.Count()} 个旧版离线档案信息");
@@ -102,7 +100,7 @@ public static void MigrateOldProfile()
SaveProfile();
ProfileLog("旧版离线档案迁移完成");
- ModBase.Setup.Reset("LoginLegacyName");
+ States.Game.LegacyProfile.LoginLegacyName = "";
}
else
{
@@ -110,32 +108,31 @@ public static void MigrateOldProfile()
}
// 第三方验证档案
- if (!(string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.AuthUserName)) ||
- string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.AuthUuid)) ||
- string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.AuthServerAddress)) ||
- string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.AuthThirdPartyUserName)) ||
- string.IsNullOrWhiteSpace(Conversions.ToString(States.Game.LegacyProfile.AuthPassword))))
+ if (!(string.IsNullOrWhiteSpace(States.Game.LegacyProfile.AuthUserName) ||
+ string.IsNullOrWhiteSpace(States.Game.LegacyProfile.AuthUuid) ||
+ string.IsNullOrWhiteSpace(States.Game.LegacyProfile.AuthServerAddress) ||
+ string.IsNullOrWhiteSpace(States.Game.LegacyProfile.AuthThirdPartyUserName) ||
+ string.IsNullOrWhiteSpace(States.Game.LegacyProfile.AuthPassword)))
{
ProfileLog("找到旧版第三方验证档案信息");
var newProfile = new McProfile
{
- Username = Conversions.ToString(States.Game.LegacyProfile.AuthUserName),
- Uuid = Conversions.ToString(States.Game.LegacyProfile.AuthUuid),
- Name = Conversions.ToString(States.Game.LegacyProfile.AuthThirdPartyUserName),
- Password = Conversions.ToString(States.Game.LegacyProfile.AuthPassword),
- Server = Conversions.ToString(Operators.ConcatenateObject(States.Game.LegacyProfile.AuthServerAddress,
- "/authserver")),
+ Username = States.Game.LegacyProfile.AuthUserName,
+ Uuid = States.Game.LegacyProfile.AuthUuid,
+ Name = States.Game.LegacyProfile.AuthThirdPartyUserName,
+ Password = States.Game.LegacyProfile.AuthPassword,
+ Server = States.Game.LegacyProfile.AuthServerAddress + "/authserver",
Type = ModLaunch.McLoginType.Auth
};
ProfileList.Add(newProfile);
SaveProfile();
ProfileLog("旧版第三方验证档案迁移完成");
profileCount += 1;
- ModBase.Setup.Reset("CacheAuthName");
- ModBase.Setup.Reset("CacheAuthUuid");
- ModBase.Setup.Reset("CacheAuthServerServer");
- ModBase.Setup.Reset("CacheAuthUsername");
- ModBase.Setup.Reset("CacheAuthPass");
+ States.Game.LegacyProfile.AuthUserName = "";
+ States.Game.LegacyProfile.AuthUuid = "";
+ States.Game.LegacyProfile.AuthServerAddress = "";
+ States.Game.LegacyProfile.AuthThirdPartyUserName = "";
+ States.Game.LegacyProfile.AuthPassword = "";
}
else
{
@@ -950,15 +947,7 @@ private static string ToUuidString(byte[] bytes)
msb = (msb << 8) | (bytes[i] & 0xFF);
for (var i = 8; i <= 15; i++)
lsb = (lsb << 8) | (bytes[i] & 0xFF);
- return Conversions.ToString(Operators.AddObject(
- Operators.AddObject(
- Operators.AddObject(
- Operators.AddObject(
- Operators.AddObject(
- Operators.AddObject(
- Operators.AddObject(Operators.AddObject(Digits(msb >> 32, 8), "-"),
- Digits(msb >> 16, 4)), "-"), Digits(msb, 4)), "-"), Digits(lsb >> 48, 4)), "-"),
- Digits(lsb, 12)));
+ return $"{Digits(msb >> 32, 8)}-{Digits(msb >> 16, 4)}-{Digits(msb, 4)}-{Digits(lsb >> 48, 4)}-{Digits(lsb, 12)}";
}
private static object Digits(long val, int digs)
@@ -1061,7 +1050,7 @@ public static ModLaunch.McLoginData GetLoginData(ModLaunch.McLoginType targetAut
/// 检查当前档案是否有效
///
/// 若档案验证有效,则返回空字符串,否则返回错误原因
- public static object IsProfileValid()
+ public static string IsProfileValid()
{
switch (SelectedProfile.Type)
{
@@ -1164,8 +1153,7 @@ public static void ChangeSkinMs()
if (res.Contains("\"error\""))
{
ModMain.Hint(
- Conversions.ToString(Operators.ConcatenateObject("更改皮肤失败:",
- ((JObject)ModBase.GetJson(res))["error"])),
+ $"更改皮肤失败:{((JObject)ModBase.GetJson(res))["error"]}",
ModMain.HintType.Critical);
return;
}
diff --git a/Plain Craft Launcher 2/Modules/ModEvent.cs b/Plain Craft Launcher 2/Modules/ModEvent.cs
index 99f8ffece..db255be4e 100644
--- a/Plain Craft Launcher 2/Modules/ModEvent.cs
+++ b/Plain Craft Launcher 2/Modules/ModEvent.cs
@@ -9,6 +9,7 @@
using System.Windows;
using System.Windows.Markup;
using PCL.Core.App;
+using PCL.Core.App.Configuration;
using PCL.Core.Utils;
using PCL.Core.Utils.Exts;
using PCL.Core.Utils.OS;
@@ -318,7 +319,8 @@ public static void Raise(EventType type, string arg)
case EventType.写入设置:
if (args.Length == 1)
throw new Exception($"EventType {type} 需要至少 2 个以 | 分割的参数,例如 UiLauncherTransparent|400");
- ModBase.Setup.SetSafe(args[0], args[1], instance: ModMinecraft.McInstanceSelected);
+ if (ConfigService.TryGetConfigItemNoType(args[0], out var item) && item.Source != ConfigSource.SharedEncrypt)
+ item.SetValueNoType(args[1], ModMinecraft.McInstanceSelected?.PathInstance);
if (args.Length == 2)
ModMain.Hint($"已写入设置:{args[0]} → {args[1]}", ModMain.HintType.Finish);
break;
@@ -429,7 +431,7 @@ public static string[] GetAbsoluteUrls(string relativeUrl, EventType type)
private static bool EventSafetyConfirm(string message)
{
- if (ModBase.Setup.Get("HintCustomCommand") == "True")
+ if (States.Hint.HomepageCommand)
return true;
switch (ModMain.MyMsgBox(
@@ -442,7 +444,7 @@ private static bool EventSafetyConfirm(string message)
case 1:
return true;
case 2:
- ModBase.Setup.Set("HintCustomCommand", "True");
+ States.Hint.HomepageCommand = true;
return true;
default:
return false;
diff --git a/Plain Craft Launcher 2/Modules/ModMain.cs b/Plain Craft Launcher 2/Modules/ModMain.cs
index 4433f0a9c..6a134ac17 100644
--- a/Plain Craft Launcher 2/Modules/ModMain.cs
+++ b/Plain Craft Launcher 2/Modules/ModMain.cs
@@ -13,6 +13,7 @@
using Microsoft.Win32;
using Newtonsoft.Json.Linq;
using PCL.Core.App;
+using PCL.Core.App.Configuration;
using PCL.Core.App.Localization;
using PCL.Core.UI;
using PCL.Core.Utils;
@@ -1542,7 +1543,12 @@ public static string ArgumentReplace(string text, Func escapeHan
// 高级
text = ModBase.RegexReplaceEach(text, @"\{hint\}", m => replacer(PageToolsTest.GetRandomHint()));
text = ModBase.RegexReplaceEach(text, @"\{cave\}", m => replacer(PageToolsTest.GetRandomCave()));
- text = ModBase.RegexReplaceEach(text, @"\{setup:([a-zA-Z0-9]+)\}", m => replacer(ModBase.Setup.GetSafe(m.Groups[1].Value, ModMinecraft.McInstanceSelected)?.ToString() ?? ""));
+ text = ModBase.RegexReplaceEach(text, @"\{setup:([a-zA-Z0-9]+)\}", m =>
+ {
+ if (ConfigService.TryGetConfigItemNoType(m.Groups[1].Value, out var item) && item.Source != ConfigSource.SharedEncrypt)
+ return replacer(item.GetValueNoType(ModMinecraft.McInstanceSelected?.PathInstance)?.ToString() ?? "");
+ return replacer("");
+ });
text = ModBase.RegexReplaceEach(text, @"\{varible:([^:\}]+)(?::([^\}]+))?\}", m => replacer(CustomEvent.GetCustomVariable(m.Groups[1].Value, m.Groups[2].Value)));
text = ModBase.RegexReplaceEach(text, @"\{variable:([^:\}]+)(?::([^\}]+))?\}", m => replacer(CustomEvent.GetCustomVariable(m.Groups[1].Value, m.Groups[2].Value)));
diff --git a/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.cs b/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.cs
index a5aa11b92..632667954 100644
--- a/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml.cs
@@ -4,8 +4,6 @@
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Threading;
-using Microsoft.VisualBasic;
-using Microsoft.VisualBasic.CompilerServices;
using PCL.Core.App;
using PCL.Core.App.Configuration;
using PCL.Core.IO;
@@ -105,8 +103,8 @@ public void Reload()
RefreshJavaComboBox();
// 游戏内存
- ((MyRadioBox)FindName(Conversions.ToString(Operators.ConcatenateObject("RadioRamType",
- ModBase.Setup.Load("VersionRamType", instance: PageInstanceLeft.Instance))))).Checked = true;
+ var ramType = Config.Instance.MemorySolution[PageInstanceLeft.Instance.PathInstance];
+ ((MyRadioBox)FindName("RadioRamType" + ramType)).Checked = true;
SliderRamCustom.Value = Config.Instance.CustomMemorySize[PageInstanceLeft.Instance.PathInstance];
// 服务器
@@ -126,12 +124,10 @@ public void Reload()
TextAdvanceRun.Text = Config.Instance.PreLaunchCommand[PageInstanceLeft.Instance.PathInstance];
CheckAdvanceRunWait.Checked = Config.Instance.PreLaunchCommandWait[PageInstanceLeft.Instance.PathInstance];
CheckAdvanceDisableLwjglUnsafeAgent.Checked = Config.Instance.DisableLwjglUnsafeAgent[PageInstanceLeft.Instance.PathInstance];
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(
- ModBase.Setup.Get("VersionAdvanceAssets", PageInstanceLeft.Instance), 2, false)))
+ if (Config.Instance.AssetVerifySolutionV1[PageInstanceLeft.Instance.PathInstance] == 2)
{
ModBase.Log("[Setup] 已迁移老版本的关闭文件校验设置");
- ModBase.Setup.Reset("VersionAdvanceAssets", instance: PageInstanceLeft.Instance);
+ Config.Instance.AssetVerifySolutionV1Config.Reset(PageInstanceLeft.Instance.PathInstance);
Config.Instance.DisableAssetVerifyV2[PageInstanceLeft.Instance.PathInstance] = true;
}
@@ -185,7 +181,7 @@ private void RadioBoxChange(object o, ModBase.RouteEventArgs routeEventArgs)
var sender = (MyRadioBox)o;
var gotCfg = sender.Tag.ToString().Split("/");
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(gotCfg[0], int.Parse(gotCfg[1]), instance: PageInstanceLeft.Instance);
+ SetInstanceByTag(gotCfg[0], int.Parse(gotCfg[1]));
}
private void TextBoxChange(object o, TextChangedEventArgs textChangedEventArgs)
@@ -194,8 +190,7 @@ private void TextBoxChange(object o, TextChangedEventArgs textChangedEventArgs)
return;
if (o is not MyTextBox textBox) return;
- // 使用新配置系统保存
- var tag = Conversions.ToString(textBox.Tag);
+ var tag = textBox.Tag?.ToString();
var value = textBox.Text;
ArgConfig setting = tag switch
{
@@ -218,14 +213,24 @@ private void SliderChange(object o, bool user)
{
var sender = (MySlider)o;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(Conversions.ToString(sender.Tag), sender.Value, instance: PageInstanceLeft.Instance);
+ SetInstanceByTag(sender.Tag?.ToString(), sender.Value);
}
private static void ComboChange(MyComboBox sender, object e)
{
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(Conversions.ToString(sender.Tag), sender.SelectedIndex,
- instance: PageInstanceLeft.Instance);
+ SetInstanceByTag(sender.Tag?.ToString(), sender.SelectedIndex);
+ }
+
+ private static void SetInstanceByTag(string tag, object value)
+ {
+ var path = PageInstanceLeft.Instance.PathInstance;
+ switch (tag)
+ {
+ case "VersionRamType": Config.Instance.MemorySolution[path] = (int)value; break;
+ case "VersionRamCustom": Config.Instance.CustomMemorySize[path] = (int)value; break;
+ case "VersionServerLoginRequire": Config.InstanceAuth.LoginRequirementSolution[path] = (int)value; break;
+ }
}
private void CheckBoxChange(object sender, bool user)
@@ -234,7 +239,7 @@ private void CheckBoxChange(object sender, bool user)
return;
if (sender is not MyCheckBox checkBox) return;
- var tag = Conversions.ToString(checkBox.Tag);
+ var tag = checkBox.Tag?.ToString();
var value = checkBox.Checked.GetValueOrDefault();
ArgConfig setting = tag switch
{
@@ -456,9 +461,9 @@ private void RefreshRamText()
///
public static double GetRam(ModMinecraft.McInstance Version, bool? Is32BitJava = default)
{
+ var instancePath = Version?.PathInstance;
// 跟随全局设置
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(ModBase.Setup.Get("VersionRamType", Version), 2, false)))
+ if (Config.Instance.MemorySolution[instancePath] == 2)
return PageSetupLaunch.GetRam(Version, true, Is32BitJava);
// ------------------------------------------
@@ -467,8 +472,7 @@ public static double GetRam(ModMinecraft.McInstance Version, bool? Is32BitJava =
// 使用当前实例的设置
var RamGive = default(double);
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(ModBase.Setup.Get("VersionRamType", Version), 0, false)))
+ if (Config.Instance.MemorySolution[instancePath] == 0)
{
// 自动配置
var RamAvailable =
@@ -540,7 +544,7 @@ public static double GetRam(ModMinecraft.McInstance Version, bool? Is32BitJava =
else
{
// 手动配置
- var Value = Conversions.ToInteger(ModBase.Setup.Get("VersionRamCustom", Version));
+ var Value = Config.Instance.CustomMemorySize[instancePath];
if (Value <= 12)
RamGive = Value * 0.1d + 0.3d;
else if (Value <= 25)
@@ -625,7 +629,7 @@ public void ServerLogin(int Type)
BtnServerAuthLock.Visibility = Visibility.Collapsed;
else
BtnServerAuthLock.Visibility = Visibility.Visible;
- if (Conversions.ToBoolean(ModBase.Setup.Get("VersionServerLoginLock", PageInstanceLeft.Instance)))
+ if (Config.InstanceAuth.AuthLocked[PageInstanceLeft.Instance.PathInstance])
{
HintServerLoginLock.Visibility = Visibility.Visible;
ComboServerLoginRequire.IsEnabled = false;
@@ -891,9 +895,8 @@ private void ComboArgumentJava_DropDownOpened(object? sender, EventArgs e)
var firstItem = ComboArgumentJava.Items[0] as MyComboBoxItem;
if (firstItem is not null &&
- (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(firstItem.Content, "未检测到可用的 Java 运行时", false)) ||
- Conversions.ToBoolean(Operators.ConditionalCompareObjectEqual(firstItem.Content, "列表加载失败,请重试", false))))
+ ((string)firstItem.Content == "未检测到可用的 Java 运行时" ||
+ (string)firstItem.Content == "列表加载失败,请重试"))
ComboArgumentJava.IsDropDownOpen = false;
}
@@ -907,9 +910,7 @@ private void JavaSelectionUpdate(object sender, SelectionChangedEventArgs e)
var selectedItem = ComboArgumentJava.SelectedItem as MyComboBoxItem;
if (selectedItem is null || (selectedItem.Tag is null &&
- Conversions.ToBoolean(
- Operators.ConditionalCompareObjectNotEqual(selectedItem.Content,
- "自动选择合适的 Java", false))))
+ (string)selectedItem.Content != "自动选择合适的 Java"))
return;
JavaPreference preference = default;
@@ -1025,7 +1026,7 @@ private void ComboAdvanceRenderer_SelectionChanged(object sender, SelectionChang
var args = (SelectionChangedEventArgs)e; // 转换事件参数
- if (Conversions.ToBoolean(!(bool)States.Hint.Renderer && ComboAdvanceRenderer.SelectedIndex != 0))
+ if (!States.Hint.Renderer && ComboAdvanceRenderer.SelectedIndex != 0)
{
if (ModMain.MyMsgBox("""
修改此项会严重影响游戏的稳定性与性能。如果你不知道你在做什么,不要修改此选项!
diff --git a/Plain Craft Launcher 2/Pages/PageLogRight.xaml.cs b/Plain Craft Launcher 2/Pages/PageLogRight.xaml.cs
index 5c7a9504a..bc9ad6f85 100644
--- a/Plain Craft Launcher 2/Pages/PageLogRight.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageLogRight.xaml.cs
@@ -126,7 +126,7 @@ private void OnLogOutput(ModWatcher.Watcher sender, ModWatcher.LogOutputEventArg
private void SliderMaxLog_ValueChanged(object o, bool user)
{
var sender = (MySlider)o;
- ModBase.Setup.Set(sender.Tag.ToString(), sender.Value);
+ Config.System.MaxGameLog = sender.Value;
if (ModMain.FrmSetupLauncherMisc is null)
return;
ModMain.FrmSetupLauncherMisc.SliderMaxLog.Value = sender.Value;
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameLink.xaml.cs b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameLink.xaml.cs
index 1edb04811..9657edaf5 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameLink.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameLink.xaml.cs
@@ -96,7 +96,7 @@ private void TextBoxChange(object senderRaw, TextChangedEventArgs e) // , TextLi
{
var sender = (MyTextBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Text);
+ SetGameLinkByTag(sender.Tag?.ToString(), sender.Text);
}
private static void
@@ -104,14 +104,30 @@ private static void
object e) // Handles ComboRelayType.SelectionChanged, ComboServerType.SelectionChanged
{
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetGameLinkByTag(sender.Tag?.ToString(), sender.SelectedIndex);
}
private void CheckBoxChange(object senderRaw, bool user)
{
var sender = (MyCheckBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Checked);
+ SetGameLinkByTag(sender.Tag?.ToString(), sender.Checked);
+ }
+
+ private static void SetGameLinkByTag(string tag, object value)
+ {
+ switch (tag)
+ {
+ case "LinkUsername": Config.Link.Username = (string)value; break;
+ case "LinkRelayServer": Config.Link.CustomRelayServer = (string)value; break;
+ case "LinkRelayType": Config.Link.RelayType = (LinkRelayBehavior)(int)value; break;
+ case "LinkServerType": Config.Link.ServerType = (int)value; break;
+ case "LinkProtocolPreference": Config.Link.ProtocolPreference = (LinkProtocolPreference)(int)value; break;
+ case "LinkLatencyFirstMode": Config.Link.UseLatencyFirstMode = (bool)value; break;
+ case "LinkTryPunchSym": Config.Link.TryPunchSym = (bool)value; break;
+ case "LinkEnableIPv6": Config.Link.EnableIPv6 = (bool)value; break;
+ case "LinkEnableCliOutput": Config.Link.EnableCliOutput = (bool)value; break;
+ }
}
private void LinkProtocolPerferenceChange(object sender, SelectionChangedEventArgs e)
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameManage.xaml.cs b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameManage.xaml.cs
index fc89fd3ec..b0e07e154 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameManage.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupGameManage.xaml.cs
@@ -38,19 +38,19 @@ public void Reload()
SliderDownloadSpeed.Value = Config.Download.SpeedLimit;
ComboDownloadSource.SelectedIndex = Config.Download.FileSource;
ComboDownloadVersion.SelectedIndex = Config.Download.VersionListSource;
- CheckDownloadAutoSelectVersion.Checked = (bool?)Config.Download.AutoSelectInstance;
- CheckFixAuthlib.Checked = (bool?)Config.Download.FixAuthLib;
+ CheckDownloadAutoSelectVersion.Checked = Config.Download.AutoSelectInstance;
+ CheckFixAuthlib.Checked = Config.Download.FixAuthLib;
// Mod 与整合包
ComboDownloadTranslateV2.SelectedIndex = Config.Download.Comp.NameFormatV2;
ComboDownloadMod.SelectedIndex = Config.Download.Comp.CompSourceSolution;
ComboModLocalNameStyle.SelectedIndex = Config.Download.Comp.UiCompNameSolution;
- CheckDownloadIgnoreQuilt.Checked = (bool?)Config.Download.Comp.IgnoreQuilt;
- CheckDownloadClipboard.Checked = (bool?)Config.Download.Comp.ReadClipboard;
+ CheckDownloadIgnoreQuilt.Checked = Config.Download.Comp.IgnoreQuilt;
+ CheckDownloadClipboard.Checked = Config.Download.Comp.ReadClipboard;
// Minecraft 更新提示
- CheckUpdateRelease.Checked = (bool?)Config.Tool.ReleaseNotification;
- CheckUpdateSnapshot.Checked = (bool?)Config.Tool.SnapshotNotification;
+ CheckUpdateRelease.Checked = Config.Tool.ReleaseNotification;
+ CheckUpdateSnapshot.Checked = Config.Tool.SnapshotNotification;
// 辅助设置
CheckHelpLauncherLanguage.Checked = Config.Tool.AutoChangeLanguage;
@@ -79,21 +79,42 @@ private void CheckBoxChange(object senderRaw, bool user)
{
var sender = (MyCheckBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Checked);
+ SetGameManageByTag(sender.Tag?.ToString(), sender.Checked);
}
private void SliderChange(object senderRaw, bool user)
{
var sender = (MySlider)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Value);
+ SetGameManageByTag(sender.Tag?.ToString(), sender.Value);
}
private void ComboChange(object senderRaw, SelectionChangedEventArgs e)
{
var sender = (MyComboBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetGameManageByTag(sender.Tag?.ToString(), sender.SelectedIndex);
+ }
+
+ private static void SetGameManageByTag(string tag, object value)
+ {
+ switch (tag)
+ {
+ case "ToolDownloadThread": Config.Download.ThreadLimit = (int)value; break;
+ case "ToolDownloadSpeed": Config.Download.SpeedLimit = (int)value; break;
+ case "ToolDownloadSource": Config.Download.FileSource = (int)value; break;
+ case "ToolDownloadVersion": Config.Download.VersionListSource = (int)value; break;
+ case "ToolDownloadAutoSelectVersion": Config.Download.AutoSelectInstance = (bool)value; break;
+ case "ToolFixAuthlib": Config.Download.FixAuthLib = (bool)value; break;
+ case "ToolDownloadTranslateV2": Config.Download.Comp.NameFormatV2 = (int)value; break;
+ case "ToolDownloadMod": Config.Download.Comp.CompSourceSolution = (int)value; break;
+ case "ToolModLocalNameStyle": Config.Download.Comp.UiCompNameSolution = (int)value; break;
+ case "ToolDownloadIgnoreQuilt": Config.Download.Comp.IgnoreQuilt = (bool)value; break;
+ case "ToolDownloadClipboard": Config.Download.Comp.ReadClipboard = (bool)value; break;
+ case "ToolUpdateRelease": Config.Tool.ReleaseNotification = (bool)value; break;
+ case "ToolUpdateSnapshot": Config.Tool.SnapshotNotification = (bool)value; break;
+ case "ToolHelpChinese": Config.Tool.AutoChangeLanguage = (bool)value; break;
+ }
}
// 滑动条
@@ -121,7 +142,7 @@ private void SliderDownloadThread_PreviewChange(object sender, ModBase.RouteEven
{
if (SliderDownloadThread.Value < 100)
return;
- if (!(States.Hint.LargeDownloadThread as bool? ?? false))
+ if (!States.Hint.LargeDownloadThread)
{
States.Hint.LargeDownloadThread = true;
ModMain.MyMsgBox(
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.cs b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.cs
index 05f77b7ec..b7bf6be6e 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.cs
@@ -60,10 +60,9 @@ public void Reload()
TextArgumentWindowHeight.Text = Config.Launch.GameWindowHeight.ToString();
ComboMsAuthType.SelectedIndex = Config.Launch.LoginMsAuthType;
ComboPreferredIpStack.SelectedIndex = (int)Config.Launch.PreferredIpStack;
- // CheckArgumentJavaTraversal.Checked = Setup.Get("LaunchArgumentJavaTraversal")
// 游戏内存
- ((MyRadioBox)FindName("RadioRamType" + ModBase.Setup.Load("LaunchRamType"))).Checked = true;
+ ((MyRadioBox)FindName("RadioRamType" + Config.Launch.MemoryAllocationMode)).Checked = true;
SliderRamCustom.Value = Config.Launch.CustomMemorySize;
// 高级设置
@@ -122,42 +121,69 @@ private void RadioBoxChange(object senderRaw, ModBase.RouteEventArgs e)
var sender = (MyRadioBox)senderRaw;
var gotCfg = sender.Tag?.ToString()?.Split("/") ?? Array.Empty();
if (ModAnimation.AniControlEnabled == 0 && gotCfg.Length >= 2)
- ModBase.Setup.Set(gotCfg[0], int.Parse(gotCfg[1]));
+ SetLaunchByTag(gotCfg[0], int.Parse(gotCfg[1]));
}
private void TextBoxChange(object senderRaw, RoutedEventArgs e)
{
var sender = (MyTextBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Text);
+ SetLaunchByTag(sender.Tag?.ToString(), sender.Text);
}
private void TextArgumentTitle_OnTextChanged(object senderRaw, TextChangedEventArgs e)
{
var sender = (MyTextBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Text);
+ SetLaunchByTag(sender.Tag?.ToString(), sender.Text);
}
private void SliderChange(object senderRaw, bool user)
{
var sender = (MySlider)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Value);
+ SetLaunchByTag(sender.Tag?.ToString(), sender.Value);
}
private void ComboChange(object senderRaw, SelectionChangedEventArgs e)
{
var sender = (MyComboBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetLaunchByTag(sender.Tag?.ToString(), sender.SelectedIndex);
}
private void CheckBoxChange(object senderRaw, bool user)
{
var sender = (MyCheckBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Checked);
+ SetLaunchByTag(sender.Tag?.ToString(), sender.Checked);
+ }
+
+ private static void SetLaunchByTag(string tag, object value)
+ {
+ switch (tag)
+ {
+ case "LaunchRamType": Config.Launch.MemoryAllocationMode = (int)value; break;
+ case "LaunchRamCustom": Config.Launch.CustomMemorySize = (int)value; break;
+ case "LaunchArgumentTitle": Config.Launch.Title = (string)value; break;
+ case "LaunchArgumentInfo": Config.Launch.TypeInfo = (string)value; break;
+ case "LaunchArgumentIndieV2": Config.Launch.IndieSolutionV2 = (int)value; break;
+ case "LaunchArgumentVisible": Config.Launch.LauncherVisibility = (LauncherVisibility)(int)value; break;
+ case "LaunchArgumentPriority": Config.Launch.ProcessPriority = (GameProcessPriority)(int)value; break;
+ case "LaunchArgumentWindowType": Config.Launch.GameWindowMode = (GameWindowSizeMode)(int)value; break;
+ case "LoginMsAuthType": Config.Launch.LoginMsAuthType = (int)value; break;
+ case "LaunchPreferredIpStack": Config.Launch.PreferredIpStack = (JvmPreferredIpStack)(int)value; break;
+ case "LaunchAdvanceRenderer": Config.Launch.Renderer = (int)value; break;
+ case "LaunchAdvanceJvm": Config.Launch.JvmArgs = (string)value; break;
+ case "LaunchAdvanceGame": Config.Launch.GameArgs = (string)value; break;
+ case "LaunchAdvanceRun": Config.Launch.PreLaunchCommand = (string)value; break;
+ case "LaunchAdvanceRunWait": Config.Launch.PreLaunchCommandWait = (bool)value; break;
+ case "LaunchAdvanceDisableJLW": Config.Launch.DisableJlw = (bool)value; break;
+ case "LaunchAdvanceDisableRW": Config.Launch.DisableRw = (bool)value; break;
+ case "LaunchAdvanceGraphicCard": Config.Launch.SetGpuPreference = (bool)value; break;
+ case "LaunchAdvanceNoJavaw": Config.Launch.NoJavaw = (bool)value; break;
+ case "LaunchAdvanceDisableLwjglUnsafeAgent": Config.Launch.DisableLwjglUnsafeAgent = (bool)value; break;
+ }
}
// 切换到实例独立设置
@@ -533,14 +559,14 @@ private void TextAdvanceRun_TextChanged(object sender, TextChangedEventArgs e)
private void TextAdvanceJvm_TextChanged(object sender, TextChangedEventArgs e)
{
BtnAdvanceJvmReset.Visibility =
- TextAdvanceJvm.Text == (string)ModBase.Setup.GetDefault("LaunchAdvanceJvm")
+ TextAdvanceJvm.Text == Config.Launch.JvmArgsConfig.DefaultValue
? Visibility.Hidden
: Visibility.Visible;
}
private void BtnAdvanceJvmReset_Click(object sender, EventArgs e)
{
- ModBase.Setup.Reset("LaunchAdvanceJvm");
+ Config.Launch.JvmArgsConfig.Reset();
Reload();
}
@@ -559,13 +585,13 @@ private void ComboAdvanceRenderer_SelectionChanged(MyComboBox sender, object e)
}
else
{
- ModBase.Setup.Set((string)sender.Tag, sender.SelectedIndex);
+ Config.Launch.Renderer = sender.SelectedIndex;
States.Hint.Renderer = true;
}
}
else
{
- ModBase.Setup.Set((string)sender.Tag, sender.SelectedIndex);
+ Config.Launch.Renderer = sender.SelectedIndex;
}
}
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLauncherMisc.xaml.cs b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLauncherMisc.xaml.cs
index 2e5153225..d8a805618 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLauncherMisc.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLauncherMisc.xaml.cs
@@ -86,7 +86,7 @@ private void ComboChange(object senderRaw, SelectionChangedEventArgs e)
{
var sender = (MyComboBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetMiscByTag(sender.Tag?.ToString(), sender.SelectedIndex);
}
private void RadioBoxChange(object senderRaw, ModBase.RouteEventArgs e)
@@ -94,21 +94,38 @@ private void RadioBoxChange(object senderRaw, ModBase.RouteEventArgs e)
var sender = (MyRadioBox)senderRaw;
var gotCfg = sender.Tag?.ToString()?.Split("/") ?? Array.Empty();
if (ModAnimation.AniControlEnabled == 0 && gotCfg.Length >= 2)
- ModBase.Setup.Set(gotCfg[0], int.Parse(gotCfg[1]));
+ SetMiscByTag(gotCfg[0], int.Parse(gotCfg[1]));
}
private void CheckBoxChange(object senderRaw, bool user)
{
var sender = (MyCheckBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Checked);
+ SetMiscByTag(sender.Tag?.ToString(), sender.Checked);
}
private void SliderChange(object senderRaw, bool user)
{
var sender = (MySlider)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Value);
+ SetMiscByTag(sender.Tag?.ToString(), sender.Value);
+ }
+
+ private static void SetMiscByTag(string tag, object value)
+ {
+ switch (tag)
+ {
+ case "SystemMaxLog": Config.System.MaxGameLog = (int)value; break;
+ case "SystemDebugMode": Config.Debug.Enabled = (bool)value; break;
+ case "SystemDebugAnim": Config.Debug.AnimationSpeed = (int)value; break;
+ case "SystemDebugDelay": Config.Debug.AddRandomDelay = (bool)value; break;
+ case "SystemDebugSkipCopy": Config.Debug.DontCopy = (bool)value; break;
+ case "SystemDisableHardwareAcceleration": Config.System.DisableHardwareAcceleration = (bool)value; break;
+ case "SystemHttpProxyType": Config.Network.HttpProxy.Type = (int)value; break;
+ case "SystemNetEnableDoH": Config.Network.EnableDoH = (bool)value; break;
+ case "SystemTelemetry": Config.System.Telemetry = (bool)value; break;
+ case "UiAniFPS": Config.System.AnimationFpsLimit = (int)value; break;
+ }
}
// 网络
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.cs b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.cs
index 03a3cce90..49aba17ac 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.cs
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.cs
@@ -2,8 +2,6 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
-using Microsoft.VisualBasic;
-using Microsoft.VisualBasic.CompilerServices;
using PCL.Core.App;
using PCL.Core.UI;
using PCL.Core.Utils;
@@ -50,70 +48,68 @@ public void Reload()
try
{
// 启动器
- SliderLauncherOpacity.Value = Conversions.ToInteger(Config.Preference.Theme.WindowOpacity);
- CheckLauncherLogo.Checked = (bool?)Config.Preference.ShowStartupLogo;
- ComboDarkMode.SelectedIndex = Conversions.ToInteger(Config.Preference.Theme.ColorMode);
- ComboDarkColor.SelectedIndex = Conversions.ToInteger(Config.Preference.Theme.DarkColor);
- ComboLightColor.SelectedIndex = Conversions.ToInteger(Config.Preference.Theme.LightColor);
- CheckShowLaunchingHint.Checked = (bool?)Config.Preference.ShowLaunchingHint;
+ SliderLauncherOpacity.Value = Config.Preference.Theme.WindowOpacity;
+ CheckLauncherLogo.Checked = Config.Preference.ShowStartupLogo;
+ ComboDarkMode.SelectedIndex = (int)Config.Preference.Theme.ColorMode;
+ ComboDarkColor.SelectedIndex = (int)Config.Preference.Theme.DarkColor;
+ ComboLightColor.SelectedIndex = (int)Config.Preference.Theme.LightColor;
+ CheckShowLaunchingHint.Checked = Config.Preference.ShowLaunchingHint;
// 字体设置
- ComboUiFont.SelectedFontTag = Conversions.ToString(Config.Preference.Font);
- ComboUiMotdFont.SelectedFontTag = Conversions.ToString(Config.Preference.MotdFont);
+ ComboUiFont.SelectedFontTag = Config.Preference.Font;
+ ComboUiMotdFont.SelectedFontTag = Config.Preference.MotdFont;
- CheckBlur.Checked = (bool?)Config.Preference.Blur.IsEnabled;
- SliderBlurValue.Value = Conversions.ToInteger(Config.Preference.Blur.Radius);
- SliderBlurSamplingRate.Value = Conversions.ToInteger(Config.Preference.Blur.SamplingRate);
- ComboBlurType.SelectedIndex = Conversions.ToInteger(Config.Preference.Blur.KernelType);
+ CheckBlur.Checked = Config.Preference.Blur.IsEnabled;
+ SliderBlurValue.Value = Config.Preference.Blur.Radius;
+ SliderBlurSamplingRate.Value = Config.Preference.Blur.SamplingRate;
+ ComboBlurType.SelectedIndex = Config.Preference.Blur.KernelType;
PanBlurValue.Visibility = CheckBlur.Checked == true ? Visibility.Visible : Visibility.Collapsed;
- CheckLockWindowSize.Checked = (bool?)Config.Preference.LockWindowSize;
+ CheckLockWindowSize.Checked = Config.Preference.LockWindowSize;
// 背景图片
- SliderBackgroundOpacity.Value = Conversions.ToInteger(Config.Preference.Background.WallpaperOpacity);
- SliderBackgroundBlur.Value = Conversions.ToInteger(Config.Preference.Background.WallpaperBlurRadius);
- ComboBackgroundSuit.SelectedIndex = Conversions.ToInteger(Config.Preference.Background.WallpaperSuitMode);
- CheckBackgroundColorful.Checked = (bool?)Config.Preference.Background.BackgroundColorful;
+ SliderBackgroundOpacity.Value = Config.Preference.Background.WallpaperOpacity;
+ SliderBackgroundBlur.Value = Config.Preference.Background.WallpaperBlurRadius;
+ ComboBackgroundSuit.SelectedIndex = Config.Preference.Background.WallpaperSuitMode;
+ CheckBackgroundColorful.Checked = Config.Preference.Background.BackgroundColorful;
var autoPauseVideo = Config.Preference.Background.AutoPauseVideo;
- CheckAutoPauseVideo.Checked = (bool?)autoPauseVideo;
+ CheckAutoPauseVideo.Checked = autoPauseVideo;
if (ModVideoBack.IsGaming)
- if (Conversions.ToBoolean(Operators.ConditionalCompareObjectEqual(autoPauseVideo, true, false)))
+ if (autoPauseVideo)
BtnBackgroundRefresh.IsEnabled = false;
BackgroundRefresh(false, false);
// 标题栏
- ((MyRadioBox)FindName(
- Conversions.ToString(Operators.ConcatenateObject("RadioLogoType",
- Config.Preference.WindowTitleType))))
+ ((MyRadioBox)FindName("RadioLogoType" + (int)Config.Preference.WindowTitleType))
.Checked = true;
CheckLogoLeft.Visibility = RadioLogoType0.Checked ? Visibility.Visible : Visibility.Collapsed;
PanLogoText.Visibility = RadioLogoType2.Checked ? Visibility.Visible : Visibility.Collapsed;
PanLogoChange.Visibility = RadioLogoType3.Checked ? Visibility.Visible : Visibility.Collapsed;
- TextLogoText.Text = Conversions.ToString(Config.Preference.WindowTitleCustomText);
- CheckLogoLeft.Checked = (bool?)Config.Preference.TopBarLeftAlign;
+ TextLogoText.Text = Config.Preference.WindowTitleCustomText;
+ CheckLogoLeft.Checked = Config.Preference.TopBarLeftAlign;
// 背景音乐
- CheckMusicRandom.Checked = (bool?)Config.Preference.Music.ShufflePlayback;
- CheckMusicAuto.Checked = (bool?)Config.Preference.Music.StartOnStartup;
- CheckMusicStop.Checked = (bool?)Config.Preference.Music.StopInGame;
- CheckMusicStart.Checked = (bool?)Config.Preference.Music.StartInGame;
- CheckMusicSMTC.Checked = (bool?)Config.Preference.Music.EnableSMTC;
- SliderMusicVolume.Value = Conversions.ToInteger(Config.Preference.Music.Volume);
+ CheckMusicRandom.Checked = Config.Preference.Music.ShufflePlayback;
+ CheckMusicAuto.Checked = Config.Preference.Music.StartOnStartup;
+ CheckMusicStop.Checked = Config.Preference.Music.StopInGame;
+ CheckMusicStart.Checked = Config.Preference.Music.StartInGame;
+ CheckMusicSMTC.Checked = Config.Preference.Music.EnableSMTC;
+ SliderMusicVolume.Value = Config.Preference.Music.Volume;
MusicRefreshUI();
// 主页
try
{
- ComboCustomPreset.SelectedIndex = Conversions.ToInteger(Config.Preference.Homepage.SelectedPreset);
+ ComboCustomPreset.SelectedIndex = Config.Preference.Homepage.SelectedPreset;
}
catch
{
- ModBase.Setup.Reset("UiCustomPreset");
+ Config.Preference.Homepage.SelectedPresetConfig.Reset();
}
- ((MyRadioBox)FindName(Conversions.ToString(Operators.ConcatenateObject("RadioCustomType",
- ModBase.Setup.Load("UiCustomType", true))))).Checked = true;
- TextCustomNet.Text = Conversions.ToString(Config.Preference.Homepage.CustomUrl);
+ ((MyRadioBox)FindName("RadioCustomType" + Config.Preference.Homepage.Type)).Checked = true;
+ TextCustomNet.Text = Config.Preference.Homepage.CustomUrl;
+ ModSetup.UiCustomType(Config.Preference.Homepage.Type);
// 功能隐藏
// 获取配置组引用
@@ -191,28 +187,28 @@ private void SliderChange(object senderRaw, bool user)
{
var sender = (MySlider)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Value);
+ SetByTag(sender.Tag?.ToString(), sender.Value);
}
private void ComboChange(object senderRaw, SelectionChangedEventArgs e)
{
var sender = (MyComboBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetByTag(sender.Tag?.ToString(), sender.SelectedIndex);
}
private void CheckBoxChange(object senderRaw, bool user)
{
var sender = (MyCheckBox)senderRaw;
- // 仅在动画未运行或初始化完成时保存设置,防止初始化时的触发导致重复写入
- if (ModAnimation.AniControlEnabled == 0) ModBase.Setup.Set(sender.Tag?.ToString(), sender.Checked);
+ if (ModAnimation.AniControlEnabled == 0)
+ SetByTag(sender.Tag?.ToString(), sender.Checked);
}
private void TextBoxChange(object senderRaw, RoutedEventArgs e)
{
var sender = (MyTextBox)senderRaw;
if (ModAnimation.AniControlEnabled == 0)
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.Text);
+ SetByTag(sender.Tag?.ToString(), sender.Text);
}
private void RadioBoxChange(object senderRaw, ModBase.RouteEventArgs e)
@@ -220,7 +216,73 @@ private void RadioBoxChange(object senderRaw, ModBase.RouteEventArgs e)
var sender = (MyRadioBox)senderRaw;
var gotCfg = sender.Tag?.ToString()?.Split("/") ?? Array.Empty();
if (ModAnimation.AniControlEnabled == 0 && gotCfg.Length >= 2)
- ModBase.Setup.Set(gotCfg[0], int.Parse(gotCfg[1]));
+ SetByTag(gotCfg[0], int.Parse(gotCfg[1]));
+ }
+
+ private static void SetByTag(string tag, object value)
+ {
+ switch (tag)
+ {
+ case "UiLauncherTransparent": Config.Preference.Theme.WindowOpacity = (int)value; break;
+ case "UiBackgroundOpacity": Config.Preference.Background.WallpaperOpacity = (int)value; break;
+ case "UiBackgroundBlur": Config.Preference.Background.WallpaperBlurRadius = (int)value; break;
+ case "UiBlurValue": Config.Preference.Blur.Radius = (int)value; break;
+ case "UiBlurSamplingRate": Config.Preference.Blur.SamplingRate = (int)value; break;
+ case "UiMusicVolume": Config.Preference.Music.Volume = (int)value; break;
+
+ case "UiLauncherLogo": Config.Preference.ShowStartupLogo = (bool)value; break;
+ case "UiShowLaunchingHint": Config.Preference.ShowLaunchingHint = (bool)value; break;
+ case "UiLockWindowSize": Config.Preference.LockWindowSize = (bool)value; break;
+ case "UiBlur": Config.Preference.Blur.IsEnabled = (bool)value; break;
+ case "UiAutoPauseVideo": Config.Preference.Background.AutoPauseVideo = (bool)value; break;
+ case "UiBackgroundColorful": Config.Preference.Background.BackgroundColorful = (bool)value; break;
+ case "UiMusicRandom": Config.Preference.Music.ShufflePlayback = (bool)value; break;
+ case "UiMusicAuto": Config.Preference.Music.StartOnStartup = (bool)value; break;
+ case "UiMusicStart": Config.Preference.Music.StartInGame = (bool)value; break;
+ case "UiMusicStop": Config.Preference.Music.StopInGame = (bool)value; break;
+ case "UiMusicSMTC": Config.Preference.Music.EnableSMTC = (bool)value; break;
+ case "UiLogoLeft": Config.Preference.TopBarLeftAlign = (bool)value; break;
+
+ case "UiDarkMode": Config.Preference.Theme.ColorMode = (ColorMode)(int)value; break;
+ case "UiDarkColor": Config.Preference.Theme.DarkColor = (ColorTheme)(int)value; break;
+ case "UiLightColor": Config.Preference.Theme.LightColor = (ColorTheme)(int)value; break;
+ case "UiBlurType": Config.Preference.Blur.KernelType = (int)value; break;
+ case "UiBackgroundSuit": Config.Preference.Background.WallpaperSuitMode = (int)value; break;
+ case "UiCustomPreset": Config.Preference.Homepage.SelectedPreset = (int)value; break;
+ case "UiLogoType": Config.Preference.WindowTitleType = (LauncherTitleType)(int)value; break;
+ case "UiLogoText": Config.Preference.WindowTitleCustomText = (string)value; break;
+ case "UiCustomType": Config.Preference.Homepage.Type = (int)value; break;
+
+ case "UiHiddenPageDownload": Config.Preference.Hide.PageDownload = (bool)value; break;
+ case "UiHiddenPageSetup": Config.Preference.Hide.PageSetup = (bool)value; break;
+ case "UiHiddenPageTools": Config.Preference.Hide.PageTools = (bool)value; break;
+ case "UiHiddenSetupLaunch": Config.Preference.Hide.SetupLaunch = (bool)value; break;
+ case "UiHiddenSetupUi": Config.Preference.Hide.SetupUi = (bool)value; break;
+ case "UiHiddenSetupLauncherLanguage": Config.Preference.Hide.SetupLauncherLanguage = (bool)value; break;
+ case "UiHiddenSetupLauncherMisc": Config.Preference.Hide.SetupLauncherMisc = (bool)value; break;
+ case "UiHiddenSetupGameManage": Config.Preference.Hide.SetupGameManage = (bool)value; break;
+ case "UiHiddenSetupJava": Config.Preference.Hide.SetupJava = (bool)value; break;
+ case "UiHiddenSetupUpdate": Config.Preference.Hide.SetupUpdate = (bool)value; break;
+ case "UiHiddenSetupGameLink": Config.Preference.Hide.SetupGameLink = (bool)value; break;
+ case "UiHiddenSetupAbout": Config.Preference.Hide.SetupAbout = (bool)value; break;
+ case "UiHiddenSetupFeedback": Config.Preference.Hide.SetupFeedback = (bool)value; break;
+ case "UiHiddenSetupLog": Config.Preference.Hide.SetupLog = (bool)value; break;
+ case "UiHiddenToolsGameLink": Config.Preference.Hide.ToolsGameLink = (bool)value; break;
+ case "UiHiddenToolsHelp": Config.Preference.Hide.ToolsHelp = (bool)value; break;
+ case "UiHiddenToolsTest": Config.Preference.Hide.ToolsTest = (bool)value; break;
+ case "UiHiddenVersionEdit": Config.Preference.Hide.InstanceEdit = (bool)value; break;
+ case "UiHiddenVersionExport": Config.Preference.Hide.InstanceExport = (bool)value; break;
+ case "UiHiddenVersionSave": Config.Preference.Hide.InstanceSave = (bool)value; break;
+ case "UiHiddenVersionScreenshot": Config.Preference.Hide.InstanceScreenshot = (bool)value; break;
+ case "UiHiddenVersionMod": Config.Preference.Hide.InstanceMod = (bool)value; break;
+ case "UiHiddenVersionResourcePack": Config.Preference.Hide.InstanceResourcePack = (bool)value; break;
+ case "UiHiddenVersionShader": Config.Preference.Hide.InstanceShader = (bool)value; break;
+ case "UiHiddenVersionSchematic": Config.Preference.Hide.InstanceSchematic = (bool)value; break;
+ case "UiHiddenVersionServer": Config.Preference.Hide.InstanceServer = (bool)value; break;
+ case "UiHiddenFunctionSelect": Config.Preference.Hide.FunctionSelect = (bool)value; break;
+ case "UiHiddenFunctionModUpdate": Config.Preference.Hide.FunctionModUpdate = (bool)value; break;
+ case "UiHiddenFunctionHidden": Config.Preference.Hide.FunctionHidden = (bool)value; break;
+ }
}
private void ComboFontChange(object sender, SelectionChangedEventArgs e)
@@ -324,8 +386,7 @@ public static void BackgroundRefresh(bool IsHint, bool Refresh)
ModVideoBack.ForcePlayChanged -= ModVideoBack.OnForcePlayChanged;
ModVideoBack.GamingStateChanged += ModVideoBack.OnGamingStateChanged;
ModVideoBack.ForcePlayChanged += ModVideoBack.OnForcePlayChanged;
- if (Conversions.ToBoolean(
- Operators.ConditionalCompareObjectEqual(Config.Preference.Background.AutoPauseVideo, false, false)))
+ if (!Config.Preference.Background.AutoPauseVideo)
ModVideoBack.ForcePlay = true;
// 加载
if (Pic.Count == 0)
@@ -359,7 +420,7 @@ public static void BackgroundRefresh(bool IsHint, bool Refresh)
ModVideoBack.VideoStop();
ModBase.Log("[UI] 加载背景内容:" + Address);
ModMain.FrmMain.ImgBack.Background = new MyBitmap(Address);
- ModBase.Setup.Load("UiBackgroundSuit", true);
+ _ = Config.Preference.Background.WallpaperSuitMode;
ModMain.FrmMain.ImgBack.Visibility = Visibility.Visible;
if (IsHint)
ModMain.Hint(Lang.Text("Setup.Ui.Background.Refresh.Success", ModBase.GetFileNameFromPath(Address)), ModMain.HintType.Finish,
@@ -625,7 +686,7 @@ private void BtnCustomTutorial_Click(object sender, MouseButtonEventArgs e)
private void ThemeColor_Change(object senderRaw, SelectionChangedEventArgs e)
{
var sender = (MyComboBox)senderRaw;
- ModBase.Setup.Set(sender.Tag?.ToString(), sender.SelectedIndex);
+ SetByTag(sender.Tag?.ToString(), sender.SelectedIndex);
ThemeManager.ThemeRefresh();
}
@@ -767,9 +828,8 @@ public static void HiddenRefresh()
foreach (var category in categories)
{
var isVisible = category.Item2 || HiddenForceShow;
- category.Item1.Visibility =
- Conversions.ToBoolean(isVisible) ? Visibility.Visible : Visibility.Collapsed;
- if (Conversions.ToBoolean(isVisible))
+ category.Item1.Visibility = isVisible ? Visibility.Visible : Visibility.Collapsed;
+ if (isVisible)
category.Item1.Opacity = 0.6d;
}