Example #1
0
        private async void btnDownloadVer_Click(object sender, RoutedEventArgs e)
        {
            if (listRemoteVer.SelectedItem == null)
            {
                MessageBox.Show(LangManager.GetLangFromResource("RemoteVerErrorNoVersionSelect"));
                return;
            }
            var selectVer = listRemoteVer.SelectedItem as DataRowView;

            if (selectVer == null)
            {
                return;
            }
            var url = selectVer[3] as string;
            var versionDownloader = new Version(url);

            _prs = new FrmPrs(LangManager.GetLangFromResource("btnDownloadVer"));
            _prs.Show();
            versionDownloader.ProcessChange += status => _prs.ChangeStatus(LangManager.GetLangFromResource(status));
            await versionDownloader.Start();

            Logger.Log("下载客户端文件成功");
            MessageBox.Show(LangManager.GetLangFromResource("RemoteVerDownloadSuccess"));
            btnDownloadVer.Content   = LangManager.GetLangFromResource("btnDownloadVer");
            btnDownloadVer.IsEnabled = true;
            BmclCore.MainWindow.GridGame.ReFlushlistver();
            BmclCore.MainWindow.SwitchDownloadGrid(Visibility.Hidden);
            BmclCore.MainWindow.TabMain.SelectedIndex = 0;
            _prs.Close();
            _prs = null;
        }
Example #2
0
        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            if (BmclCore.GameRunning)
            {
                MessageBox.Show(this, "同时只能运行一个客户端", "运行冲突", MessageBoxButton.OK, MessageBoxImage.Stop);
                return;
            }
            BmclCore.GameRunning = true;
            if (GridConfig.txtUserName.Text == "!!!")
            {
                MessageBox.Show(this, "请先修改用户名");
                TabMain.SelectedIndex = 1;
                GridConfig.txtUserName.Focus();
                return;
            }
            _clientCrashReportCount = Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\.minecraft\crash-reports") ? Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"\.minecraft\crash-reports").Count() : 0;
            _starter = new FrmPrs("正在准备游戏环境及启动游戏");
            Logger.info(string.Format("正在启动{0},使用的登陆方式为{1}", GridGame.listVer.SelectedItem, GridConfig.listAuth.SelectedItem));
            _starter.ShowInTaskbar = false;
            _starter.Show();
            _starter.Activate();
            _starter.Focus();
            _starter.ChangeEventH("正在登陆");
            var loginThread = new LoginThread(GridConfig.txtUserName.Text, GridConfig.txtPwd.Password, GridConfig.listAuth.SelectedItem.ToString(), GridConfig.listAuth.SelectedIndex);

            loginThread.LoginFinishEvent += LoginThreadOnLoginFinishEvent;
            loginThread.Start();
        }
