/// <summary> /// This class should be created and passed into Application.Run( ... ) /// </summary> /// <param name="options"> </param> public GwupeClientAppContext(List <GwupeOption> options) { CurrentAppContext = this; Options = options; XmlConfigurator.Configure(Assembly.GetExecutingAssembly().GetManifestResourceStream("Gwupe.Agent.log4net.xml")); StartupVersion = Regex.Replace(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion, "\\.[0-9]+$", ""); Logger.Info("Gwupe" + Program.BuildMarker + ".Agent Starting up [" + StartupVersion + "]"); #if DEBUG foreach (var manifestResourceName in Assembly.GetExecutingAssembly().GetManifestResourceNames()) { Logger.Debug("Embedded Resource : " + manifestResourceName); } #endif GwupeServiceProxy = new GwupeServiceProxy(); ConnectionManager = new ConnectionManager(); LoginManager = new LoginManager(); P2PManager = new P2PManager(); RosterManager = new RosterManager(); EngagementManager = new EngagementManager(); NotificationManager = new NotificationManager(); SearchManager = new SearchManager(); CurrentUserManager = new CurrentUserManager(); TeamManager = new TeamManager(); SettingsManager = new SettingsManager(); UIManager = new UIManager(); _requestManager = new RequestManager(); ScheduleManager = new ScheduleManager(); ScheduleManager.AddTask(new CheckUpgradeTask(this) { PeriodSeconds = 120 }); ScheduleManager.AddTask(new CheckServiceTask(this) { PeriodSeconds = 120 }); ScheduleManager.AddTask(new DetectIdleTask(this)); RepeaterManager = new RepeaterManager(); RelationshipManager = new RelationshipManager(); PartyManager = new PartyManager(); SetupChangeLog(); // Start all the Active Managers UIManager.Start(); ScheduleManager.Start(); ConnectionManager.Start(); LoginManager.Start(); // Set correct last version Reg.LastVersion = StartupVersion; }
public void StartRole(SOEServer server) { // Set our server Server = server; // Get a logger Log = Server.Logger.GetLogger("Gateway"); Log.Info("Constructing gateway..."); // Construct our global managers AccountManager.Start(server); // Construct our managers CommandManager.Start(); ClientLogManager.Start(); LoginManager.Start(); // Finish! Log.Info("Finished constructing gateway!"); }
private void VerifyOnBackground(object sender, RoutedEventArgs e) { //MainSnackbar.MessageQueue.Enqueue("抱歉, 我们暂时禁用了这个功能."); LoginManager.Start(); }
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(); }