/// <summary> /// Performs the delayed initialization steps. /// </summary> /// <param name="secondsToWait">The number of seconds the timer should wait before executing.</param> private void PerformDelayedInitTasks(double secondsToWait) { _delayedInitTaskTimer = new Timer(secondsToWait * 1000) { AutoReset = false, Enabled = true }; // Finalize the delayed initilization tasks _delayedInitTaskTimer.Elapsed += async(sender, args) => { Log.Write("Performing delayed initilization tasks.", _logClassType, _logPrefix); QlCommands.ClearQlWinConsole(); // Initiate modules such as MOTD and others that can't be started until after we're live Mod.Motd.Init(); // Get IP CheckServerAddress(); // Send configstrings request in order to get an accurate listing of the teams. // Strangely, this appears to not register w/ QL at various times, so send it a few // different times. for (var i = 1; i < 4; i++) { await QlCommands.SendToQlDelayedAsync("configstrings", true, (i * 3)); } // Update UI status bar with IP await Task.Delay(2000); UserInterface.UpdateMonitoringStatusUi(true, ServerInfo.CurrentServerAddress); QlCommands.QlCmdClear(); // Done QlCommands.ClearBothQlConsoles(); QlCommands.SendToQl("echo ^4***^5SST is now ^2LOADED^4***", false); QlCommands.SendToQl("print ^4***^5SST is now ^2LOADED^4***", false); Log.Write("SST is now loaded on the server.", _logClassType, _logPrefix); IsInitComplete = true; MonitoringStartedTime = DateTime.Now; _delayedInitTaskTimer.Enabled = false; _delayedInitTaskTimer = null; }; }
/// <summary> /// Gets the server information. /// </summary> private void GetServerInformation() { // First and foremost, clear the console and get the player listing. QlCommands.ClearQlWinConsole(); // Re-focus the window Win32Api.SwitchToThisWindow(QlWindowUtils.QlWindowHandle, true); // Disable developer mode if it's already set, so we can get accurate player listing. QlCommands.DisableDeveloperMode(); // Initially get the player listing when we start. Synchronous since initilization. // ReSharper disable once UnusedVariable var q = QlCommands.QlCmdPlayers(); // Get the server's id QlCommands.SendToQl("serverinfo", true); // Enable developer mode QlCommands.EnableDeveloperMode(); // Delay some initilization tasks and complete initilization PerformDelayedInitTasks(InitDelay); Log.Write("Requesting server information.", _logClassType, _logPrefix); }