/// <summary> /// 选择确定取消弹窗 /// </summary> /// <param name="message"></param> /// <param name="action"></param> /// <param name="e"></param> public async void ChooseTips(Action <bool, int> action, DialogClosingEventHandler e = null) { try { if (e == null) { e = closingEventHandler; } var sampleMessageDialog = new ChooseDialog(); await DialogHost.Show(sampleMessageDialog, "ReadDialog", e); action(sampleMessageDialog.isCancel, sampleMessageDialog.ChooseIndex); } catch (Exception ex) { Logger.Default.Error(ex.Message); } }
private async Task CheckCrashAsync() { var after = GetReportFiles().Except(Before).ToList(); if (after.Count != 0) { await Dispatcher.Invoke(async() => { var chooseDialog = new ChooseDialog("要上传崩溃报告喵?", "Origind Launcher 检测到了一个 Minecraft 崩溃报告.", "上传"); await DialogHost.Show(chooseDialog, "RootDialog"); if (chooseDialog.Result) { MessageUploadManager.CrashReport(new UploadData( $"游戏运行时异常: {File.ReadAllText(after.FirstOrDefault())}")); } }); } }
private async void Next(object sender, RoutedEventArgs e) { var username = Username.Text; if (string.IsNullOrWhiteSpace(username) || !new Regex(@"^[a-zA-Z0-9_]+$").Match(username).Success) { Snackbar.MessageQueue.Enqueue("用户名只能包含字母,数字,以及下划线."); return; } if (IsLogin) { var account = new Account(username, SHA512Computer.Compute(Password.Password), "注册"); var status = await Task.Run(() => account.Login()); if (status != LoginStatus.Successful) { Snackbar.MessageQueue.Enqueue("密码不正确或服务器错误."); return; } Config.Instance.PlayerAccount = account; try { await Task.Run(() => Config.Instance.DisableHardwareSpeedup = RenderInfoGetter.IsIntelVideoCard); } catch (Exception exception) { Trace.WriteLine(exception); } } else { var status = await Task.Run(() => AccountManager.UserExists(username)); if (status != LoginStatus.NotFound) { Snackbar.MessageQueue.Enqueue("用户已存在或服务器错误."); return; } if (username.Length < 3) { Snackbar.MessageQueue.Enqueue("用户名太短啦!"); return; } if (Password.Password.Length < 5) { Snackbar.MessageQueue.Enqueue("密码太短啦!"); return; } var account = new Account(username, SHA512Computer.Compute(Password.Password), "注册"); var result = await Task.Run(() => account.Register()); if (result != RegisterStatus.Successful) { Snackbar.MessageQueue.Enqueue("注册失败 请重试?"); return; } Config.Instance.PlayerAccount = account; try { await Task.Run(() => Config.Instance.DisableHardwareSpeedup = RenderInfoGetter.IsIntelVideoCard); } catch (Exception exception) { Trace.WriteLine(exception); } } if (!DirectoryHelper.IsCurrentDirectoryWritable) { await Dispatcher.Invoke(async() => { var chooseDialog = new ChooseDialog("要让这个文件夹有写入权限吗?", "Origind Launcher 可能没有文件夹的写入权限.", "添加写入权限"); await DialogHost.Show(chooseDialog, "SetupWindowDialogHost"); if (chooseDialog.Result) { DirectoryHelper.AddCurrentDirectoryWritePermission(); } }); } Config.Save(); Dispatcher.Invoke(() => Window.GetWindow(this).FlyoutAndClose(() => { //if (Directory.Exists(ClientManager.GameStorageDirectory)) //{ // ClientManager.CurrentInfo = ClientManager.MakeClientInfo(); // ClientManager.Save(); //} Process.Start(Process.GetCurrentProcess().MainModule.FileName); Application.Current.Shutdown(); })); }
private async void StartButton_OnClick(object sender, RoutedEventArgs e) { EnsureUpdatePathExists(); //await UpdateUpdatePathAsync(); 其他服务器的兼容 //foreach (Window currentWindow in Application.Current.Windows) 更好的方案 // currentWindow.Flyout(); if (Config.Instance.PlayerAccount.Login() == LoginStatus.NotFound) { MainSnackbar.MessageQueue.Enqueue("登录失败.", "查看详情", () => Dispatcher.Invoke(async() => { var chooseDialog = new ChooseDialog("要重新注册吗?", "很抱歉, 因为我们的技术删库跑路, 所有的玩家数据库都没了. 按下重新注册来用你当前的账号重新注册.", "重新注册"); await DialogHost.Show(chooseDialog, "RootDialog"); if (chooseDialog.Result) { Config.Instance.PlayerAccount.Register(); } })); return; } StartButton.IsEnabled = false; if (!Config.Instance.DisableUpdateCheck) { // 检测更新状态 if (!CheckUpdate(out var updateStatus)) { OnLaunchError("更新检测失败"); return; } // 等待更新 if (updateStatus) { var result = await UpdateClientAsync(); if (!result) { OnLaunchError("更新失败."); return; } } } BeginCrashReportDetector(); KMCCCBugFix(); // 启动游戏 var gameManager = new GameManager(); var lpm = new LaunchProgressManager(); gameManager.OnGameExit += (handle, i) => { async Task Callback() { LoginManager.Stop(); this.Show(); lpm.Close(); await CheckCrashAsync(); } Dispatcher.Invoke(Callback); }; gameManager.OnGameLog += (lh, log) => lpm.OnGameLog(log); // 游戏状态 var lh1 = gameManager.Run(); if (!lh1.Success) { MessageUploadManager.CrashReport( new UploadData($"游戏启动时异常: {lh1.ErrorMessage} {lh1.Exception?.SerializeException()}")); OnLaunchError($"游戏启动时异常: {lh1.ErrorMessage}"); return; } if (Config.Instance.LaunchProgress) { lpm.Begin(lh1.Handle); } LoginManager.Start(); // 退出 StartButton.IsEnabled = true; Hide(); }