formStart.xaml.vb 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. Public Class formStart
  2. Public IsPushLoading As Boolean = ReadIni("setup", "HomeEnabled", "True") = "True"
  3. Public IsVersionLoading As Boolean = True
  4. Public IsFirstUsing As Boolean = False
  5. Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.ContentRendered
  6. Try
  7. log("[Start] 开始执行用户代码")
  8. frmStart = Me
  9. If ReadIni("setup", "UiShowLogo", "True") = "True" Then
  10. Me.Opacity = 1
  11. Me.IsHitTestVisible = True
  12. Else
  13. Me.Opacity = 0
  14. Me.IsHitTestVisible = False
  15. End If
  16. '旧版本处理
  17. If ReadIni("setup", "UiHiddenSource", "") = "True" And ReadIni("setup", "HomeEnabled", "Nothing") = "Nothing" Then WriteIni("setup", "HomeEnabled", "False")
  18. If ReadIni("setup", "LaunchJVM", "").Length > 0 Then WriteIni("setup", "LaunchJVM", ReadIni("setup", "LaunchJVM", "").Replace("-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ", ""))
  19. '初始化设置
  20. AllowFeedback = ReadReg("SysFeed", "True")
  21. RefreshOffline()
  22. IsFirstUsing = ReadIni("setup", "LastVersionCode", "0") = "0" And ReadIni("setup", "Count", "0") = "0"
  23. WriteIni("setup", "Count", Val(ReadIni("setup", "Count", "0")) + 1)
  24. PATH_DOWNLOAD = ReadIni("setup", "DownFolder", "")
  25. If Not PATH_DOWNLOAD.Contains("\") Then PATH_DOWNLOAD = PATH & "PCL\download\"
  26. '线程池初始化
  27. Dim PoolThread As New Thread(AddressOf PoolLoader)
  28. PoolThread.Start()
  29. ''静默模式检查
  30. 'If (Not GetProgramArgument("Version") = "") And (Not GetProgramArgument("Method") = "") Then
  31. ' labProcess.Content = "正在检查信息"
  32. ' labProcess.Visibility = Visibility.Visible
  33. ' Me.Opacity = 1
  34. ' GoTo SlientMode
  35. 'End If
  36. '线程池添加
  37. If IsFirstUsing Then
  38. IsVersionLoading = False
  39. Else
  40. If ReadIni("setup", "HomeAutologin", "True") = "True" Then Pool.Add(New Thread(Sub() PoolLogin(True)))
  41. Pool.Add(New Thread(Sub() PoolJavaFolder(False)))
  42. Pool.Add(New Thread(Sub() PoolMinecraftFolder()))
  43. End If
  44. If IsPushLoading Then Pool.Add(New Thread(AddressOf PoolPush))
  45. Pool.Add(New Thread(AddressOf PoolUpdate) With {.Priority = ThreadPriority.BelowNormal})
  46. Pool.Add(New Thread(AddressOf PoolLoadPictures) With {.Priority = ThreadPriority.BelowNormal})
  47. If ReadIni("setup", "HomeUpdate", "True") = "True" Then Pool.Add(New Thread(Sub() frmDownloadLeft.GetMinecraftBasic(False)) With {.Priority = ThreadPriority.BelowNormal})
  48. log("[Start] 初始化线程池结束")
  49. '初始化Timer
  50. ControlStartRun()
  51. WebStartRun()
  52. '主题及窗体加载
  53. RefreshTheme()
  54. log("[Start] 主题加载结束")
  55. 'Debug 模式警告
  56. #If CONFIG = "Debug" Then
  57. ShowHint("当前为 Debug 模式,不要用于正式版发布!")
  58. #End If
  59. '初始化窗体
  60. SetupRefreshHidden()
  61. frmMain.Opacity = 0
  62. frmMain.Width = MAINFORM_WIDTH
  63. frmMain.Height = MAINFORM_HEIGHT
  64. frmMain.imgMainBg.Opacity = ReadIni("setup", "UiBackgroundOpacity", "50") / 100
  65. frmMain.labTopVer.Content = VERSION_NAME & If(MODE_DEVELOPER, " | 开发者模式", If(MODE_DEBUG, " | 调试模式", "")) & If(MODE_OFFLINE, " | 离线模式", "")
  66. '切换到首页
  67. If Not IsNothing(frmHomeLeft.panMain.Parent) Then frmHomeLeft.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
  68. If Not IsNothing(frmHomeRight.panMain.Parent) Then frmHomeRight.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
  69. frmMain.panHostLeft.Children.Add(frmHomeLeft.panMain)
  70. frmMain.panHostRight.Children.Add(frmHomeRight.panMain)
  71. frmMain.btnTopMain.Opacity = 1
  72. '显示
  73. If MODE_DEVELOPER Then
  74. log("[Start] PCL 以开发者模式运行")
  75. MODE_DEBUG = True
  76. End If
  77. If MODE_OFFLINE Then log("[Start] PCL 以离线模式运行")
  78. If MODE_DEBUG Then log("[Start] PCL 以调试模式运行")
  79. frmMain.Show()
  80. '检查加载结束
  81. Dim th As New Thread(Sub()
  82. Do While IsVersionLoading Or IsPushLoading
  83. Thread.Sleep(5)
  84. Loop
  85. LoadTimeCost = My.Computer.Clock.TickCount - LoadTimeCost
  86. log("[Start] 初始化结束,总耗时:" & LoadTimeCost / 1000 & "s")
  87. If LoadTimeCost < 20000 And RandomInteger(1, 10) = 4 Then SendStat("反馈", "加载用时", LoadTimeCost, LoadTimeCost) '发送打开统计
  88. frmMain.Dispatcher.Invoke(Sub()
  89. AniStart({
  90. AaScaleTransform(frmMain.panAllBack, -0.05, 1),
  91. AaScaleTransform(frmMain.panAllBack, 0.05, 250, 80, New AniEaseJumpEnd(0.6)),
  92. AaOpacity(frmMain, ReadIni("setup", "UiLauncherOpacity", "100") / 100, 250, 80),
  93. AaCode({"Close", frmStart}, 370),
  94. AaCode(Sub() Process.GetCurrentProcess.PriorityClass = ProcessPriorityClass.Normal, 400)
  95. }, "MainStart")
  96. frmHomeLeft.timerPage.Reset()
  97. End Sub)
  98. End Sub)
  99. th.Start()
  100. 'Exit Sub
  101. 'SlientMode:
  102. ' Dim Version As String = GetProgramArgument("Version")
  103. ' Dim Method As String = GetProgramArgument("Method")
  104. ' log("[Start] PCL 以静默模式运行,目标版本:" & Version & ",登录方式:" & Method)
  105. ' 'Java 校验
  106. ' PATH_JAVA = ReadReg("SetupJavaPath")
  107. ' Dim Env As String = PathEnv
  108. ' If File.Exists(PATH_JAVA & "\javaw.exe") And (File.Exists(PATH_JAVA & "\jli.dll") Or PATH_JAVA.Contains("javapath")) And Env.Contains(PATH_JAVA) Then
  109. ' log("[Start] Java路径:" & PATH_JAVA)
  110. ' Else
  111. ' labProcess.Content = "Java 路径不正确"
  112. ' GoTo EndSlient
  113. ' End If
  114. ' 'Minecraft 校验
  115. ' PATH_MC = ReadIni("setup", "LaunchFolderSelect", "")
  116. ' If CheckDirectoryPermission(PATH_MC & "versions\" & Version & "\PCL") Then
  117. ' log("[Start] .minecraft文件夹:" & PATH_MC)
  118. ' Else
  119. ' labProcess.Content = "Minecraft " & Version & " 未找到"
  120. ' GoTo EndSlient
  121. ' End If
  122. ' '结束
  123. ' labProcess.Content = "已启动"
  124. ' GoTo EndSlient
  125. 'EndSlient:
  126. ' Dim th As New Thread(Sub()
  127. ' Thread.Sleep(2000)
  128. ' frmStart.Dispatcher.Invoke(Sub() EndForce())
  129. ' End Sub)
  130. ' th.Start()
  131. Catch ex As Exception
  132. ExShow(ex, "全局初始化失败", ErrorLevel.Barrier)
  133. End Try
  134. End Sub
  135. End Class