Bläddra i källkod

Merge pull request #9198 from Howard302/feature/esc-cancel-launch

feat: 在启动页面按 Esc 取消启动游戏
龙腾猫跃 1 månad sedan
förälder
incheckning
8f76864574

+ 8 - 2
Plain Craft Launcher 2/FormMain.xaml.vb

@@ -803,8 +803,14 @@ Public Class FormMain
         ' 在没有弹窗时:继续检查……
         '==========================
 
-        '按 ESC 返回上一级
-        If e.Key = Key.Escape Then TriggerPageBack()
+        '按 ESC:启动中则取消启动,否则返回上一级
+        If e.Key = Key.Escape Then
+            If McLaunchLoader.State = LoadState.Loading Then
+                McLaunchCancel()
+            Else
+                TriggerPageBack()
+            End If
+        End If
         '更改隐藏版本可见性
         If e.Key = Key.F11 AndAlso PageCurrent = FormMain.PageType.InstanceSelect Then
             FrmSelectRight.ShowHidden = Not FrmSelectRight.ShowHidden

+ 19 - 0
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb

@@ -196,6 +196,25 @@ NextInner:
         End Try
     End Sub
 
+    ''' <summary>
+    ''' 取消正在进行的游戏启动。
+    ''' </summary>
+    Public Sub McLaunchCancel()
+        If McLaunchLoaderReal IsNot Nothing Then
+            McLaunchLoaderReal.Cancel()
+            McLaunchLog("已取消启动")
+            Try
+                If McLaunchWatcher IsNot Nothing Then
+                    McLaunchWatcher.Kill()
+                ElseIf McLaunchProcess IsNot Nothing Then
+                    If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill()
+                End If
+            Catch ex As Exception
+                Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast)
+            End Try
+        End If
+    End Sub
+
 #End Region
 
 #Region "内存优化"

+ 1 - 13
Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb

@@ -692,19 +692,7 @@ ExitRefresh:
     End Sub
     '取消按钮
     Private Sub BtnCancel_Click() Handles BtnCancel.Click
-        If McLaunchLoaderReal IsNot Nothing Then
-            McLaunchLoaderReal.Cancel()
-            McLaunchLog("已取消启动")
-            Try
-                If McLaunchWatcher IsNot Nothing Then
-                    McLaunchWatcher.Kill()
-                ElseIf McLaunchProcess IsNot Nothing Then
-                    If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill()
-                End If
-            Catch ex As Exception
-                Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast)
-            End Try
-        End If
+        McLaunchCancel()
     End Sub
     '版本设置按钮
     Private Sub BtnMore_Click() Handles BtnMore.Click