private void HandleMenuWindow() { if (_menuWindow == null) { return; } if (!WindowManager.IsOpen(_menuWindow)) { CancelMenu(); return; } if (RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) && (RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel) || FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING)) { _menuWindow.TrackingEnabled = true; } else { _menuWindow.TrackingEnabled = false; } if (RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) && FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING) { _menuWindow.RoutineArrivalEnabled = true; _menuWindow.RoutineDepartureEnabled = true; _menuWindow.RegisterDockingPortsEnabled = true; } else { _menuWindow.RoutineArrivalEnabled = false; _menuWindow.RoutineDepartureEnabled = false; } }
private void setModule() { if (commercialvehiclemode && commercialvehicleOfferingLoaded) { Events["setAutoDepart"].guiActive = true; } else { Events["setAutoDepart"].guiActive = false; } if ((RmmUtil.IsPreLaunch(vessel) && !trackingActive && IsDockingPort()) || (returnMission && !trackingActive)) { Events["tracking"].guiActive = true; } else { Events["tracking"].guiActive = false; } if (PortCode == "" && vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name) && IsDockingPort()) { Events["register"].guiActive = true; } else { Events["register"].guiActive = false; } }
public override void OnFixedUpdate() { if (!HighLogic.LoadedSceneIsFlight) { return; } if (_nextLogicTime == 0 || _nextLogicTime > Planetarium.GetUniversalTime()) { return; } if (vessel.packed || !vessel.loaded) { _nextLogicTime = Planetarium.GetUniversalTime() + 1; return; } if (vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name) && _registrationEnabled) { if (!_registrationAllowed) { _registrationAllowed = true; _refreshedRequired = true; } } else { if (_registrationAllowed) { _registrationAllowed = false; _refreshedRequired = true; } } if (vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name) && _trackingEnabled) { if (!_trackingAllowed) { _trackingAllowed = true; _refreshedRequired = true; } } else { if (_trackingAllowed) { _trackingAllowed = false; _refreshedRequired = true; } } if (_refreshedRequired) { RefreshModule(); } _nextLogicTime = Planetarium.GetUniversalTime() + 10; }
void onToggleOn() { Menu(); // Add docking port modules if (RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) && FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING) { RmmDockingPortModule.AddToVessel(FlightGlobals.ActiveVessel); } }
public void RegisterDockingPortsOption() { if (!RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name)) { return; } if (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING) { EnableDockingPortRegistration(); } }
public void RoutineDepartureOption() { if (!RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name)) { return; } if (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING) { _routineControl.RoutineDepartureOverview(_menuWindow); } }
private bool ToolBarButtonVisible() { if (RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel) || (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) && RmmUtil.HasDockingPorts(FlightGlobals.ActiveVessel)) || RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel)) { return(true); } return(false); }
public void StartTrackingOption() { if (!RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name)) { return; } if (!RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel) && RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel)) { _trackingControl.CreateLaunchTracking(FlightGlobals.ActiveVessel); } if (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING) { EnableDepartureTracking(); } }
private static bool handleContractsForCrew(Vessel vessel, bool arrive, bool depart, ProtoCrewMember crew) { //print("handling crew"); foreach (Contract con in Contracts.ContractSystem.Instance.Contracts) { if (con.ContractState == Contract.State.Active) { if (ReferenceEquals(con.GetType(), typeof(FinePrint.Contracts.TourismContract))) { for (int i = 0; i < con.ParameterCount; i++) { ContractParameter conpara1 = con.GetParameter(i); if (ReferenceEquals(conpara1.GetType(), typeof(FinePrint.Contracts.Parameters.KerbalTourParameter)) && conpara1.State != Contracts.ParameterState.Complete) { FinePrint.Contracts.Parameters.KerbalTourParameter ktp = (FinePrint.Contracts.Parameters.KerbalTourParameter)conpara1; if (crew.name == ktp.kerbalName) { // complete destinations parameters on arrive for kerbals on vessel if (arrive) { for (int u = 0; u < conpara1.ParameterCount; u++) { ContractParameter conpara2 = conpara1.GetParameter(u); if (ReferenceEquals(conpara2.GetType(), typeof(FinePrint.Contracts.Parameters.KerbalDestinationParameter)) && conpara2.State != Contracts.ParameterState.Complete) { FinePrint.Contracts.Parameters.KerbalDestinationParameter kds = (FinePrint.Contracts.Parameters.KerbalDestinationParameter)conpara2; if (RmmUtil.AllowedBody(vessel.mainBody.name)) { if (RmmUtil.HomeBody(kds.targetBody.name) && (kds.targetType == FlightLog.EntryType.Orbit || kds.targetType == FlightLog.EntryType.Suborbit)) { //print("complete1"); CompleteContractParameter(kds); return(false); } } if (RmmUtil.AllowedBody(vessel.mainBody.name) && !RmmUtil.HomeBody(vessel.mainBody.name)) { if (kds.targetBody.name == vessel.mainBody.name && (kds.targetType == FlightLog.EntryType.Orbit || kds.targetType == FlightLog.EntryType.Flyby)) { //print("complete2"); CompleteContractParameter(kds); return(false); } } } } } // complete kerbaltour parameters on depart which have all their destinations completed if (depart) { if (conpara1.State != Contracts.ParameterState.Complete) { bool allDestinationsSucceeded = true; for (int u = 0; u < conpara1.ParameterCount; u++) { ContractParameter conpara2 = conpara1.GetParameter(u); if (conpara2.State != Contracts.ParameterState.Complete) { allDestinationsSucceeded = false; } } if (depart && allDestinationsSucceeded) { //print("complete3"); CompleteContractParameter(ktp); HighLogic.CurrentGame.CrewRoster.Remove(crew); return(false); } } } } } } } } } return(true); }
public void handleTrackingPrimary() { switch (trackingStatus) { case "Launch": if (vessel.situation == Vessel.Situations.FLYING || vessel.situation == Vessel.Situations.SUB_ORBITAL || vessel.situation == Vessel.Situations.ORBITING) { trackLaunch(); } break; case "Departure": foreach (Part p in vessel.parts) { if (p.flightID == trackPort && !RmmUtil.IsDocked(vessel, p)) { trackDeparture(); } } break; case "Underway": updatePartCount(); updateCrewCount(); updateMaxCrewCount(); // check for arrival if (_mission.Info.Type == 10) { if (vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name)) { foreach (Part p in vessel.parts) { ModuleDockingNode dockingModule = p.Modules.OfType <ModuleDockingNode>().FirstOrDefault(); if (dockingModule != null) { Part dockedPart = RmmUtil.GetDockedPart(vessel, p); if (dockedPart != null && !Mission.PartIsMissionPart(dockedPart, _mission.Launch.Parts)) { trackArrival(p); return; } } } } } // make snapshot of vessel if (_mission.Info.Type == 10) { if (vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name)) { // don't make snapshot when the vessel is in the process of docking. It leaves the docking port in the wrong state. bool isAnyPartDocking = false; foreach (Part p in vessel.parts) { ModuleDockingNode dockingModule = p.Modules.OfType <ModuleDockingNode>().FirstOrDefault(); if (dockingModule != null && RmmUtil.IsDocking(p)) { isAnyPartDocking = true; } } if (!isAnyPartDocking) { TakeVesselSnapShot(); } } } // check for landing if (_mission.Info.Type == 10 || _mission.Info.Type == 20) { if ((vessel.situation == Vessel.Situations.LANDED || vessel.situation == Vessel.Situations.SPLASHED) && RmmUtil.HomeBody(vessel.mainBody.name)) { if (landedTime == 0.0) { landedTime = Planetarium.GetUniversalTime(); landedLatitude = vessel.latitude; landedLongitude = vessel.longitude; landedTimeMessage = 0; } } if (landedTime > 0.0) { // Check still landed if (!(vessel.situation == Vessel.Situations.LANDED || vessel.situation == Vessel.Situations.SPLASHED) || !RmmUtil.HomeBody(vessel.mainBody.name)) { landedTime = 0.0; landedLatitude = 0.0; landedLongitude = 0.0; landedTimeMessage = 0; } // Check not moved else if (RmmUtil.GetDistanceBetweenPoints(landedLatitude, landedLongitude, vessel.latitude, vessel.longitude, vessel.mainBody.Radius) > 2) { landedTime = 0.0; landedLatitude = 0.0; landedLongitude = 0.0; landedTimeMessage = 0; } // Countdown else if (Planetarium.GetUniversalTime() - landedTime > 0.0 && Planetarium.GetUniversalTime() - landedTime < 10) { if (Planetarium.GetUniversalTime() - landedTime > landedTimeMessage + 1.0) { landedTimeMessage = landedTimeMessage + 1; ScreenMessages.PostScreenMessage("landing confirmation " + (10 - landedTimeMessage).ToString() + " seconds", 1, ScreenMessageStyle.UPPER_CENTER); } } // Landed else if (Planetarium.GetUniversalTime() - landedTime > 10) { TrackLanding(); return; } } } if (RmmUtil.CountVesselParts(vessel) > trackPartCount) { trackAbort("vessel has joined with non mission vessel"); } if (RmmUtil.AstronautCrewCount(vessel) > trackCrew) { trackAbort("crew has been added to vessel"); } updateTrackingVars(vessel); break; } }