public void TimingManagerFixedUpdate() { profiler.Report("KSP", kspTime, kspMemory); long profilerStartTime = profiler.GetCurrentTime; long profilerStartMemory = profiler.GetCurrentMemory; DarkLog.Update(); if (modDisabled) { return; } dmpModInterface.FixedUpdate(); if (dmpGame != null) { foreach (NamedAction fixedUpdateAction in dmpGame.fixedUpdateEvent) { #if !DEBUG try { #endif long profilerFixedUpdateStartTime = profiler.GetCurrentTime; long profilerFixedUpdateStartMemory = profiler.GetCurrentMemory; fixedUpdateAction.action(); profiler.Report(fixedUpdateAction.name, profilerFixedUpdateStartTime, profilerFixedUpdateStartMemory); #if !DEBUG } catch (Exception e) { DarkLog.Debug("Threw in FixedUpdate event, exception: " + e); if (dmpGame.networkWorker != null) { if (dmpGame.networkWorker.state != ClientState.RUNNING) { if (dmpGame.networkWorker.state != ClientState.DISCONNECTED) { dmpGame.networkWorker.SendDisconnect("Unhandled error while syncing!"); } else { dmpGame.networkWorker.Disconnect("Unhandled error while syncing!"); } } } } #endif } } DarkLog.Update(); profiler.Report("FixedUpdate", profilerStartTime, profilerStartMemory); kspTime = profiler.GetCurrentTime; kspMemory = profiler.GetCurrentMemory; }
public void Update() { long startClock = Profiler.DMPReferenceTime.ElapsedTicks; lastClockTicks = DateTime.UtcNow.Ticks; lastRealTimeSinceStartup = Time.realtimeSinceStartup; DarkLog.Update(); if (modDisabled) { return; } try { if (HighLogic.LoadedScene == GameScenes.MAINMENU) { if (!modWorker.dllListBuilt) { modWorker.dllListBuilt = true; modWorker.BuildDllFileList(); } if (!dmpSaveChecked) { dmpSaveChecked = true; SetupBlankGameIfNeeded(); } } //Handle GUI events if (!connectionWindow.renameEventHandled) { dmpSettings.SaveSettings(); connectionWindow.renameEventHandled = true; } if (!connectionWindow.addEventHandled) { dmpSettings.servers.Add(connectionWindow.addEntry); connectionWindow.addEntry = null; dmpSettings.SaveSettings(); connectionWindow.addingServer = false; connectionWindow.addEventHandled = true; } if (!connectionWindow.editEventHandled) { dmpSettings.servers[connectionWindow.selected].name = connectionWindow.editEntry.name; dmpSettings.servers[connectionWindow.selected].address = connectionWindow.editEntry.address; dmpSettings.servers[connectionWindow.selected].port = connectionWindow.editEntry.port; connectionWindow.editEntry = null; dmpSettings.SaveSettings(); connectionWindow.addingServer = false; connectionWindow.editEventHandled = true; } if (!connectionWindow.removeEventHandled) { dmpSettings.servers.RemoveAt(connectionWindow.selected); connectionWindow.selected = -1; dmpSettings.SaveSettings(); connectionWindow.removeEventHandled = true; } if (!connectionWindow.connectEventHandled) { connectionWindow.connectEventHandled = true; dmpGame = new DMPGame(dmpSettings, universeSyncCache, modWorker, connectionWindow, dmpModInterface, toolbarSupport, optionsWindow); dmpGame.networkWorker.ConnectToServer(dmpSettings.servers[connectionWindow.selected].address, dmpSettings.servers[connectionWindow.selected].port); } if (commandLineConnect != null && HighLogic.LoadedScene == GameScenes.MAINMENU && Time.timeSinceLevelLoad > 1f) { dmpGame = new DMPGame(dmpSettings, universeSyncCache, modWorker, connectionWindow, dmpModInterface, toolbarSupport, optionsWindow); dmpGame.networkWorker.ConnectToServer(commandLineConnect.address, commandLineConnect.port); commandLineConnect = null; } if (!connectionWindow.disconnectEventHandled) { connectionWindow.disconnectEventHandled = true; if (dmpGame != null) { if (dmpGame.networkWorker.state == ClientState.CONNECTING) { dmpGame.networkWorker.Disconnect("Cancelled connection to server"); } else { dmpGame.networkWorker.SendDisconnect("Quit during initial sync"); } dmpGame.Stop(); dmpGame = null; } } connectionWindow.Update(); modWindow.Update(); optionsWindow.Update(); universeConverterWindow.Update(); dmpModInterface.Update(); if (dmpGame != null) { foreach (Action updateAction in dmpGame.updateEvent) { try { updateAction(); } catch (Exception e) { DarkLog.Debug("Threw in UpdateEvent, exception: " + e); if (dmpGame.networkWorker.state != ClientState.RUNNING) { if (dmpGame.networkWorker.state != ClientState.DISCONNECTED) { dmpGame.networkWorker.SendDisconnect("Unhandled error while syncing!"); } else { dmpGame.networkWorker.Disconnect("Unhandled error while syncing!"); } } } } } //Force quit if (dmpGame != null && dmpGame.forceQuit) { dmpGame.forceQuit = false; dmpGame.Stop(); dmpGame = null; StopGame(); } if (displayDisconnectMessage) { if (HighLogic.LoadedScene != GameScenes.MAINMENU) { if ((Client.realtimeSinceStartup - lastDisconnectMessageCheck) > 1f) { lastDisconnectMessageCheck = Client.realtimeSinceStartup; if (disconnectMessage != null) { disconnectMessage.duration = 0; } disconnectMessage = ScreenMessages.PostScreenMessage("You have been disconnected!", 2f, ScreenMessageStyle.UPPER_CENTER); } } else { displayDisconnectMessage = false; } } //Normal quit if (dmpGame != null && dmpGame.running) { if (!dmpGame.playerStatusWindow.disconnectEventHandled) { dmpGame.playerStatusWindow.disconnectEventHandled = true; dmpGame.forceQuit = true; dmpGame.scenarioWorker.SendScenarioModules(true); // Send scenario modules before disconnecting dmpGame.networkWorker.SendDisconnect("Quit"); } if (dmpGame.screenshotWorker.uploadScreenshot) { dmpGame.screenshotWorker.uploadScreenshot = false; StartCoroutine(UploadScreenshot()); } if (HighLogic.CurrentGame.flagURL != dmpSettings.selectedFlag) { DarkLog.Debug("Saving selected flag"); dmpSettings.selectedFlag = HighLogic.CurrentGame.flagURL; dmpSettings.SaveSettings(); dmpGame.flagSyncer.flagChangeEvent = true; } // save every GeeASL from each body in FlightGlobals if (HighLogic.LoadedScene == GameScenes.FLIGHT && bodiesGees.Count == 0) { foreach (CelestialBody body in FlightGlobals.fetch.bodies) { bodiesGees.Add(body, body.GeeASL); } } //handle use of cheats if (!dmpGame.serverAllowCheats) { CheatOptions.InfinitePropellant = false; CheatOptions.NoCrashDamage = false; CheatOptions.IgnoreAgencyMindsetOnContracts = false; CheatOptions.IgnoreMaxTemperature = false; CheatOptions.InfiniteElectricity = false; CheatOptions.NoCrashDamage = false; CheatOptions.UnbreakableJoints = false; foreach (KeyValuePair <CelestialBody, double> gravityEntry in bodiesGees) { gravityEntry.Key.GeeASL = gravityEntry.Value; } } if (HighLogic.LoadedScene == GameScenes.FLIGHT && FlightGlobals.ready) { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = !dmpGame.vesselWorker.isSpectating && dmpSettings.revertEnabled || (PauseMenu.canSaveAndExit == ClearToSaveStatus.CLEAR); } else { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = true; } if (HighLogic.LoadedScene == GameScenes.MAINMENU) { dmpGame.networkWorker.SendDisconnect("Quit to main menu"); dmpGame.Stop(); dmpGame = null; } } if (dmpGame != null && dmpGame.startGame) { dmpGame.startGame = false; StartGame(); } } catch (Exception e) { if (dmpGame != null) { DarkLog.Debug("Threw in Update, state " + dmpGame.networkWorker.state.ToString() + ", exception: " + e); if (dmpGame.networkWorker.state != ClientState.RUNNING) { if (dmpGame.networkWorker.state != ClientState.DISCONNECTED) { dmpGame.networkWorker.SendDisconnect("Unhandled error while syncing!"); } else { dmpGame.networkWorker.Disconnect("Unhandled error while syncing!"); } } } else { DarkLog.Debug("Threw in Update, state NO_NETWORKWORKER, exception: " + e); } } Profiler.updateData.ReportTime(startClock); }
public void Update() { long startClock = Profiler.DMPReferenceTime.ElapsedTicks; DarkLog.Update(); if (modDisabled) { return; } try { if (HighLogic.LoadedScene == GameScenes.MAINMENU) { if (!ModWorker.fetch.dllListBuilt) { ModWorker.fetch.dllListBuilt = true; ModWorker.fetch.BuildDllFileList(); } if (!dmpSaveChecked) { dmpSaveChecked = true; SetupBlankGameIfNeeded(); } } //Handle GUI events if (!PlayerStatusWindow.fetch.disconnectEventHandled) { PlayerStatusWindow.fetch.disconnectEventHandled = true; forceQuit = true; NetworkWorker.fetch.SendDisconnect("Quit"); } if (!ConnectionWindow.fetch.renameEventHandled) { PlayerStatusWorker.fetch.myPlayerStatus.playerName = Settings.fetch.playerName; Settings.fetch.SaveSettings(); ConnectionWindow.fetch.renameEventHandled = true; } if (!ConnectionWindow.fetch.addEventHandled) { Settings.fetch.servers.Add(ConnectionWindow.fetch.addEntry); ConnectionWindow.fetch.addEntry = null; Settings.fetch.SaveSettings(); ConnectionWindow.fetch.addingServer = false; ConnectionWindow.fetch.addEventHandled = true; } if (!ConnectionWindow.fetch.editEventHandled) { Settings.fetch.servers[ConnectionWindow.fetch.selected].name = ConnectionWindow.fetch.editEntry.name; Settings.fetch.servers[ConnectionWindow.fetch.selected].address = ConnectionWindow.fetch.editEntry.address; Settings.fetch.servers[ConnectionWindow.fetch.selected].port = ConnectionWindow.fetch.editEntry.port; ConnectionWindow.fetch.editEntry = null; Settings.fetch.SaveSettings(); ConnectionWindow.fetch.addingServer = false; ConnectionWindow.fetch.editEventHandled = true; } if (!ConnectionWindow.fetch.removeEventHandled) { Settings.fetch.servers.RemoveAt(ConnectionWindow.fetch.selected); ConnectionWindow.fetch.selected = -1; Settings.fetch.SaveSettings(); ConnectionWindow.fetch.removeEventHandled = true; } if (!ConnectionWindow.fetch.connectEventHandled) { ConnectionWindow.fetch.connectEventHandled = true; NetworkWorker.fetch.ConnectToServer(Settings.fetch.servers[ConnectionWindow.fetch.selected].address, Settings.fetch.servers[ConnectionWindow.fetch.selected].port); } if (commandLineConnect != null && HighLogic.LoadedScene == GameScenes.MAINMENU && Time.timeSinceLevelLoad > 1f) { NetworkWorker.fetch.ConnectToServer(commandLineConnect.address, commandLineConnect.port); commandLineConnect = null; } if (!ConnectionWindow.fetch.disconnectEventHandled) { ConnectionWindow.fetch.disconnectEventHandled = true; gameRunning = false; fireReset = true; if (NetworkWorker.fetch.state == ClientState.CONNECTING) { NetworkWorker.fetch.Disconnect("Cancelled connection to server"); } else { NetworkWorker.fetch.SendDisconnect("Quit during initial sync"); } } foreach (Action updateAction in updateEvent) { try { updateAction(); } catch (Exception e) { DarkLog.Debug("Threw in UpdateEvent, exception: " + e); if (NetworkWorker.fetch.state != ClientState.RUNNING) { if (NetworkWorker.fetch.state != ClientState.DISCONNECTED) { NetworkWorker.fetch.SendDisconnect("Unhandled error while syncing!"); } else { NetworkWorker.fetch.Disconnect("Unhandled error while syncing!"); } } } } //Force quit if (forceQuit) { forceQuit = false; gameRunning = false; fireReset = true; StopGame(); } if (displayDisconnectMessage) { if (HighLogic.LoadedScene != GameScenes.MAINMENU) { if ((UnityEngine.Time.realtimeSinceStartup - lastDisconnectMessageCheck) > 1f) { lastDisconnectMessageCheck = UnityEngine.Time.realtimeSinceStartup; if (disconnectMessage != null) { disconnectMessage.duration = 0; } disconnectMessage = ScreenMessages.PostScreenMessage("You have been disconnected!", 2f, ScreenMessageStyle.UPPER_CENTER); } } else { displayDisconnectMessage = false; } } //Normal quit if (gameRunning) { if (HighLogic.LoadedScene == GameScenes.MAINMENU) { gameRunning = false; fireReset = true; NetworkWorker.fetch.SendDisconnect("Quit to main menu"); } if (ScreenshotWorker.fetch.uploadScreenshot) { ScreenshotWorker.fetch.uploadScreenshot = false; StartCoroutine(UploadScreenshot()); } if (HighLogic.CurrentGame.flagURL != Settings.fetch.selectedFlag) { DarkLog.Debug("Saving selected flag"); Settings.fetch.selectedFlag = HighLogic.CurrentGame.flagURL; Settings.fetch.SaveSettings(); FlagSyncer.fetch.flagChangeEvent = true; } // save every GeeASL from each body in FlightGlobals if (HighLogic.LoadedScene == GameScenes.FLIGHT && bodiesGees.Count == 0) { foreach (CelestialBody body in FlightGlobals.fetch.bodies) { bodiesGees.Add(body, body.GeeASL); } } //handle use of cheats if (!serverAllowCheats) { CheatOptions.InfiniteFuel = false; CheatOptions.InfiniteEVAFuel = false; CheatOptions.InfiniteRCS = false; CheatOptions.NoCrashDamage = false; foreach (KeyValuePair <CelestialBody, double> gravityEntry in bodiesGees) { gravityEntry.Key.GeeASL = gravityEntry.Value; } } if (HighLogic.LoadedScene == GameScenes.FLIGHT && FlightGlobals.ready) { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = Settings.fetch.revertEnabled || (PauseMenu.canSaveAndExit == ClearToSaveStatus.CLEAR); } else { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = true; } } if (fireReset) { fireReset = false; FireResetEvent(); } if (startGame) { startGame = false; StartGame(); } } catch (Exception e) { DarkLog.Debug("Threw in Update, state " + NetworkWorker.fetch.state.ToString() + ", exception" + e); if (NetworkWorker.fetch.state != ClientState.RUNNING) { if (NetworkWorker.fetch.state != ClientState.DISCONNECTED) { NetworkWorker.fetch.SendDisconnect("Unhandled error while syncing!"); } else { NetworkWorker.fetch.Disconnect("Unhandled error while syncing!"); } } } Profiler.updateData.ReportTime(startClock); }
public void Update() { profiler.Report("KSP", kspTime, kspMemory); DarkLog.Update(); ByteRecycler.GarbageCollect(50, 100); Recycler <VesselUpdate> .GarbageCollect(50, 100); long profilerStartTime = profiler.GetCurrentTime; long profilerStartMemory = profiler.GetCurrentMemory; lastClockTicks = DateTime.UtcNow.Ticks; lastRealTimeSinceStartup = Time.realtimeSinceStartup; if (warnDuplicateInstall && HighLogic.LoadedScene == GameScenes.MAINMENU) { warnDuplicateInstall = false; string message = "Please remove the duplicate install of DarkMultiPlayer."; PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), "InstallChecker", "Incorrect Install Detected", message, "OK", true, HighLogic.UISkin); } if (modDisabled) { return; } try { if (HighLogic.LoadedScene == GameScenes.MAINMENU) { if (!dmpSaveChecked) { dmpSaveChecked = true; SetupBlankGameIfNeeded(); } } if (HighLogic.LoadedScene == GameScenes.SPACECENTER && PSystemSetup.Instance != null && Time.timeSinceLevelLoad > 1f) { if (PSystemSetup.Instance.SpaceCenterFacilities.Length != facilitiesAdded) { facilitiesAdded = PSystemSetup.Instance.SpaceCenterFacilities.Length; foreach (PSystemSetup.SpaceCenterFacility spaceCenterFacility in PSystemSetup.Instance.SpaceCenterFacilities) { foreach (PSystemSetup.SpaceCenterFacility.SpawnPoint spawnPoint in spaceCenterFacility.spawnPoints) { if (spawnPoint.latitude != 0 && spawnPoint.longitude != 0 && spawnPoint.altitude != 0) { DarkLog.Debug("Adding facility spawn point: " + spaceCenterFacility.name + ":" + spawnPoint.name); SafetyBubble.RegisterLocation(spawnPoint.latitude, spawnPoint.longitude, spawnPoint.altitude, spaceCenterFacility.hostBody.name); DarkLog.Debug("LLA: [" + spawnPoint.latitude + ", " + spawnPoint.longitude + ", " + spawnPoint.altitude + "]"); } } } } if (PSystemSetup.Instance.LaunchSites.Count != modSitesAdded) { modSitesAdded = PSystemSetup.Instance.LaunchSites.Count; foreach (LaunchSite launchSite in PSystemSetup.Instance.LaunchSites) { foreach (LaunchSite.SpawnPoint spawnPoint in launchSite.spawnPoints) { if (spawnPoint.latitude != 0 && spawnPoint.longitude != 0 && spawnPoint.altitude != 0) { DarkLog.Debug("Adding mod spawn point: " + launchSite.name + ":" + spawnPoint.name); SafetyBubble.RegisterLocation(spawnPoint.latitude, spawnPoint.longitude, spawnPoint.altitude, launchSite.Body.name); DarkLog.Debug("LLA: [" + spawnPoint.latitude + ", " + spawnPoint.longitude + ", " + spawnPoint.altitude + "]"); } } } } if (PSystemSetup.Instance.StockLaunchSites.Length != stockSitesAdded) { stockSitesAdded = PSystemSetup.Instance.StockLaunchSites.Length; foreach (LaunchSite launchSite in PSystemSetup.Instance.StockLaunchSites) { foreach (LaunchSite.SpawnPoint spawnPoint in launchSite.spawnPoints) { if (spawnPoint.latitude != 0 && spawnPoint.longitude != 0 && spawnPoint.altitude != 0) { DarkLog.Debug("Adding stock spawn point: " + launchSite.name + ":" + spawnPoint.name); SafetyBubble.RegisterLocation(spawnPoint.latitude, spawnPoint.longitude, spawnPoint.altitude, launchSite.Body.name); DarkLog.Debug("LLA: [" + spawnPoint.latitude + ", " + spawnPoint.longitude + ", " + spawnPoint.altitude + "]"); } } } } } //Handle GUI events if (!connectionWindow.renameEventHandled) { dmpSettings.SaveSettings(); connectionWindow.renameEventHandled = true; } if (!connectionWindow.addEventHandled) { dmpSettings.servers.Add(connectionWindow.addEntry); connectionWindow.addEntry = null; dmpSettings.SaveSettings(); connectionWindow.addingServer = false; connectionWindow.addEventHandled = true; } if (!connectionWindow.editEventHandled) { dmpSettings.servers[connectionWindow.selected].name = connectionWindow.editEntry.name; dmpSettings.servers[connectionWindow.selected].address = connectionWindow.editEntry.address; dmpSettings.servers[connectionWindow.selected].port = connectionWindow.editEntry.port; connectionWindow.editEntry = null; dmpSettings.SaveSettings(); connectionWindow.addingServer = false; connectionWindow.editEventHandled = true; } if (!connectionWindow.removeEventHandled) { dmpSettings.servers.RemoveAt(connectionWindow.selected); connectionWindow.selected = -1; dmpSettings.SaveSettings(); connectionWindow.removeEventHandled = true; } if (!connectionWindow.connectEventHandled) { connectionWindow.connectEventHandled = true; ConnectToServer(dmpSettings.servers[connectionWindow.selected].address, dmpSettings.servers[connectionWindow.selected].port); } if (commandLineConnect != null && HighLogic.LoadedScene == GameScenes.MAINMENU && Time.timeSinceLevelLoad > 1f) { ConnectToServer(commandLineConnect.address, commandLineConnect.port); commandLineConnect = null; } if (!connectionWindow.disconnectEventHandled) { connectionWindow.disconnectEventHandled = true; if (dmpGame != null) { if (dmpGame.networkWorker.state == ClientState.CONNECTING) { dmpGame.networkWorker.Disconnect("Cancelled connection to server"); } else { dmpGame.networkWorker.SendDisconnect("Quit during initial sync"); } dmpGame.Stop(); dmpGame = null; } } connectionWindow.Update(); serverListConnection.Update(); serversWindow.Update(); modWindow.Update(); optionsWindow.Update(); universeConverterWindow.Update(); profiler.Update(); dmpModInterface.Update(); if (dmpGame != null) { foreach (NamedAction updateAction in dmpGame.updateEvent) { #if !DEBUG try { #endif long profilerUpdateStartTime = profiler.GetCurrentTime; long profilerUpdateStartMemory = profiler.GetCurrentMemory; updateAction.action(); profiler.Report(updateAction.name, profilerUpdateStartTime, profilerUpdateStartMemory); #if !DEBUG } catch (Exception e) { DarkLog.Debug("Threw in UpdateEvent, exception: " + e); if (dmpGame.networkWorker.state != ClientState.RUNNING) { if (dmpGame.networkWorker.state != ClientState.DISCONNECTED) { dmpGame.networkWorker.SendDisconnect("Unhandled error while syncing!"); } else { dmpGame.networkWorker.Disconnect("Unhandled error while syncing!"); } } } #endif } } //Force quit if (dmpGame != null && dmpGame.forceQuit) { dmpGame.forceQuit = false; dmpGame.Stop(); dmpGame = null; StopGame(); } if (displayDisconnectMessage) { if (HighLogic.LoadedScene != GameScenes.MAINMENU) { if ((Client.realtimeSinceStartup - lastDisconnectMessageCheck) > 1f) { lastDisconnectMessageCheck = Client.realtimeSinceStartup; if (disconnectMessage != null) { disconnectMessage.duration = 0; } disconnectMessage = ScreenMessages.PostScreenMessage("You have been disconnected!", 2f, ScreenMessageStyle.UPPER_CENTER); } } else { displayDisconnectMessage = false; } } //Normal quit if (dmpGame != null && dmpGame.running) { if (!dmpGame.playerStatusWindow.disconnectEventHandled) { dmpGame.playerStatusWindow.disconnectEventHandled = true; dmpGame.forceQuit = true; dmpGame.scenarioWorker.SendScenarioModules(true); // Send scenario modules before disconnecting dmpGame.networkWorker.SendDisconnect("Quit"); } if (dmpGame.screenshotWorker.uploadScreenshot) { dmpGame.screenshotWorker.uploadScreenshot = false; StartCoroutine(UploadScreenshot()); } if (HighLogic.CurrentGame.flagURL != dmpSettings.selectedFlag) { DarkLog.Debug("Saving selected flag"); dmpSettings.selectedFlag = HighLogic.CurrentGame.flagURL; dmpSettings.SaveSettings(); dmpGame.flagSyncer.flagChangeEvent = true; } // save every GeeASL from each body in FlightGlobals if (HighLogic.LoadedScene == GameScenes.FLIGHT && bodiesGees.Count == 0) { foreach (CelestialBody body in FlightGlobals.fetch.bodies) { bodiesGees.Add(body, body.GeeASL); } } //handle use of cheats if (!dmpGame.serverAllowCheats) { CheatOptions.InfinitePropellant = false; CheatOptions.NoCrashDamage = false; CheatOptions.IgnoreAgencyMindsetOnContracts = false; CheatOptions.IgnoreMaxTemperature = false; CheatOptions.InfiniteElectricity = false; CheatOptions.NoCrashDamage = false; CheatOptions.UnbreakableJoints = false; foreach (KeyValuePair <CelestialBody, double> gravityEntry in bodiesGees) { gravityEntry.Key.GeeASL = gravityEntry.Value; } } if (HighLogic.LoadedScene == GameScenes.FLIGHT && FlightGlobals.ready) { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = !dmpGame.vesselWorker.isSpectating && dmpSettings.revertEnabled || (PauseMenu.canSaveAndExit == ClearToSaveStatus.CLEAR); } else { HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = true; } if (HighLogic.LoadedScene == GameScenes.MAINMENU) { dmpGame.networkWorker.SendDisconnect("Quit to main menu"); dmpGame.Stop(); dmpGame = null; } } if (dmpGame != null && dmpGame.startGame) { dmpGame.startGame = false; StartGame(); } } catch (Exception e) { if (dmpGame != null) { DarkLog.Debug("Threw in Update, state " + dmpGame.networkWorker.state.ToString() + ", exception: " + e); if (dmpGame.networkWorker.state != ClientState.RUNNING) { if (dmpGame.networkWorker.state != ClientState.DISCONNECTED) { dmpGame.networkWorker.SendDisconnect("Unhandled error while syncing!"); } else { dmpGame.networkWorker.Disconnect("Unhandled error while syncing!"); } } } else { DarkLog.Debug("Threw in Update, state NO_NETWORKWORKER, exception: " + e); } } DarkLog.Update(); profiler.Report("Update", profilerStartTime, profilerStartMemory); kspTime = profiler.GetCurrentTime; kspMemory = profiler.GetCurrentMemory; }
public void Update() { long startClock = Profiler.DMPReferenceTime.ElapsedTicks; DarkLog.Update(); if (m_disableMod) { return; } if (!Assembly.IsValid) { if (m_incorrectInstallView == null) { m_incorrectInstallView = new IncorrectInstallWindow(); m_incorrectInstallView.Enable(); } return; } try { if (HighLogic.LoadedScene == GameScenes.MAINMENU) { // if (!dmpSaveChecked) // { // dmpSaveChecked = true; // SetupBlankGameIfNeeded(); // } } //Handle GUI events // if (!PlayerStatusWindow.Instance.disconnectEventHandled) // { // PlayerStatusWindow.Instance.disconnectEventHandled = true; // forceQuit = true; // GameClient.Instance.SendDisconnect("Quit"); // } // if (!ConnectionWindow.Instance.renameEventHandled) // { // PlayerStatusWorker.Instance.myPlayerStatus.playerName = Settings.Instance.playerName; // Settings.Instance.SaveSettings(); // ConnectionWindow.Instance.renameEventHandled = true; // } // if (!ConnectionWindow.Instance.addEventHandled) // { // Settings.Instance.servers.Add(ConnectionWindow.Instance.addEntry); // ConnectionWindow.Instance.addEntry = null; // Settings.Instance.SaveSettings(); // ConnectionWindow.Instance.addingServer = false; // ConnectionWindow.Instance.addEventHandled = true; // } // if (!ConnectionWindow.Instance.editEventHandled) // { // Settings.servers[ConnectionWindow.Instance.selected].name = ConnectionWindow.Instance.editEntry.name; // Settings.Instance.servers[ConnectionWindow.Instance.selected].address = ConnectionWindow.Instance.editEntry.address; // Settings.Instance.servers[ConnectionWindow.Instance.selected].port = ConnectionWindow.Instance.editEntry.port; // ConnectionWindow.Instance.editEntry = null; // Settings.Instance.SaveSettings(); // ConnectionWindow.Instance.addingServer = false; // ConnectionWindow.Instance.editEventHandled = true; // } // if (!ConnectionWindow.Instance.removeEventHandled) // { // Settings.Instance.servers.RemoveAt(ConnectionWindow.Instance.selected); // ConnectionWindow.Instance.selected = -1; // Settings.Instance.SaveSettings(); // ConnectionWindow.Instance.removeEventHandled = true; // } // if (!ConnectionWindow.Instance.connectEventHandled) // { // ConnectionWindow.Instance.connectEventHandled = true; // GameClient.Instance.ConnectToServer(Settings.Instance.servers[ConnectionWindow.Instance.selected].address, Settings.Instance.servers[ConnectionWindow.Instance.selected].port); // } // if (commandLineConnect != null && HighLogic.LoadedScene == GameScenes.MAINMENU && Time.timeSinceLevelLoad > 1f) // { // GameClient.Instance.ConnectToServer(commandLineConnect.address, commandLineConnect.port); // commandLineConnect = null; // } // // if (!ConnectionWindow.Instance.disconnectEventHandled) // { // ConnectionWindow.Instance.disconnectEventHandled = true; // gameRunning = false; // fireReset = true; // if (GameClient.Instance.state == ClientState.CONNECTING) // { // GameClient.Instance.Disconnect("Cancelled connection to server"); // } // else // { // GameClient.Instance.SendDisconnect("Quit during initial sync"); // } // } UpdateEvent(); //Force quit // if (forceQuit) // { // forceQuit = false; // gameRunning = false; // fireReset = true; // StopGame(); // } // if (displayDisconnectMessage) // { // if (HighLogic.LoadedScene != GameScenes.MAINMENU) // { // if ((UnityEngine.Time.realtimeSinceStartup - lastDisconnectMessageCheck) > 1f) // { // lastDisconnectMessageCheck = UnityEngine.Time.realtimeSinceStartup; // if (disconnectMessage != null) // { // disconnectMessage.duration = 0; // } // disconnectMessage = ScreenMessages.PostScreenMessage("You have been disconnected!", 2f, ScreenMessageStyle.UPPER_CENTER); // } // } // else // { // displayDisconnectMessage = false; // } // } //Normal quit // if (gameRunning) // { // if (HighLogic.LoadedScene == GameScenes.MAINMENU) // { // gameRunning = false; // fireReset = true; // GameClient.Instance.SendDisconnect("Quit to main menu"); // } // // if (ScreenshotWorker.Instance.uploadScreenshot) // { // ScreenshotWorker.Instance.uploadScreenshot = false; // StartCoroutine(UploadScreenshot()); // } // // if (HighLogic.CurrentGame.flagURL != Settings.Instance.selectedFlag) // { // DarkLog.Debug("Saving selected flag"); // Settings.Instance.selectedFlag = HighLogic.CurrentGame.flagURL; // Settings.Instance.SaveSettings(); // FlagSyncer.Instance.flagChangeEvent = true; // } // // // save every GeeASL from each body in FlightGlobals // if (HighLogic.LoadedScene == GameScenes.FLIGHT && bodiesGees.Count == 0) // { // foreach (CelestialBody body in FlightGlobals.fetch.bodies) // { // bodiesGees.Add(body, body.GeeASL); // } // } // // //handle use of cheats // if (!serverAllowCheats) // { // CheatOptions.InfiniteFuel = false; // CheatOptions.InfiniteEVAFuel = false; // CheatOptions.InfiniteRCS = false; // CheatOptions.NoCrashDamage = false; // // foreach (KeyValuePair<CelestialBody, double> gravityEntry in bodiesGees) // { // gravityEntry.Key.GeeASL = gravityEntry.Value; // } // } // // if (HighLogic.LoadedScene == GameScenes.FLIGHT && FlightGlobals.ready) // { // HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = (PauseMenu.canSaveAndExit == ClearToSaveStatus.CLEAR); // } // else // { // HighLogic.CurrentGame.Parameters.Flight.CanLeaveToSpaceCenter = true; // } // } // // if (fireReset) // { // fireReset = false; // FireResetEvent(); // } // // if (startGame) // { // startGame = false; // StartGame(); // } } catch (Exception e) { // DarkLog.Debug("Threw in Update, state " + GameClient.Instance.state.ToString() + ", exception" + e); // if (GameClient.Instance.state != ClientState.RUNNING) // { // if (GameClient.Instance.state != ClientState.DISCONNECTED) // { // GameClient.Instance.SendDisconnect("Unhandled error while syncing!"); // } // else // { // GameClient.Instance.Disconnect("Unhandled error while syncing!"); // } // } } Profiler.updateData.ReportTime(startClock); }