예제 #1
0
 /// <inheritdoc/>
 public void UpdateContextMenu()
 {
     PartModuleUtils.SetupEvent(
         this, PickupConnectorEvent,
         x => x.guiActive = FlightGlobals.fetch != null && FlightGlobals.ActiveVessel == vessel &&
                            !isLinked && closestConnector != null);
 }
예제 #2
0
        /// <inheritdoc/>
        public override void UpdateContextMenu()
        {
            base.UpdateContextMenu();

            connectorStateMenuInfo = ConnectorStatesMsgLookup.Lookup(connectorState);
            PartModuleUtils.SetupEvent(this, ToggleVesselsDockModeEvent, e => {
                e.active &= !isConnectorLocked && linkState != LinkState.NodeIsBlocked;
            });
            PartModuleUtils.SetupEvent(this, GrabConnectorEvent, e => {
                e.active = connectorState == ConnectorState.Locked && linkState != LinkState.NodeIsBlocked;
                if (_grabConnectorEventInject != null)
                {
                    _grabConnectorEventInject.guiName = e.guiName;
                }
            });
            PartModuleUtils.SetupEvent(this, ReturnConnectorEvent, e => {
                e.active = IsActiveEvaHoldingConnector();
            });
            PartModuleUtils.SetupEvent(this, DetachConnectorEvent, e => {
                e.active = isLinked;
            });
            PartModuleUtils.SetupEvent(this, InstantLockConnectorEvent, e => {
                e.active = connectorState == ConnectorState.Deployed;
            });
            if (_grabConnectorEventInject != null)
            {
                _grabConnectorEventInject.active = linkTarget != null &&
                                                   connectorState == ConnectorState.Plugged &&
                                                   FlightGlobals.ActiveVessel != linkTarget.part.vessel;
            }
        }
예제 #3
0
 /// <inheritdoc/>
 public virtual void UpdateContextMenu()
 {
     PartModuleUtils.SetupEvent(this, ToggleVesselsDockModeEvent, e => {
         if (linkJoint != null)
         {
             e.guiName = linkJoint.coupleOnLinkMode ? DockedModeMenuTxt : UndockedModeMenuTxt;
             if (coupleMode == CoupleMode.SetViaGUI)
             {
                 e.active = coupleNode != null && (linkTarget == null || linkTarget.coupleNode != null);
             }
             else if (isLinked)
             {
                 // Just in case show GUI if the link is established, and its couple mode contradicts the
                 // joint setting. GUI will allow fixing it manually.
                 e.active = coupleMode == CoupleMode.NeverCouple && linkJoint.coupleOnLinkMode ||
                            coupleMode == CoupleMode.AlwaysCoupled && !linkJoint.coupleOnLinkMode;
             }
             else
             {
                 e.active = false;
             }
         }
         else
         {
             e.active = false;
         }
     });
 }
예제 #4
0
 public void UpdateContextMenu()
 {
     PartModuleUtils.SetupEvent(
         this, TogglePlayStateEvent,
         x => x.guiName =
             sndMainTune == null || !sndMainTune.isPlaying ? PlayMenuTxt : StopMenuTxt);
 }
예제 #5
0
        /// <inheritdoc/>
        public override void UpdateContextMenu()
        {
            base.UpdateContextMenu();
            deployedCableLengthMenuInfo = DistanceType.Format(
                cableJoint != null ? cableJoint.deployedCableLength : 0);

            PartModuleUtils.SetupEvent(this, ToggleExtendCableEvent, e => {
                e.active  = linkState != LinkState.NodeIsBlocked;
                e.guiName = motorTargetSpeed > float.Epsilon
          ? StopExtendingMenuTxt
          : ExtendCableMenuTxt;
            });
            PartModuleUtils.SetupEvent(this, ToggleRetractCableEvent, e => {
                e.active  = linkState != LinkState.NodeIsBlocked;
                e.guiName = motorTargetSpeed < -float.Epsilon
          ? StopRetractingMenuTxt
          : RetractCableMenuTxt;
            });
            PartModuleUtils.SetupEvent(this, InstantStretchEvent, e => {
                e.active = !isConnectorLocked && linkState != LinkState.NodeIsBlocked;
            });
            PartModuleUtils.SetupEvent(this, ReleaseCableEvent, e => {
                e.active = linkState != LinkState.NodeIsBlocked;
            });
        }
예제 #6
0
        /// <inheritdoc/>
        public override void UpdateContextMenu()
        {
            base.UpdateContextMenu();

            PartModuleUtils.SetupEvent(this, OpenGUIEvent, e => {
                e.active = linkTarget != null && linkTarget.part != null && !linkTarget.part.vessel.isEVA;
            });
        }
