public static void Enable() { singleton = new IncorrectInstallWindow(); lock (Client.eventLock) { Client.drawEvent.Add(singleton.Draw); } singleton.display = true; }
public static void Enable() { singleton = new IncorrectInstallWindow(); lock (Client.eventLock) { Client.drawEvent.Add(singleton.Draw); } singleton.display = true; }
public void Awake() { Profiler.DMPReferenceTime.Start(); GameObject.DontDestroyOnLoad(this); UnityEngine.Debug.Log("KSP installed at " + Assembly.AssemblyPath); UnityEngine.Debug.Log("DMP installed at " + Assembly.AssemblyPath); if (!Assembly.IsValid) { UnityEngine.Debug.LogError("DMP is installed at '" + Assembly.AssemblyPath + "', It should be installed at '" + Assembly.AssemblyValidPath + "'"); return; } m_assembly = new KerbalAssembly(); m_settings = new Settings(); m_modWorker.BuildModuleList(); // UI m_incorrectInstallView = null; m_modView = new ModWindow(); m_disclaimerWindow = null; if (Settings.DisclaimerAccepted != 1 && m_disclaimerWindow == null) { m_disableMod = true; m_disclaimerWindow = new DisclaimerWindow(); m_disclaimerWindow.Enable(); } SetupDirectoriesIfNeeded(); GameEvents.onHideUI.Add(() => { m_showUI = false; }); GameEvents.onShowUI.Add(() => { m_showUI = true; }); ResetEvent(); HandleCommandLineArgs(); DarkLog.Debug("DarkMultiPlayer " + Common.PROGRAM_VERSION + ", protocol " + Common.PROTOCOL_VERSION + " Initialized!"); }
public void Update() { long startClock = Profiler.DMPReferenceTime.ElapsedTicks; DarkLog.Update(); if (modDisabled) { return; } if (incorrectlyInstalled) { if (!displayedIncorrectMessage) { displayedIncorrectMessage = true; IncorrectInstallWindow.Enable(); } 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 = (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() { if (incorrectlyInstalled) { if (!displayedIncorrectMessage) { displayedIncorrectMessage = true; IncorrectInstallWindow.Enable(); } return; } try { if (HighLogic.LoadedScene == GameScenes.MAINMENU && !ModWorker.fetch.dllListBuilt) { ModWorker.fetch.dllListBuilt = true; ModWorker.fetch.BuildDllFileList(); } //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) { NetworkWorker.fetch.ConnectToServer(Settings.fetch.servers[ConnectionWindow.fetch.selected].address, Settings.fetch.servers[ConnectionWindow.fetch.selected].port); ConnectionWindow.fetch.connectEventHandled = true; } if (!ConnectionWindow.fetch.disconnectEventHandled) { ConnectionWindow.fetch.disconnectEventHandled = true; gameRunning = false; fireReset = true; 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; NetworkWorker.fetch.SendDisconnect("Force quit to main menu"); 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; } //handle use of cheats if (!serverAllowCheats) { CheatOptions.InfiniteFuel = false; CheatOptions.InfiniteEVAFuel = false; CheatOptions.InfiniteRCS = false; CheatOptions.NoCrashDamage = false; } } 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!"); } } } }
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); }