PageLoginLegacy.xaml.vb 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. Imports System.Windows.Forms
  2. Public Class PageLoginLegacy
  3. Public Sub New()
  4. InitializeComponent()
  5. Skin.Loader = PageLaunchLeft.SkinLegacy
  6. End Sub
  7. Private Sub PageLoginLegacy_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
  8. Skin.Loader.Start()
  9. End Sub
  10. Public IsReloaded As Boolean = False
  11. ''' <summary>
  12. ''' 刷新页面显示的所有信息。
  13. ''' </summary>
  14. Public Sub Reload(KeepInput As Boolean)
  15. If KeepInput AndAlso IsReloaded Then '避免第一次就以 KeepInput 的方式加载,导致文本框里没东西
  16. '保留输入,只刷新下拉框列表
  17. Dim Input As String = ComboName.Text.Trim
  18. ComboName.ItemsSource = If(Setup.Get("LoginLegacyName") = "", Nothing, Setup.Get("LoginLegacyName").ToString.Split("¨"))
  19. ComboName.Text = Input
  20. Else
  21. '不保留输入,刷新列表后自动选择第一项
  22. If Setup.Get("LoginLegacyName") = "" Then
  23. ComboName.ItemsSource = Nothing
  24. Else
  25. ComboName.ItemsSource = Setup.Get("LoginLegacyName").ToString.Split("¨")
  26. ComboName.Text = Setup.Get("LoginLegacyName").ToString.BeforeFirst("¨").Trim
  27. End If
  28. End If
  29. IsReloaded = True
  30. End Sub
  31. ''' <summary>
  32. ''' 获取当前页面的登录信息。
  33. ''' </summary>
  34. Public Shared Function GetLoginData() As McLoginData
  35. Dim UserName As String = If(FrmLoginLegacy Is Nothing, "", FrmLoginLegacy.ComboName.Text.Replace("¨", "").Trim)
  36. Return New McLoginLegacy With {.UserName = UserName, .SkinType = Setup.Get("LaunchSkinType"), .SkinName = Setup.Get("LaunchSkinID")}
  37. End Function
  38. ''' <summary>
  39. ''' 当前页面的登录信息是否有效。
  40. ''' </summary>
  41. Public Shared Function IsVaild(LoginData As McLoginLegacy) As String
  42. If LoginData.UserName.Trim = "" Then Return "玩家名不能为空!"
  43. If LoginData.UserName.Contains("""") Then Return "玩家名不能包含英文引号!"
  44. If McVersionCurrent IsNot Nothing AndAlso
  45. ((McVersionCurrent.Version.McCodeMain = 20 AndAlso McVersionCurrent.Version.McCodeSub >= 3) OrElse McVersionCurrent.Version.McCodeMain > 20) AndAlso
  46. LoginData.UserName.Trim.Length > 16 Then
  47. Return "自 1.20.3 起,玩家名至多只能包含 16 个字符!"
  48. End If
  49. Return ""
  50. End Function
  51. Public Function IsVaild() As String
  52. Return IsVaild(GetLoginData())
  53. End Function
  54. Private Sub ComboName_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles ComboName.PreviewKeyDown
  55. If e.Key = Key.Space Then
  56. Dim Index = CType(ComboName.Template.FindName("PART_EditableTextBox", ComboName), MyTextBox).CaretIndex
  57. If Index = ComboName.Text.Length OrElse Index = 0 Then e.Handled = True
  58. End If
  59. End Sub
  60. Private Sub ComboLegacy_TextChanged(sender As Object, e As TextChangedEventArgs) Handles ComboName.TextChanged
  61. If Setup.Get("LaunchSkinType") = 0 Then PageLaunchLeft.SkinLegacy.Start(IsForceRestart:=True)
  62. HintChinese.Visibility = If(RegexCheck(ComboName.Text, "^[0-9A-Za-z_]*$"), Visibility.Collapsed, Visibility.Visible)
  63. End Sub
  64. Private Sub Skin_Click() Handles Skin.Click
  65. If (Setup.Get("UiHiddenPageSetup") OrElse Setup.Get("UiHiddenSetupLaunch")) AndAlso Not PageSetupUI.HiddenForceShow Then
  66. Hint("启动设置已被禁用!", HintType.Critical)
  67. Else
  68. FrmMain.PageChange(FormMain.PageType.Setup, FormMain.PageSubType.SetupLaunch) '切换到皮肤设置页面
  69. End If
  70. End Sub
  71. End Class