示例#1
0
 private void LoginThreadOnLoginFinishEvent(LoginInfo loginInfo)
 {
     if (loginInfo.Suc)
     {
         GridConfig.SaveConfig();
         var username = loginInfo.UN;
         try
         {
             var javaPath  = GridConfig.txtJavaPath.Text;
             var javaXmx   = GridConfig.txtJavaXmx.Text;
             var selectVer = GridGame.listVer.SelectedItem.ToString();
             var extArg    = GridConfig.txtExtJArg.Text;
             BmclCore.Game = new Launcher.Launcher(javaPath, javaXmx, username, selectVer, BmclCore.GameInfo, extArg, loginInfo);
             BmclCore.Game.StateChangeEvent += Game_StateChangeEvent;
             BmclCore.Game.Gameexit         += launcher_gameexit;
             BmclCore.Game.GameStartUp      += Game_GameStartUp;
         }
         catch (Exception ex)
         {
             _starter.Topmost = false;
             _starter.Close();
             MessageBox.Show("启动失败:" + ex.Message);
             Logger.log(ex);
             return;
         }
     }
     else
     {
         _starter.Topmost = false;
         MessageBox.Show("登录失败:" + loginInfo.Errinfo);
         Logger.log("登录失败" + loginInfo.Errinfo, Logger.LogType.Error);
         BmclCore.GameRunning = false;
     }
     if (BmclCore.Game == null)
     {
         _starter.Topmost = false;
         Logger.log("启动器初始化失败,放弃启动", Logger.LogType.Crash);
         BmclCore.GameRunning = false;
     }
     else
     {
         BmclCore.Game.Start();
         this.Hide();
     }
 }
示例#2
0
        private async void btnStart_Click(object sender, RoutedEventArgs e)
        {
            //TODO 分离launcher方法
            if (GridConfig.txtUserName.Text == "!!!")
            {
                MessageBox.Show(this, "请先修改用户名");
                TabMain.SelectedIndex = 1;
                GridConfig.txtUserName.Focus();
                return;
            }
            GridConfig.SaveConfig();
            var somethingBad = false;

            try
            {
                var selectedVersion = GridGame.GetSelectedVersion();
                Logger.Info($"正在启动{selectedVersion},使用的登陆方式为{GridConfig.listAuth.SelectedItem}");
                _frmPrs = new FrmPrs(LangManager.GetLangFromResource(selectedVersion));
                _frmPrs.Show();
                _frmPrs.ChangeStatus(LangManager.GetLangFromResource("LauncherAuth"));
                var launcher = await BmclCore.GameManager.LaunchGame(selectedVersion, false);

                if (launcher == null)
                {
                    _frmPrs.Close();
                    _frmPrs = null;
                    return;
                }
                launcher.OnGameLaunch += Launcher_OnGameLaunch;
                launcher.OnGameStart  += Game_GameStartUp;
                launcher.OnGameExit   += launcher_gameexit;
                await launcher.Start();
            }
            catch (NoSelectGameException exception)
            {
                Logger.Fatal(exception);
                somethingBad = true;
                MessageBox.Show(this, exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (NoJavaException exception)
            {
                Logger.Fatal(exception);
                somethingBad = true;
                MessageBox.Show(this, exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (AnotherGameRunningException exception)
            {
                Logger.Fatal(exception);
                somethingBad = true;
                MessageBox.Show(this, exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (DownloadLibException exception)
            {
                Logger.Fatal(exception);
                somethingBad = true;
                MessageBox.Show(this, exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                if (somethingBad)
                {
                    _frmPrs?.Close();
                    _frmPrs = null;
                }
            }
        }