예제 #7
0
 public void ActivateEvent()
 {
     if (!activated)
     {
         activated = true;
         sndTimeStart.Play();
         sndTimeLoop.Play();
         PartModuleUtils.SetupEvent(this, ActivateEvent, x => x.active = false);
         PartModuleUtils.SetupEvent(this, SetupEvent, x => x.active    = false);
         ScreenMessaging.ShowPriorityScreenMessage(TimeToEscapeMsg.Format((int)delay));
     }
 }
예제 #8
0
 /// <inheritdoc/>
 public override void UpdateContextMenu()
 {
     base.UpdateContextMenu();
     PartModuleUtils.SetupEvent(this, StartLinkContextMenuAction, e => {
         e.guiName = startLinkMenu;
         e.active  = linkState == LinkState.Available;
     });
     PartModuleUtils.SetupEvent(this, BreakLinkContextMenuAction, e => {
         e.guiName = breakLinkMenu;
         e.active  = linkState == LinkState.Linked;
     });
 }
예제 #9
0
파일: KASLinkWinch.cs 프로젝트: dh9ts/KAS
        /// <inheritdoc/>
        public override void UpdateContextMenu()
        {
            base.UpdateContextMenu();
            deployedCableLengthMenuInfo = DistanceType.Format(
                cableJoint != null ? cableJoint.deployedCableLength : 0);

            PartModuleUtils.SetupEvent(this, ToggleExtendCableEvent, e => {
                e.guiName = motorTargetSpeed > float.Epsilon
          ? StopExtendingMenuTxt
          : ExtendCableMenuTxt;
            });
            PartModuleUtils.SetupEvent(this, ToggleRetractCableEvent, e => {
                e.guiName = motorTargetSpeed < -float.Epsilon
          ? StopRetractingMenuTxt
          : RetractCableMenuTxt;
            });
        }
예제 #10
0
 /// <inheritdoc/>
 public virtual void UpdateContextMenu()
 {
     PartModuleUtils.SetupEvent(this, ToggleVesselsDockModeEvent, e => {
         if (linkJoint != null)
         {
             if (linkJoint.coupleOnLinkMode)
             {
                 e.active  = true;
                 e.guiName = DockedModeMenuTxt;
             }
             else
             {
                 e.active = showCouplingUi && allowCoupling &&
                            (linkTarget == null || linkTarget.coupleNode != null);
                 e.guiName = UndockedModeMenuTxt;
             }
         }
         else
         {
             e.active = false;
         }
     });
 }
예제 #11
0
        /// <inheritdoc/>
        public void UpdateContextMenu()
        {
            Fields["lockStatus"].guiActive          = isLinked;
            Fields["steeringStatus"].guiActive      = isLinked;
            Fields["steeringInvert"].guiActive      = isLinked && persistedActiveSteeringEnabled;
            Fields["steeringSensitivity"].guiActive = isLinked && persistedActiveSteeringEnabled;

            PartModuleUtils.SetupEvent(
                this, StartLockLockingAction,
                e => e.active = isLinked && persistedLockingMode == LockMode.Disabled);
            PartModuleUtils.SetupEvent(
                this, UnlockAction,
                e => e.active = isLinked && persistedLockingMode != LockMode.Disabled);
            PartModuleUtils.SetupEvent(
                this, DeactivateSteeringAction,
                e => e.active = isLinked && persistedActiveSteeringEnabled);
            PartModuleUtils.SetupEvent(
                this, ActiveSteeringAction,
                e => e.active = isLinked && !persistedActiveSteeringEnabled);

            lockStatus     = LockStatusMsgLookup.Lookup(persistedLockingMode);
            steeringStatus = SteeringStatusMsgLookup.Lookup(
                persistedActiveSteeringEnabled ? SteeringStatus.Active : SteeringStatus.Disabled);
        }
예제 #12
0
 /// <inheritdoc/>
 public void UpdateContextMenu()
 {
     // FIXME: Consider the mounted state.
     PartModuleUtils.SetupEvent(this, ReleaseEvent, x => x.active        = allowRelease);
     PartModuleUtils.SetupAction(this, ActionGroupRelease, x => x.active = allowRelease);
 }
예제 #13
0
 void SetupEvents()
 {
     // This call will activate the event.
     PartModuleUtils.SetupEvent(this, TestEvent, x => x.active = true);
 }
예제 #14
0
 /// <inheritdoc/>
 public void UpdateContextMenu()
 {
     _injectedOrientationEvents.ForEach(e => e.active = !isLinked);
     PartModuleUtils.SetupEvent(this, ExtendAtMaxMenuAction, x => x.active  = !isLinked);
     PartModuleUtils.SetupEvent(this, RetractToMinMenuAction, x => x.active = !isLinked);
 }