private static void PostfixSetVessel(SpaceTracking __instance) { if (MainSystem.NetworkState < ClientState.Connected) { return; } if (__instance.SelectedVessel != null) { if (!LockSystem.LockQuery.CanRecoverOrTerminateTheVessel(__instance.SelectedVessel.id, SettingsSystem.CurrentSettings.PlayerName)) { if (__instance.SelectedVessel.situation == Vessel.Situations.PRELAUNCH) { __instance.FlyButton.Lock(); } else { __instance.FlyButton.Unlock(); } __instance.DeleteButton.Lock(); __instance.RecoverButton.Lock(); } else { __instance.FlyButton.Unlock(); __instance.DeleteButton.Unlock(); __instance.RecoverButton.Unlock(); } } }
private IEnumerator WaitForTrackingList() { //WaitForSeconds wait = new WaitForSeconds(0.1f); SpaceTracking _TrackingStation = null; while (_TrackingStation == null) { _TrackingStation = GameObject.FindObjectOfType <SpaceTracking>(); if (_TrackingStation == null) { yield return(null); } } processSprites(_TrackingStation); if (loadedPrefabs != null) { processUIPrefabs(); } if (UILoaded) { loaded = true; } Tracking_Utils.TrackingLog("UI Loaded"); Destroy(gameObject); }
public void OnClick() { //figure out if mod+clicked _includeCrew = GameSettings.MODIFIER_KEY.GetKey(); //includeCrew = false; bool ctrlHeld = Input.GetKey(KeyCode.LeftControl); if (Input.GetKey(KeyCode.LeftShift)) { OpenConvertWindow(); //convert ships to craft files _theButton.SetFalse(); return; } //get the selected craft SpaceTracking trackingStation = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); Vessel selectedVessel = trackingStation.SelectedVessel; if (ctrlHeld || _includeCrew) //ctrl or modifier held { OpenImportWindow(); } else if (selectedVessel != null) { ExportSelectedCraft(selectedVessel); } _theButton.SetFalse(false); }
private void Start() { const float WINDOW_VERTICAL_POSITION = 36; this.spaceTrackingScene = (SpaceTracking)UnityEngine.Object.FindObjectOfType(typeof(SpaceTracking)); this.sideBarRect = GetSideBarRect(); this.windowPos = new Rect(this.sideBarRect.xMax, WINDOW_VERTICAL_POSITION, 10, 10); this.windowStyle = new GUIStyle(HighLogic.Skin.window) { margin = new RectOffset(), padding = new RectOffset(5, 5, 5, 5) }; GameEvents.onGameSceneSwitchRequested.Add(this.onGameSceneSwitchRequested); GameEvents.onVesselDestroy.Add(this.onVesselDestroy); GameEvents.onVesselCreate.Add(this.onVesselCreate); ManeuverQueue.filterModeLabels = Enum.GetValues(typeof(FilterMode)).Cast <FilterMode>().Select(x => ManeuverQueue.LabelForFilterMode(x)).ToArray(); this.currentMode = FilterMode.Default; this.render = true; }
private IEnumerator WaitForTrackingStation() { while (_TrackingStation == null) { var tracking = FindObjectsOfType <SpaceTracking>(); if (tracking != null) { for (int i = 0; i < tracking.Length; i++) { SpaceTracking space = tracking[i]; if (space == null) { continue; } _TrackingStation = space; } } if (_TrackingStation == null) { yield return(null); } } _ListParent = _TrackingStation.listContainer.parent; FindScrollRect(); StartCoroutine(WaitForCamera()); AdjustUITransforms(); StartCoroutine(AttachSortHeader()); _VesselToggleGroup = Instantiate(_TrackingStation.listToggleGroup); _OldTrackingList = _TrackingStation.listContainer.gameObject; _NewTrackingList = Instantiate(_OldTrackingList); _ReorderableList = _OldTrackingList.transform.parent.gameObject.AddComponent <ReorderableList>(); _ReorderableList.Init(_NewTrackingList.GetComponent <LayoutGroup>(), _NewTrackingList.GetComponent <RectTransform>()); _ReorderableList.SortType = (int)_CurrentMode; _NewTrackingList.transform.SetParent(_ListParent, false); _TrackingStation.listContainer.SetParent(null, false); _TrackingStation.tglTrackedObjects.onValueChanged.AddListener(new UnityAction <bool>(OnVesselListToggle)); _OrderedBodyList = OrderBodies(); _OrderedTypeList = OrderTypes(); Tracking_Utils.TrackingLog("Tracking Station Processed"); }
internal static void SetCurrentFlightStates() { if (HighLogic.CurrentGame != null) { KACWorkerGameState.CurrentSaveGameName = HighLogic.CurrentGame.Title; } else { KACWorkerGameState.CurrentSaveGameName = ""; } try { KACWorkerGameState.CurrentTime.UT = Planetarium.GetUniversalTime(); } catch (Exception) { } //if (Planetarium.fetch!=null)KACWorkerGameState.CurrentTime.UT = Planetarium.GetUniversalTime(); try { if (KACWorkerGameState.CurrentGUIScene == GameScenes.FLIGHT && FlightGlobals.ActiveVessel != null) { KACWorkerGameState.CurrentVessel = FlightGlobals.ActiveVessel; KACWorkerGameState.CurrentSOIBody = CurrentVessel.mainBody; KACWorkerGameState.CurrentVesselTarget = CurrentVessel.targetObject; } else if (KACWorkerGameState.CurrentGUIScene == GameScenes.TRACKSTATION) { SpaceTracking st = (SpaceTracking)KACSpaceCenter.FindObjectOfType(typeof(SpaceTracking)); PlanetariumCamera c = PlanetariumCamera.fetch; if (c.target != null && c.target.type == MapObject.ObjectType.Vessel) { KACWorkerGameState.CurrentVessel = c.target.vessel; KACWorkerGameState.CurrentSOIBody = CurrentVessel.mainBody; KACWorkerGameState.CurrentVesselTarget = CurrentVessel.targetObject; } else { KACWorkerGameState.CurrentVessel = null; KACWorkerGameState.CurrentSOIBody = null; KACWorkerGameState.CurrentVesselTarget = null; } } //else if (KACWorkerGameState.CurrentGUIScene == GameScenes.TRACKSTATION && // MapView.MapCamera.target.type == MapObject.MapObjectType.VESSEL) //{ // KACWorkerGameState.CurrentVessel = MapView.MapCamera.target.vessel; // KACWorkerGameState.CurrentSOIBody = CurrentVessel.mainBody; // KACWorkerGameState.CurrentVesselTarget = CurrentVessel.targetObject; //} else { KACWorkerGameState.CurrentVessel = null; KACWorkerGameState.CurrentSOIBody = null; KACWorkerGameState.CurrentVesselTarget = null; } } catch (Exception) { } }
internal static void RequestCameraFocus(Vessel vessel) { SpaceTracking spaceTracking = (SpaceTracking)Object.FindObjectOfType(typeof(SpaceTracking)); MethodInfo method = spaceTracking.GetType() .GetMethod("RequestVessel", BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(spaceTracking, new object[] { vessel }); }
internal static void TrackingSwitchToVessel(Vessel vessel) { SpaceTracking spaceTracking = (SpaceTracking)Object.FindObjectOfType(typeof(SpaceTracking)); MethodInfo method = spaceTracking.GetType() .GetMethod("FlyVessel", BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(spaceTracking, new object[] { vessel }); }
public void NewRecoveryFunctionTrackingStation() { selectedVessel = null; SpaceTracking trackingStation = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); selectedVessel = trackingStation.SelectedVessel; if (selectedVessel == null) { Debug.Log("[KCT] Error! No Vessel selected."); return; } bool sph = (selectedVessel.IsRecoverable && selectedVessel.IsClearToSave() == ClearToSaveStatus.CLEAR); string reqTech = KCT_PresetManager.Instance.ActivePreset.generalSettings.VABRecoveryTech; bool vab = selectedVessel.IsRecoverable && selectedVessel.IsClearToSave() == ClearToSaveStatus.CLEAR && (selectedVessel.situation == Vessel.Situations.PRELAUNCH || string.IsNullOrEmpty(reqTech) || ResearchAndDevelopment.GetTechnologyState(reqTech) == RDTech.State.Available); int cnt = 2; if (sph) { cnt++; } if (vab) { cnt++; } DialogGUIBase[] options = new DialogGUIBase[cnt]; cnt = 0; if (sph) { options[cnt++] = new DialogGUIButton("Recover to SPH", RecoverToSPH); } if (vab) { options[cnt++] = new DialogGUIButton("Recover to VAB", RecoverToVAB); } options[cnt++] = new DialogGUIButton("Normal recovery", DoNormalRecovery); options[cnt] = new DialogGUIButton("Cancel", Cancel); MultiOptionDialog diag = new MultiOptionDialog("scrapVesselPopup", "Do you want KCT to do the recovery?", "Recover Vessel", null, options: options); PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), diag, false, HighLogic.UISkin); }
private static void SetVesselActiveInTS(Vessel vTarget) { if (KACWorkerGameState.CurrentGUIScene == GameScenes.TRACKSTATION) { try { SpaceTracking st = (SpaceTracking)KACSpaceCenter.FindObjectOfType(typeof(SpaceTracking)); st.SetVessel(vTarget, true); } catch (Exception ex) { LogFormatted("Unable to set vessel as active in Tracking station:\r\n{0}", ex.Message); } } }
private void NewRecoveryFunctionTrackingStation() { Vessel selectedVessel = null; SpaceTracking trackingStation = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); selectedVessel = trackingStation.SelectedVessel; if (selectedVessel == null) { Debug.Log("!!Error! No Vessel selected."); return; } NewRecoveryFunction(selectedVessel); }
//Called once when the scene starts new public void Start() { base.Start(); //Call Start() in the parent class //Get the MonoBehaviour that controls the buttons at the top of the screen SpaceTracking trackingStation = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); if (trackingStation != null) { //back up the original function. We'll call that when we're within range originalCallback = trackingStation.RecoverButton.onClick; //Override the original function with ours, which checks the distance. trackingStation.RecoverButton.onClick = new Button.ButtonClickedEvent(); trackingStation.RecoverButton.onClick.AddListener(NewRecoveryFunctionTrackingStation); } }
public void ConvertToKomet(Vessel asteroid) { //Set name asteroid.vesselName = "Kmt. " + ModuleKomet.CreateKometName(Planetarium.GetUniversalTime()); if (asteroid.rootPart != null) { asteroid.rootPart.initialVesselName = asteroid.vesselName; } Log("New komet " + asteroid.vesselName + " discovered!"); //Generate a random orbit for the komet. Orbit orbit = Orbit.CreateRandomOrbitAround(Planetarium.fetch.Sun, kometMinAltitude, kometMaxAltitude); //Komets have eccentric orbits, let's randomize the eccentricity and such. orbit.eccentricity = UnityEngine.Random.Range(eccentricityMin, eccentricityMax); //Initial komets are easier to reach.. if (!KerbalKometScenario.Instance.GetStartingKometsFlag()) { orbit.inclination = UnityEngine.Random.Range(0, 90f); orbit.LAN = UnityEngine.Random.Range(0, 360f); orbit.argumentOfPeriapsis = UnityEngine.Random.Range(0, 360f); } double orbitTime = UnityEngine.Random.Range(0, (float)orbit.GetTimeToPeriapsis()); //Set the orbit asteroid.orbit.SetOrbit(orbit.inclination, orbit.eccentricity, orbit.semiMajorAxis, orbit.LAN, orbit.argumentOfPeriapsis, orbit.meanAnomalyAtEpoch, orbitTime, Planetarium.fetch.Sun); //Hack: Astroids appear to spawn unloaded, and they don't appear to have any part modules when they first show up. To get around this, register the komet in the komet registry. //When the asteroid comes into physics range, we'll flip it to a komet. if (KerbalKometScenario.Instance.IsKometRegistered(asteroid.vesselName) == false) { KerbalKometScenario.Instance.RegisterKomet(asteroid.vesselName); } //Send out a press release if (KerbalKometSettings.SendPressRelease) { sendPressRelease(asteroid); } //Automatically track the new komet. if (KerbalKometSettings.AutoTrackKomets) { SpaceTracking.StartTrackingObject(asteroid); } }
protected void Start() { const float WINDOW_VERTICAL_POSITION = 36; this.pluginConfiguration.load(); if (MapViewFiltering.vesselTypeFilter != MapViewFiltering.VesselTypeFilter.All) { ManeuverQueue.savedFilterState = MapViewFiltering.vesselTypeFilter; } else { ManeuverQueue.savedFilterState = (MapViewFiltering.VesselTypeFilter) this.pluginConfiguration.GetValue(ManeuverQueue.configurationFiltersKey, (int)MapViewFiltering.VesselTypeFilter.All); } this.pluginConfiguration.SetValue(ManeuverQueue.configurationFiltersKey, (int)MapViewFiltering.VesselTypeFilter.All); this.pluginConfiguration.save(); this.spaceTrackingScene = (SpaceTracking)UnityEngine.Object.FindObjectOfType(typeof(SpaceTracking)); this.sideBarRect = GetSideBarRect(); this.windowPos = new Rect(this.sideBarRect.xMax, WINDOW_VERTICAL_POSITION, 10, 10); this.windowStyle = new GUIStyle(HighLogic.Skin.window) { margin = new RectOffset(), padding = new RectOffset(5, 5, 5, 5) }; GameEvents.onGameSceneSwitchRequested.Add(this.onGameSceneSwitchRequested); GameEvents.onVesselDestroy.Add(this.onVesselDestroy); GameEvents.onVesselCreate.Add(this.onVesselCreate); GameEvents.onKnowledgeChanged.Add(this.onKnowledgeChanged); GameEvents.OnMapViewFiltersModified.Add(this.onMapViewFiltersModified); ManeuverQueue.filterModeLabels = Enum.GetValues(typeof(FilterMode)).Cast <FilterMode>().Where( x => x != FilterMode.Undefined).Select( x => ManeuverQueue.LabelForFilterMode(x)).ToArray(); this.currentMode = (FilterMode)this.pluginConfiguration.GetValue(ManeuverQueue.configurationModeKey, (int)FilterMode.Default); this.render = true; }
private static bool PrefixFlyVessel(SpaceTracking __instance) { if (MainSystem.NetworkState < ClientState.Connected) { return(true); } var vessel = __instance.SelectedVessel; if (vessel != null && vessel.situation == Vessel.Situations.PRELAUNCH) { if (!LockSystem.LockQuery.CanRecoverOrTerminateTheVessel(vessel.id, SettingsSystem.CurrentSettings.PlayerName)) { return(false); } } return(true); }
public new void Start() { base.Start(); if (KCT_GUI.PrimarilyDisabled) { return; } KCTDebug.Log("KCT_Flight, Start"); SpaceTracking trackingStation = UnityEngine.Object.FindObjectOfType <SpaceTracking>(); if (trackingStation != null) { originalCallback = trackingStation.RecoverButton.onClick; flyCallback = trackingStation.FlyButton.onClick; trackingStation.RecoverButton.onClick = new Button.ButtonClickedEvent(); trackingStation.RecoverButton.onClick.AddListener(NewRecoveryFunctionTrackingStation); } }
static Vessel CurrentVessel() { if (HighLogic.LoadedScene == GameScenes.FLIGHT && FlightGlobals.ActiveVessel != null) { return(FlightGlobals.ActiveVessel); } else if (HighLogic.LoadedScene == GameScenes.TRACKSTATION) { SpaceTracking st = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); if (st.mainCamera.target != null && st.mainCamera.target.type == MapObject.MapObjectType.VESSEL) { return(st.mainCamera.target.vessel); } else { return(null); } } return(null); }
public void OnClick() { //figure out if mod+clicked //includeCrew = GameSettings.MODIFIER_KEY.GetKey(); //TODO: Reenable when fixed includeCrew = false; bool ctrlHeld = Input.GetKey(KeyCode.LeftControl); if (Input.GetKey(KeyCode.LeftShift)) { OpenConvertWindow(); //convert ships to craft files theButton.SetFalse(); return; } //get the selected craft SpaceTracking trackingStation = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); Vessel selectedVessel = trackingStation.SelectedVessel; //1.2 made this non-private //foreach (FieldInfo f in trackingStation.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) //{ // if (f.FieldType == typeof(Vessel)) // { // //FYI: the first one (0) is the currently selected vessel // //The second one (1) is the one that the mouse is hovering over // selectedVessel = f.GetValue(trackingStation) as Vessel; // break; // } //} if (ctrlHeld || includeCrew) //ctrl or modifier held { OpenImportWindow(); } else if (selectedVessel != null) { ExportSelectedCraft(selectedVessel); } theButton.SetFalse(false); }
private static void SetVesselActiveInTS(Vessel vTarget) { if (KACWorkerGameState.CurrentGUIScene == GameScenes.TRACKSTATION) { try { SpaceTracking st = (SpaceTracking)KACSpaceCenter.FindObjectOfType(typeof(SpaceTracking)); //st.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).ToList().ForEach( // mi=>LogFormatted("Method-{0}-{1}",mi.Name,mi.IsPrivate)); MethodInfo setvesselMethod = st.GetType().GetMethod("SetVessel", BindingFlags.NonPublic | BindingFlags.Instance); setvesselMethod.Invoke(st, new object[] { vTarget, true }); } catch (Exception ex) { LogFormatted("Unable to set vessel as active in Tracking station:\r\n{0}", ex.Message); } } }
private static void PostfixSetVessel(SpaceTracking __instance) { if (MainSystem.NetworkState < ClientState.Connected) { return; } if (__instance.SelectedVessel != null) { if (!LockSystem.LockQuery.CanRecoverOrTerminateTheVessel(__instance.SelectedVessel.id, SettingsSystem.CurrentSettings.PlayerName)) { if (__instance.SelectedVessel.situation == Vessel.Situations.PRELAUNCH) { __instance.FlyButton.Lock(); } else { __instance.FlyButton.Unlock(); } __instance.DeleteButton.Lock(); __instance.RecoverButton.Lock(); } //Check if vessel is landed or splashed on kerbin. Otherwise lock the recover button. else if (__instance.SelectedVessel.LandedOrSplashed == false || __instance.SelectedVessel.mainBody.bodyName.ToLower() != "kerbin") { __instance.FlyButton.Unlock(); __instance.DeleteButton.Unlock(); __instance.RecoverButton.Lock(); } else { __instance.FlyButton.Unlock(); __instance.DeleteButton.Unlock(); __instance.RecoverButton.Unlock(); } } }
private void processSprites(SpaceTracking tracking) { var prefab = tracking.listItemPrefab; if (prefab == null) { return; } prefab.gameObject.AddOrGetComponent <Tracking_WidgetListener>(); _iconPrefab = prefab.iconSprite; Selectable toggle = prefab.toggle.GetComponent <Selectable>(); if (toggle == null) { return; } _normalSprite = toggle.image.sprite; _hoverSprite = toggle.spriteState.highlightedSprite; _activeSprite = toggle.spriteState.pressedSprite; _inactiveSprite = toggle.spriteState.disabledSprite; var images = prefab.GetComponentsInChildren <Image>(); if (images == null || images.Length < 2) { return; } _backgroundSprite = images[images.Length - 2].sprite; _checkmarkSprite = ((Image)prefab.toggle.graphic).sprite; }
new public void Start() { base.Start(); st = (SpaceTracking)FindObjectOfType(typeof(SpaceTracking)); }