初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器 HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块 Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚 AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using PCL.Core.App;
|
||||
using PCL.Core.App.Configuration;
|
||||
using PCL.Core.App.Localization;
|
||||
using PCL.Core.Link.Scaffolding.EasyTier;
|
||||
|
||||
namespace PCL;
|
||||
|
||||
public partial class PageSetupGameLink
|
||||
{
|
||||
private bool isFirstLoad = true;
|
||||
|
||||
private new bool isLoaded;
|
||||
|
||||
public PageSetupGameLink()
|
||||
{
|
||||
InitializeComponent();
|
||||
TextUdpNatType.Text = Lang.Text("Setup.GameLink.NetworkTest.UdpNatType", Lang.Text("Setup.GameLink.NetworkTest.NotTested"));
|
||||
TextTcpNatType.Text = Lang.Text("Setup.GameLink.NetworkTest.TcpNatType", Lang.Text("Setup.GameLink.NetworkTest.NotTested"));
|
||||
TextIpv6Status.Text = Lang.Text("Setup.GameLink.NetworkTest.Ipv6Status", Lang.Text("Setup.GameLink.NetworkTest.NotTested"));
|
||||
Loaded += PageSetupLink_Loaded;
|
||||
Loaded += (_, _) => Reload();
|
||||
}
|
||||
|
||||
private void PageSetupLink_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 重复加载部分
|
||||
PanBack.ScrollToHome();
|
||||
|
||||
// 非重复加载部分
|
||||
if (isLoaded)
|
||||
return;
|
||||
isLoaded = true;
|
||||
|
||||
ModAnimation.AniControlEnabled += 1;
|
||||
Reload();
|
||||
ModAnimation.AniControlEnabled -= 1;
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
TextLinkUsername.Text = Config.Link.Username;
|
||||
// TextLinkRelay.Text = Config.Link.RelayServer
|
||||
// ComboRelayType.SelectedIndex = Config.Link.RelayType
|
||||
// ComboServerType.SelectedIndex = Config.Link.ServerType
|
||||
CheckLatencyFirstMode.Checked = Config.Link.UseLatencyFirstMode;
|
||||
ComboPreferProtocol.SelectedIndex = (int)Config.Link.ProtocolPreference;
|
||||
CheckTryPunchSym.Checked = Config.Link.TryPunchSym;
|
||||
CheckEnableIPv6.Checked = Config.Link.EnableIPv6;
|
||||
CheckEnableCliOutput.Checked = Config.Link.EnableCliOutput;
|
||||
|
||||
// TextRelays.Text = "正在获取信息..."
|
||||
// Do While Not (PageLinkLobby.LobbyAnnouncementLoader.State = LoadState.Finished OrElse PageLinkLobby.LobbyAnnouncementLoader.State = LoadState.Failed)
|
||||
// Thread.Sleep(500)
|
||||
// Loop
|
||||
// If ETRelay.RelayList.Count > 0 Then
|
||||
// TextRelays.Text = ""
|
||||
// For Each Relay In ETRelay.RelayList
|
||||
// Select Case Relay.Type
|
||||
// Case ETRelayType.Community
|
||||
// TextRelays.Text += "[社区] "
|
||||
// Case ETRelayType.Selfhosted
|
||||
// TextRelays.Text += "[自有] "
|
||||
// Case Else 'ETRelayType.Custom
|
||||
// TextRelays.Text += "[自定义] "
|
||||
// End Select
|
||||
// TextRelays.Text += Relay.Name & ","
|
||||
// Next
|
||||
// TextRelays.Text = TextRelays.Text.BeforeLast(",")
|
||||
// Else
|
||||
// TextRelays.Text = "暂无,你可能需要手动添加中继服务器"
|
||||
// End If
|
||||
}
|
||||
|
||||
// 初始化
|
||||
public void Reset()
|
||||
{
|
||||
try
|
||||
{
|
||||
Config.Link.Reset();
|
||||
ModBase.Log("[Setup] 已初始化联机页设置");
|
||||
HintService.Hint(Lang.Text("Setup.GameLink.Initialized"), HintType.Success, false);
|
||||
Reload();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ModBase.Log(
|
||||
ex,
|
||||
Lang.Text("Setup.GameLink.Error.InitFailed"),
|
||||
ModBase.LogLevel.Msgbox,
|
||||
userSummary: Lang.Text("Setup.GameLink.Error.InitFailed"));
|
||||
}
|
||||
|
||||
Reload();
|
||||
}
|
||||
|
||||
// 将控件改变路由到设置改变
|
||||
private void TextBoxChange(object senderRaw, TextChangedEventArgs e)
|
||||
{
|
||||
var sender = (MyTextBox)senderRaw;
|
||||
if (ModAnimation.AniControlEnabled == 0)
|
||||
SetByTag(sender.Tag?.ToString(), sender.Text);
|
||||
}
|
||||
|
||||
private static void ComboBoxChange(MyComboBox sender, object e)
|
||||
{
|
||||
if (ModAnimation.AniControlEnabled == 0)
|
||||
SetByTag(sender.Tag?.ToString(), sender.SelectedIndex);
|
||||
}
|
||||
|
||||
private void CheckBoxChange(object senderRaw, bool user)
|
||||
{
|
||||
var sender = (MyCheckBox)senderRaw;
|
||||
if (ModAnimation.AniControlEnabled == 0)
|
||||
SetByTag(sender.Tag?.ToString(), sender.Checked);
|
||||
}
|
||||
|
||||
private static void SetByTag(string tag, object value)
|
||||
=> ConfigService.TrySetValue(tag, value);
|
||||
|
||||
private void LinkProtocolPerferenceChange(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (ModAnimation.AniControlEnabled == 0)
|
||||
try
|
||||
{
|
||||
var selection = (LinkProtocolPreference)((MyComboBox)sender).SelectedIndex;
|
||||
Config.Link.ProtocolPreference = selection;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ModBase.Log(
|
||||
ex,
|
||||
Lang.Text("Setup.GameLink.Error.ConfigChangeFailed"),
|
||||
ModBase.LogLevel.Hint,
|
||||
userSummary: Lang.Text("Setup.GameLink.Error.ConfigChangeFailed"));
|
||||
}
|
||||
}
|
||||
|
||||
// 网络测试
|
||||
private void BtnNetTest_Click(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
BtnNetTest.IsEnabled = false;
|
||||
BtnNetTest.Text = Lang.Text("Setup.GameLink.NetworkTest.Testing");
|
||||
ModBase.RunInNewThread(() =>
|
||||
{
|
||||
var status = CliNetTest.GetNetStatusAsync().GetAwaiter().GetResult();
|
||||
ModBase.RunInUi(() =>
|
||||
{
|
||||
TextUdpNatType.Text =
|
||||
Lang.Text("Setup.GameLink.NetworkTest.UdpNatType", CliNetTest.GetNatTypeString(status.UdpNatType));
|
||||
TextTcpNatType.Text =
|
||||
Lang.Text("Setup.GameLink.NetworkTest.TcpNatType", CliNetTest.GetNatTypeString(status.TcpNatType));
|
||||
TextIpv6Status.Text = Lang.Text("Setup.GameLink.NetworkTest.Ipv6Status",
|
||||
status.SupportIPv6
|
||||
? Lang.Text("Setup.GameLink.NetworkTest.Supported")
|
||||
: Lang.Text("Setup.GameLink.NetworkTest.Unsupported"));
|
||||
BtnNetTest.IsEnabled = true;
|
||||
BtnNetTest.Text = Lang.Text("Setup.GameLink.NetworkTest.Start");
|
||||
});
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ModBase.Log(ex,
|
||||
"[Link] 获取网络测试结果失败",
|
||||
ModBase.LogLevel.Hint,
|
||||
userSummary: Lang.Text("Setup.GameLink.Error.NetworkTestFailed"));
|
||||
BtnNetTest.IsEnabled = true;
|
||||
BtnNetTest.Text = Lang.Text("Setup.GameLink.NetworkTest.Start");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user