Example #3
0
        private async void DownloadForge(string ver)
        {
            var frmPrs = new FrmPrs(LangManager.GetLangFromResource("DownloadingForge"));

            void OnProgressChange(string status) => frmPrs.ChangeStatus(LangManager.GetLangFromResource(status));

            try
            {
                var forgeVersion = _forgeVersions.First(version => version.name == ver);
                _forgeTask.ProcessChange += OnProgressChange;
                frmPrs.Show();
                await _forgeTask.DownloadForge(forgeVersion);
            }
            catch (InvalidOperationException exception)
            {
                Logger.Fatal(exception);
                MessageBox.Show(BmclCore.MainWindow, LangManager.Translate("ForgeNoSuchVersion", ver),
                                BmclCore.MainWindow.Title,
                                MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                _forgeTask.ProcessChange -= OnProgressChange;
                frmPrs.Close();
            }
            BmclCore.MainWindow.GridGame.ReFlushlistver();
            BmclCore.MainWindow.TabMain.SelectedIndex = 0;
        }
Example #4
0
        private void btnImportOldMc_Click(object sender, RoutedEventArgs e)
        {
            var folderImportOldVer = new System.Windows.Forms.FolderBrowserDialog
            {
                Description = LangManager.GetLangFromResource("ImportDirInfo")
            };
            var prs = new FrmPrs(LangManager.GetLangFromResource("ImportPrsTitle"));

            prs.Show();
            if (folderImportOldVer.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string importFrom = folderImportOldVer.SelectedPath;
                if (!File.Exists(importFrom + "\\bin\\minecraft.jar"))
                {
                    MessageBox.Show(LangManager.GetLangFromResource("ImportFailedNoMinecraftFound"));
                    return;
                }
                bool   f1, f2;
                string importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportOldMcInfo"), "OldMinecraft");
                do
                {
                    f1 = false;
                    f2 = false;
                    if (importName.Length <= 0 || importName.IndexOf('.') != -1)
                    {
                        importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportInvildName"), "OldMinecraft");
                    }
                    else
                    {
                        f1 = true;
                    }
                    if (Directory.Exists(".minecraft\\versions\\" + importName))
                    {
                        importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportFailedExist"), "OldMinecraft");
                    }
                    else
                    {
                        f2 = true;
                    }
                } while (!(f1 && f2));
                VersionHelper.ImportOldMc(importName, importFrom, new Action(() =>
                {
                    prs.Close();
                    MessageBox.Show(BmclCore.MainWindow, LangManager.GetLangFromResource("ImportOldMCInfo"));
                }
                                                                             ));
            }
            else
            {
                prs.Close();
            }
        }
Example #5
0
        private void btnImportOldMc_Click(object sender, RoutedEventArgs e)
        {
            var folderImportOldVer = new System.Windows.Forms.FolderBrowserDialog
            {
                Description = LangManager.GetLangFromResource("ImportDirInfo")
            };
            var prs = new FrmPrs(LangManager.GetLangFromResource("ImportPrsTitle"));
            prs.Show();
            if (folderImportOldVer.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string importFrom = folderImportOldVer.SelectedPath;
                if (!File.Exists(importFrom + "\\bin\\minecraft.jar"))
                {
                    MessageBox.Show(LangManager.GetLangFromResource("ImportFailedNoMinecraftFound"));
                    return;
                }
                bool f1, f2;
                string importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportOldMcInfo"), "OldMinecraft");
                do
                {
                    f1 = false;
                    f2 = false;
                    if (importName.Length <= 0 || importName.IndexOf('.') != -1)
                        importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportInvildName"), "OldMinecraft");
                    else
                        f1 = true;
                    if (Directory.Exists(".minecraft\\versions\\" + importName))
                        importName = Microsoft.VisualBasic.Interaction.InputBox(LangManager.GetLangFromResource("ImportNameInfo"), LangManager.GetLangFromResource("ImportFailedExist"), "OldMinecraft");
                    else
                        f2 = true;

                } while (!(f1 && f2));
                VersionHelper.ImportOldMc(importName, importFrom, new Action(() =>
                {
                    prs.Close();
                    MessageBox.Show(BmclCore.MainWindow, LangManager.GetLangFromResource("ImportOldMCInfo"));
                }
                ));
            }
            else prs.Close();
        }
Example #6
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;
                }
            }
        }
Example #7
0
 private void btnStart_Click(object sender, RoutedEventArgs e)
 {
     if (BmclCore.GameRunning)
     {
         MessageBox.Show(this, "同时只能运行一个客户端", "运行冲突", MessageBoxButton.OK, MessageBoxImage.Stop);
         return;
     }
     BmclCore.GameRunning = true;
     if (GridConfig.txtUserName.Text == "!!!")
     {
         MessageBox.Show(this, "请先修改用户名");
         TabMain.SelectedIndex = 1;
         GridConfig.txtUserName.Focus();
         return;
     }
     _clientCrashReportCount = Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\.minecraft\crash-reports") ? Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"\.minecraft\crash-reports").Count() : 0;
     _starter = new FrmPrs("正在准备游戏环境及启动游戏");
     Logger.info(string.Format("正在启动{0},使用的登陆方式为{1}", GridGame.listVer.SelectedItem, GridConfig.listAuth.SelectedItem));
     _starter.ShowInTaskbar = false;
     _starter.Show();
     _starter.Activate();
     _starter.Focus();
     _starter.ChangeEventH("正在登陆");
     var loginThread = new LoginThread(GridConfig.txtUserName.Text, GridConfig.txtPwd.Password, GridConfig.listAuth.SelectedItem.ToString(), GridConfig.listAuth.SelectedIndex);
     loginThread.LoginFinishEvent += LoginThreadOnLoginFinishEvent;
     loginThread.Start();
 }