public void Unload(Vessel vessel, bool delete) { if (!vessel.isEVA) { OrXchaseDebug.DebugWarning("Tried unloading a non eva."); return; } OrXchaseDebug.DebugLog("Unload(" + vessel.name + ")"); foreach (var item in collection) { if (item.flightID == vessel.id) { if (delete) { item.status = Status.Removed; } //unload the vessel here. item.Unload(); OrXchaseSettings.SaveEva(item); OrXchaseDebug.DebugLog("Remove EVA: (" + vessel.name + ")"); collection.Remove(item); break; } } }
public static void SaveEva(OrXchaseContainer container) { OrXchaseDebug.DebugWarning("OrXchaseSettings.SaveEva(" + container.Name + ")"); if (container.status == Status.Removed) { if (collection.ContainsKey(container.flightID)) { collection.Remove(container.flightID); } } else { //The eva was already has a old save. if (collection.ContainsKey(container.flightID)) { //Replace the old save. collection[container.flightID] = container.ToSave(); } else { //No save yet. Add it now. collection.Add(container.flightID, container.ToSave()); } } }
public static void LoadFunction() { OrXchaseDebug.ProfileStart(); LoadFile(); OrXchaseDebug.ProfileEnd("OrXchaseSettings.Load()"); isLoaded = true; }
public void Load(Vessel vessel) { if (!vessel.isEVA) { OrXchaseDebug.DebugWarning("Tried loading a non eva."); return; } KerbalEVA OrXEVA = vessel.GetComponent <KerbalEVA>(); var currentEVA = vessel.FindPartModuleImplementing <KerbalEVA>(); if (!Contains(vessel.id)) { OrXchaseContainer container = new OrXchaseContainer(vessel.id); //load the vessel here. container.Load(currentEVA); OrXchaseSettings.LoadEva(container); collection.Add(container); } else { //Reload OrXchaseContainer container = GetEva(vessel.id); container.Load(currentEVA); OrXchaseSettings.LoadEva(container); } }
public void VesselDestroyed(Vessel report) { OrXchaseDebug.DebugLog("VesselDestroyed()"); if (report.isEVA) { Unload(report, true); } }
public static void Load() { OrXchaseDebug.DebugWarning("OnLoad()"); if (displayLoadingKerbals) { ScreenMessages.PostScreenMessage("Loading Kerbals...", 3, ScreenMessageStyle.LOWER_CENTER); } LoadFunction(); }
/// <summary> /// Runs when the EVA is killed. /// </summary> /// <param name="report"></param> public void OnCrewKilled(EventReport report) { OrXchaseDebug.DebugLog("OnCrewKilled()"); KerbalRoster boboo = new KerbalRoster(Game.Modes.SANDBOX); print(boboo[report.sender].name); //MonoBehaviour.print(report.origin); //MonoBehaviour.print(report.origin.vessel); Unload(report.origin.vessel, true); }
public void OnPartPack(Part part) { if (part.vessel.isEVA) { //save before pack OrXchaseDebug.DebugWarning("Pack: " + part.vessel.name); Unload(part.vessel, false); } }
public void OnPartUnpack(Part part) { if (part.vessel.isEVA) { //save before pack OrXchaseDebug.DebugWarning("Unpack: " + part.vessel.name); Load(part.vessel); } }
public void Start() { OrXchaseDebug.DebugWarning("OrXchaseOrderController.Start()"); //save config. //OrXchaseSettings.SaveConfiguration(); OrXchaseSettings.LoadConfiguration(); //InitializeCursor(); }
public bool Contains(Guid id) { OrXchaseDebug.DebugLog("Contains()"); for (int i = 0; i < collection.Count; i++) { if (collection[i].flightID == id) { return(true); } } return(false); }
public void Awake() { OrXchaseDebug.DebugLog("Loaded AddOrXchase."); ConfigNode EVA = new ConfigNode("MODULE"); EVA.AddValue("name", "OrXchaseModule"); try { PartLoader.getPartInfoByName("kerbalEVA").partPrefab.AddModule(EVA); } catch { } EVA = new ConfigNode("MODULE"); EVA.AddValue("name", "OrXchaseModule"); try { PartLoader.getPartInfoByName("kerbalEVAfemale").partPrefab.AddModule(EVA); } catch { } /* * EVA = new ConfigNode("MODULE"); * EVA.AddValue("name", "OrXchaseModule"); * * try * { * PartLoader.getPartInfoByName("OrX_OrxBonusBall").partPrefab.AddModule(EVA); * } * catch * { * * } * * EVA = new ConfigNode("MODULE"); * EVA.AddValue("name", "OrXchaseModule"); * * try * { * PartLoader.getPartInfoByName("OrX_OrxBonusBall2").partPrefab.AddModule(EVA); * } * catch * { * * } */ }
public static void Save() { if (isLoaded) { OrXchaseDebug.DebugWarning("OnSave()"); if (displayLoadingKerbals) { ScreenMessages.PostScreenMessage("Saving Kerbals...", 3, ScreenMessageStyle.LOWER_CENTER); } SaveFunction(); isLoaded = false; } }
public void Load(KerbalEVA eva) { //Load KerbalEVA. this.eva = eva; loaded = true; //Set Name this.Name = eva.name; //module on last. OrXchaseModule module = (OrXchaseModule)eva.GetComponent(typeof(OrXchaseModule)); module.Load(this); OrXchaseDebug.DebugWarning("OrXchaseContainer.Load(" + eva.name + ")"); }
public void OnDestroy() { OrXchaseDebug.DebugWarning("OrXchaseController.OnDestroy()"); GameEvents.onPartPack.Remove(OnPartPack); GameEvents.onPartUnpack.Remove(OnPartUnpack); GameEvents.onCrewOnEva.Remove(OnCrewOnEva); GameEvents.onCrewBoardVessel.Remove(OnCrewBoardVessel); // GameEvents.onCrewKilled.Remove(OnCrewKilled); // GameEvents.onVesselWillDestroy.Add(VesselDestroyed); GameEvents.onGameStateSave.Remove(OnSave); GameEvents.onFlightReady.Remove(onFlightReadyCallback); }
public void Start() { OrXchaseDebug.DebugWarning("OrXchaseController.Start()"); //initialize the singleton. instance = this; GameEvents.onPartPack.Add(OnPartPack); GameEvents.onPartUnpack.Add(OnPartUnpack); GameEvents.onCrewOnEva.Add(OnCrewOnEva); GameEvents.onCrewBoardVessel.Add(OnCrewBoardVessel); // GameEvents.onCrewKilled.Add(OnCrewKilled); // GameEvents.onVesselWillDestroy.Add(VesselDestroyed); GameEvents.onGameStateSave.Add(OnSave); GameEvents.onFlightReady.Add(onFlightReadyCallback); }
public static void LoadConfiguration() { if (FileExcist("Config.cfg")) { KSP.IO.TextReader tr = KSP.IO.TextReader.CreateForType <OrXchaseSettings>("Config.cfg"); string[] lines = tr.ReadToEnd().Split('\n'); foreach (var line in lines) { string[] parts = line.Split('='); try { if (parts.Length > 1) { string name = parts[0].Trim(); string value = parts[1].Trim(); switch (name) { case "ShowDebugLineSalt": { displayDebugLinesSetting = bool.Parse(value); } break; case "ShowLoadingKerbalSalt": { displayLoadingKerbals = bool.Parse(value); } break; case "EnableHelmetToggle": { displayToggleHelmet = bool.Parse(value); } break; case "SelectMouseButton": { selectMouseButton = int.Parse(value); } break; case "DispatchMouseButton": { dispatchMouseButton = int.Parse(value); } break; case "SelectKey": { selectKeyButton = value; } break; case "DispatchKey": { dispatchKeyButton = value; } break; case "TargetVesselBySelection": { targetVesselBySelection = bool.Parse(value); } break; } } } catch { OrXchaseDebug.DebugWarning("[OrX Chase] Config loading error "); } } displayDebugLines = displayDebugLinesSetting; } }
public void FromSave(string OrXchaseSettings) { OrXchaseTokenReader reader = new OrXchaseTokenReader(OrXchaseSettings); try { string sflightID = reader.NextTokenEnd(','); string sName = reader.NextTokenEnd(','); string mode = reader.NextTokenEnd(','); string status = reader.NextTokenEnd(','); string selected = reader.NextTokenEnd(','); string showHelmet = reader.NextTokenEnd(','); string formation = reader.NextToken('(', ')'); reader.Consume(); string patrol = reader.NextToken('(', ')'); reader.Consume(); string order = reader.NextToken('(', ')'); reader.Consume(); string wanderer = reader.NextToken('(', ')'); this.Name = sName; this.mode = (Mode)Enum.Parse(typeof(Mode), mode); this.status = (Status)Enum.Parse(typeof(Status), status); this.selected = bool.Parse(selected); this.showHelmet = bool.Parse(showHelmet); this.formation.FromSave(formation); this.patrol.FromSave(patrol); this.order.FromSave(order); this.wanderer.FromSave(wanderer); OrXchaseDebug.DebugLog("Loaded: " + mode); OrXchaseDebug.DebugLog("name: " + sName); OrXchaseDebug.DebugLog("status: " + status); OrXchaseDebug.DebugLog("selected: " + selected); if (this.showHelmet == false) { eva.ShowHelmet(this.showHelmet); } } catch { throw new Exception("[OrX Chase] FromSave Failed."); } }
public static void LoadEva(OrXchaseContainer container) { OrXchaseDebug.DebugWarning("OrXchaseSettings.LoadEva(" + container.Name + ")"); //The eva was already has a old save. //Load it. if (collection.ContainsKey(container.flightID)) { //string evaString = collection[container.flightID]; //OrXchaseDebug.DebugWarning(evaString); container.FromSave(collection[container.flightID]); } else { //No save yet. } }
private static void LoadFile() { string fileName = String.Format("Evas-{0}.txt", HighLogic.CurrentGame.Title); if (FileExcist(fileName)) { KSP.IO.TextReader tr = KSP.IO.TextReader.CreateForType <OrXchaseSettings>(fileName); string file = tr.ReadToEnd(); tr.Close(); OrXchaseTokenReader reader = new OrXchaseTokenReader(file); OrXchaseDebug.DebugLog("Size KeySize: " + collection.Count); //read every eva. while (!reader.EOF) { //Load all the eva's in the list. LoadEva(reader.NextToken('[', ']')); } } }
public void Start() { OrXchaseDebug.DebugWarning("OrXchaseLogic.Start()"); }
/// <summary> /// Runs when the kerbal goes on EVA. /// </summary> /// <param name="e"></param> public void OnCrewOnEva(GameEvents.FromToAction <Part, Part> e) { //add new kerbal OrXchaseDebug.DebugLog("OnCrewOnEva()"); Load(e.to.vessel); }
public void Update() { if (!FlightGlobals.ready || PauseMenu.isOpen) { return; } // Replace this with a check to see if GUI is hidden if (Input.GetKeyDown(KeyCode.F2) && OrXchaseSettings.displayDebugLinesSetting) { OrXchaseSettings.displayDebugLines = !OrXchaseSettings.displayDebugLines; foreach (OrXchaseContainer container in OrXchaseController.instance.collection) { container.togglePatrolLines(); } } if (Input.GetKeyDown(KeyCode.B)) { foreach (OrXchaseContainer container in OrXchaseController.instance.collection) { container.EVA.PackToggle(); } } try { foreach (OrXchaseContainer eva in OrXchaseController.instance.collection.ToArray()) { if (eva == null) { //is this possible ? OrXchaseDebug.DebugWarning("eva == null"); continue; } //skip unloaded vessels if (!eva.Loaded) { continue; } //Turn the lights on when dark. //Skip for now, too buggy.. //eva.UpdateLamps(); if (eva.mode == Mode.None) { //Nothing to do here. continue; } //Recover from ragdoll, if possible. if (eva.IsRagDoll) { //eva.RecoverFromRagdoll(); continue; } Vector3d move = -eva.Position; //Get next Action, Formation or Patrol Vector3d target = eva.GetNextTarget(); // Path Finding //todo: check if the target is occopied. move += target; double sqrDist = move.sqrMagnitude; float speed = TimeWarp.deltaTime; if (eva.OnALadder) { eva.ReleaseLadder(); } #region Break Free Code if (eva.IsActive) { Mode mode = eva.mode; if (Input.GetKeyDown(KeyCode.W)) { mode = OrXBDAc.chase.Mode.None; } if (Input.GetKeyDown(KeyCode.S)) { mode = OrXBDAc.chase.Mode.None; } if (Input.GetKeyDown(KeyCode.A)) { mode = OrXBDAc.chase.Mode.None; } if (Input.GetKeyDown(KeyCode.D)) { mode = OrXBDAc.chase.Mode.None; } if (Input.GetKeyDown(KeyCode.Q)) { mode = OrXBDAc.chase.Mode.None; } if (Input.GetKeyDown(KeyCode.E)) { mode = OrXBDAc.chase.Mode.None; } if (mode == Mode.None) { //break free! eva.mode = mode; continue; } } #endregion //Animation Logic eva.UpdateAnimations(sqrDist, ref speed); move.Normalize(); //Distance Logic eva.CheckDistance(move, speed, sqrDist); //Reset Animation Mode Events eva.CheckModeIsNone(); } } catch (Exception exp) { OrXchaseDebug.DebugWarning("[OrX Chase] OrXchaseLogic: " + exp.Message + ":" + exp.ToString()); } }
public static void SaveFunction() { OrXchaseDebug.ProfileStart(); SaveFile(); OrXchaseDebug.ProfileEnd("OrXchaseSettings.Save()"); }
/// <summary> /// Load the list /// </summary> private void onFlightReadyCallback() { //Load the eva list. OrXchaseDebug.DebugLog("onFlightReadyCallback()"); OrXchaseSettings.Load(); }
public void OnDestroy() { OrXchaseDebug.DebugWarning("OrXchaseOrderController.OnDestroy()"); }
public void Unload() { OrXchaseDebug.DebugWarning("OrXchaseContainer.Unload(" + eva.name + ")"); loaded = false; }
public void OnDestroy() { OrXchaseDebug.DebugWarning("OrXchaseLogic.OnDestroy()"); }
public static void ProfileEnd(string name) { EndTimer(); OrXchaseDebug.DebugWarning(string.Format("Profile: {0}: {1}mSalt", name, Elapsed)); }
/// <summary> /// Runs when the EVA goes onboard a vessel. /// </summary> /// <param name="e"></param> public void OnCrewBoardVessel(GameEvents.FromToAction <Part, Part> e) { //remove kerbal OrXchaseDebug.DebugLog("OnCrewBoardVessel()"); Unload(e.from.vessel, true); }