public void gameSceneEvent(GameScenes scene) { if (scene == GameScenes.MAINMENU) { KCT_GameStates.reset(); KCT_GameStates.firstStart = false; InputLockManager.RemoveControlLock("KCTLaunchLock"); KCT_GameStates.activeKSCName = "Stock"; KCT_GameStates.ActiveKSC = new KCT_KSC("Stock"); KCT_GameStates.KSCs = new List <KCT_KSC>() { KCT_GameStates.ActiveKSC }; KCT_GameStates.LastKnownTechCount = 0; KCT_GameStates.PermanentModAddedUpgradesButReallyWaitForTheAPI = 0; KCT_GameStates.TemporaryModAddedUpgradesButReallyWaitForTheAPI = 0; if (KCT_PresetManager.Instance != null) { KCT_PresetManager.Instance.ClearPresets(); KCT_PresetManager.Instance = null; } return; } KCT_GameStates.MiscellaneousTempUpgrades = 0; if (KCT_PresetManager.PresetLoaded() && !KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled) { return; } List <GameScenes> validScenes = new List <GameScenes> { GameScenes.SPACECENTER, GameScenes.TRACKSTATION, GameScenes.EDITOR }; if (validScenes.Contains(scene)) { TechDisableEventFinal(); } if (HighLogic.LoadedScene == scene && scene == GameScenes.EDITOR) //Fix for null reference when using new or load buttons in editor { GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); } if (HighLogic.LoadedSceneIsEditor) { EditorLogic.fetch.Unlock("KCTEditorMouseLock"); } }
public void gameSceneEvent(GameScenes scene) { KCT_SpecialSurpriseInside.instance.sceneChanges++; if (!KCT_GameStates.settings.enabledForSave) { return; } List <GameScenes> validScenes = new List <GameScenes> { GameScenes.SPACECENTER, GameScenes.TRACKSTATION, GameScenes.EDITOR }; if (validScenes.Contains(scene)) { //Check for simulation save and load it. if (System.IO.File.Exists(KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/KCT_simulation_backup.sfs")) { KCT_Utilities.LoadSimulationSave(false); } TechDisableEvent(); } if (!HighLogic.LoadedSceneIsFlight && scene == GameScenes.FLIGHT && KCT_GameStates.flightSimulated) //Backup save at simulation start { KCT_Utilities.MakeSimulationSave(); } if (HighLogic.LoadedScene == scene && scene == GameScenes.EDITOR) //Fix for null reference when using new or load buttons in editor { GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); } if (scene == GameScenes.MAINMENU) { KCT_GameStates.reset(); KCT_GameStates.firstStart = true; KCT_Utilities.disableSimulationLocks(); InputLockManager.RemoveControlLock("KCTLaunchLock"); KCT_GameStates.activeKSCName = "Stock"; KCT_GameStates.ActiveKSC = new KCT_KSC("Stock"); KCT_GameStates.KSCs = new List <KCT_KSC>() { KCT_GameStates.ActiveKSC }; } if (HighLogic.LoadedSceneIsEditor) { EditorLogic.fetch.Unlock("KCTEditorMouseLock"); } }
public void gameSceneEvent(GameScenes scene) { if (scene == GameScenes.MAINMENU) { KCT_GameStates.reset(); KCT_GameStates.firstStart = false; KCT_Utilities.disableSimulationLocks(); InputLockManager.RemoveControlLock("KCTLaunchLock"); KCT_GameStates.activeKSCName = "Stock"; KCT_GameStates.ActiveKSC = new KCT_KSC("Stock"); KCT_GameStates.KSCs = new List <KCT_KSC>() { KCT_GameStates.ActiveKSC }; KCT_GameStates.EditorSimulationCount = 0; KCT_GameStates.LastKnownTechCount = 0; KCT_GameStates.PermanentModAddedUpgradesButReallyWaitForTheAPI = 0; KCT_GameStates.TemporaryModAddedUpgradesButReallyWaitForTheAPI = 0; if (KCT_PresetManager.Instance != null) { KCT_PresetManager.Instance.ClearPresets(); KCT_PresetManager.Instance = null; } return; } KCT_GameStates.MiscellaneousTempUpgrades = 0; /*if (HighLogic.LoadedScene == GameScenes.MAINMENU) * { * if (scene == GameScenes.SPACECENTER) * { * KCT_PresetManager.Instance.FindPresetFiles(); * KCT_PresetManager.Instance.LoadPresets(); * } * }*/ if (KCT_PresetManager.PresetLoaded() && !KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled) { return; } List <GameScenes> validScenes = new List <GameScenes> { GameScenes.SPACECENTER, GameScenes.TRACKSTATION, GameScenes.EDITOR }; if (validScenes.Contains(scene)) { //Check for simulation save and load it. if (System.IO.File.Exists(KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/KCT_simulation_backup.sfs")) { KCT_Utilities.LoadSimulationSave(false); } TechDisableEventFinal(); } /*if (!HighLogic.LoadedSceneIsFlight && scene == GameScenes.FLIGHT && KCT_GameStates.flightSimulated) //Backup save at simulation start * { * KCT_Utilities.MakeSimulationSave(); * }*/ if (HighLogic.LoadedScene == scene && scene == GameScenes.EDITOR) //Fix for null reference when using new or load buttons in editor { GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); } if (HighLogic.LoadedSceneIsEditor) { EditorLogic.fetch.Unlock("KCTEditorMouseLock"); } if (!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight) { KCT_GameStates.EditorSimulationCount = 0; } }
public void Start() { KCT_GameStates.settings.Save(); //Save the settings file, with defaults if it doesn't exist KCT_PresetManager.Instance.SaveActiveToSaveData(); /* KCT_GameStates.timeSettings.Load(); //Load the time settings * KCT_GameStates.timeSettings.Save(); //Save the time settings * UpdateOldFormulaCFG(); //Update the formula cfg file to the new format so things aren't broken * KCT_GameStates.formulaSettings.Load(); * KCT_GameStates.formulaSettings.Save();*/ // Ghetto event queue if (HighLogic.LoadedScene == GameScenes.EDITOR) { InvokeRepeating("EditorRecalculation", 1, 1); } //Code for saving to the persistence.sfs ProtoScenarioModule scenario = HighLogic.CurrentGame.scenarios.Find(s => s.moduleName == typeof(KerbalConstructionTimeData).Name); if (scenario == null) { try { Debug.Log("[KCT] Adding InternalModule scenario to game '" + HighLogic.CurrentGame.Title + "'"); HighLogic.CurrentGame.AddProtoScenarioModule(typeof(KerbalConstructionTimeData), new GameScenes[] { GameScenes.FLIGHT, GameScenes.SPACECENTER, GameScenes.EDITOR, GameScenes.TRACKSTATION }); // the game will add this scenario to the appropriate persistent file on save from now on } catch (ArgumentException ae) { Debug.LogException(ae); } catch { Debug.Log("[KCT] Unknown failure while adding scenario."); } } else { if (!scenario.targetScenes.Contains(GameScenes.SPACECENTER)) { scenario.targetScenes.Add(GameScenes.SPACECENTER); } if (!scenario.targetScenes.Contains(GameScenes.FLIGHT)) { scenario.targetScenes.Add(GameScenes.FLIGHT); } if (!scenario.targetScenes.Contains(GameScenes.EDITOR)) { scenario.targetScenes.Add(GameScenes.EDITOR); } if (!scenario.targetScenes.Contains(GameScenes.TRACKSTATION)) { scenario.targetScenes.Add(GameScenes.TRACKSTATION); } } //End code for persistence.sfs if (KCT_GUI.PrimarilyDisabled) { if (InputLockManager.GetControlLock("KCTLaunchLock") == ControlTypes.EDITOR_LAUNCH) { InputLockManager.RemoveControlLock("KCTLaunchLock"); } } KACWrapper.InitKACWrapper(); if (!KCT_Events.instance.eventAdded) { KCT_Events.instance.addEvents(); } if (!KCT_PresetManager.Instance.ActivePreset.generalSettings.Enabled) { if (InputLockManager.GetControlLock("KCTKSCLock") == ControlTypes.KSC_FACILITIES) { InputLockManager.RemoveControlLock("KCTKSCLock"); } return; } //Begin primary mod functions KCT_GameStates.UT = Planetarium.GetUniversalTime(); /* List<GameScenes> validScenes = new List<GameScenes> { GameScenes.SPACECENTER, GameScenes.TRACKSTATION, GameScenes.EDITOR }; * if (validScenes.Contains(HighLogic.LoadedScene) && System.IO.File.Exists(KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/KCT_simulation_backup.sfs")) * { * KCT_Utilities.LoadSimulationSave(); * }*/ KCT_GUI.guiDataSaver.Load(); if (!HighLogic.LoadedSceneIsFlight && KCT_GameStates.flightSimulated) { KCT_GameStates.reset(); } if (HighLogic.LoadedSceneIsEditor) { if (KCT_GUI.showSimulationCompleteEditor) { KCT_GUI.hideAll(); KCT_GUI.showSimulationCompleteEditor = true; } else { KCT_GUI.hideAll(); } if (!KCT_GUI.PrimarilyDisabled) { KCT_GUI.showEditorGUI = KCT_GameStates.showWindows[1]; } if (KCT_GameStates.EditorShipEditingMode && KCT_GameStates.delayStart) { KCT_GameStates.delayStart = false; EditorLogic.fetch.shipNameField.Text = KCT_GameStates.editedVessel.shipName; } } else if (HighLogic.LoadedScene == GameScenes.SPACECENTER) { /* if (System.IO.File.Exists(KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/KCT_simulation_backup.sfs")) * { * KCT_Utilities.LoadSimulationSave(); * }*/ KCT_GUI.hideAll(); // KCT_GameStates.ActiveKSC.SwitchLaunchPad(KCT_GameStates.ActiveKSC.ActiveLaunchPadID); } if (HighLogic.LoadedSceneIsFlight && !KCT_GameStates.flightSimulated && FlightGlobals.ActiveVessel.situation == Vessel.Situations.PRELAUNCH) { if (FlightGlobals.ActiveVessel.GetCrewCount() == 0 && KCT_GameStates.launchedCrew.Count > 0) { KerbalRoster roster = HighLogic.CurrentGame.CrewRoster; /* foreach (CrewedPart c in KCT_GameStates.launchedCrew) * { * KCTDebug.Log(c.partID); * }*/ for (int i = 0; i < FlightGlobals.ActiveVessel.parts.Count; i++) { Part p = FlightGlobals.ActiveVessel.parts[i]; //KCTDebug.Log("craft: " + p.craftID); { CrewedPart cP = KCT_GameStates.launchedCrew.Find(part => part.partID == p.craftID); if (cP == null) { continue; } List <ProtoCrewMember> crewList = cP.crewList; foreach (ProtoCrewMember crewMember in crewList) { if (crewMember != null) { ProtoCrewMember finalCrewMember = crewMember; if (crewMember.type == ProtoCrewMember.KerbalType.Crew) { finalCrewMember = roster.Crew.FirstOrDefault(c => c.name == crewMember.name); } else if (crewMember.type == ProtoCrewMember.KerbalType.Tourist) { finalCrewMember = roster.Tourist.FirstOrDefault(c => c.name == crewMember.name); } if (finalCrewMember == null) { Debug.LogError("Error when assigning " + crewMember.name + " to " + p.partInfo.name + ". Cannot find Kerbal in list."); continue; } try { KCTDebug.Log("Assigning " + finalCrewMember.name + " to " + p.partInfo.name); if (p.AddCrewmember(finalCrewMember))//p.AddCrewmemberAt(finalCrewMember, crewList.IndexOf(crewMember))) { finalCrewMember.rosterStatus = ProtoCrewMember.RosterStatus.Assigned; if (finalCrewMember.seat != null) { finalCrewMember.seat.SpawnCrew(); } } else { Debug.LogError("Error when assigning " + crewMember.name + " to " + p.partInfo.name); finalCrewMember.rosterStatus = ProtoCrewMember.RosterStatus.Available; continue; } } catch { Debug.LogError("Error when assigning " + crewMember.name + " to " + p.partInfo.name); finalCrewMember.rosterStatus = ProtoCrewMember.RosterStatus.Available; continue; } } } } } KCT_GameStates.launchedCrew.Clear(); } } KCT_GameStates.erroredDuringOnLoad.OnLoadStart(); }