protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyLandingGear>()) { return; } base.CreateTerminalControls(); var stateWriter = new MyTerminalControl <MyLandingGear> .WriterDelegate((b, sb) => b.WriteLockStateValue(sb)); var lockBtn = new MyTerminalControlButton <MyLandingGear>("Lock", MySpaceTexts.BlockActionTitle_Lock, MySpaceTexts.Blank, (b) => b.RequestLandingGearLock()); lockBtn.Enabled = (b) => b.IsWorking; lockBtn.EnableAction(MyTerminalActionIcons.TOGGLE, (MyStringId?)null, stateWriter); MyTerminalControlFactory.AddControl(lockBtn); var unlockBtn = new MyTerminalControlButton <MyLandingGear>("Unlock", MySpaceTexts.BlockActionTitle_Unlock, MySpaceTexts.Blank, (b) => b.RequestLandingGearUnlock()); unlockBtn.Enabled = (b) => b.IsWorking; unlockBtn.EnableAction(MyTerminalActionIcons.TOGGLE, (MyStringId?)null, stateWriter); MyTerminalControlFactory.AddControl(unlockBtn); var title = MyTexts.Get(MySpaceTexts.BlockActionTitle_SwitchLock); MyTerminalAction <MyLandingGear> switchLockAction = new MyTerminalAction <MyLandingGear>("SwitchLock", title, MyTerminalActionIcons.TOGGLE); switchLockAction.Action = (b) => b.RequestLandingGearSwitch(); switchLockAction.Writer = stateWriter; MyTerminalControlFactory.AddAction(switchLockAction); var autoLock = new MyTerminalControlCheckbox <MyLandingGear>("Autolock", MySpaceTexts.BlockPropertyTitle_LandGearAutoLock, MySpaceTexts.Blank); autoLock.Getter = (b) => b.m_autoLock; autoLock.Setter = (b, v) => b.m_autoLock.Value = v; autoLock.EnableAction(); MyTerminalControlFactory.AddControl(autoLock); if (MyFakes.LANDING_GEAR_BREAKABLE) { var brakeForce = new MyTerminalControlSlider <MyLandingGear>("BreakForce", MySpaceTexts.BlockPropertyTitle_BreakForce, MySpaceTexts.BlockPropertyDescription_BreakForce); brakeForce.Getter = (x) => x.BreakForce; brakeForce.Setter = (x, v) => x.m_breakForceSync.Value = v; brakeForce.DefaultValue = 1; brakeForce.Writer = (x, result) => { if (x.BreakForce >= MyObjectBuilder_LandingGear.MaxSolverImpulse) { result.AppendStringBuilder(MyTexts.Get(MySpaceTexts.BlockPropertyValue_MotorAngleUnlimited)); } else { MyValueFormatter.AppendForceInBestUnit(x.BreakForce, result); } }; brakeForce.Normalizer = (b, v) => ThresholdToRatio(v); brakeForce.Denormalizer = (b, v) => RatioToThreshold(v); brakeForce.EnableActions(); MyTerminalControlFactory.AddControl(brakeForce); } }
private static void AddControl(MyTerminalControl <MyShipController> control, bool visible = true) { control.Enabled = ShipAutopilot.IsAutopilotBlock; if (visible) { control.Visible = ShipAutopilot.IsAutopilotBlock; } else { control.Visible = False; } MyTerminalControlFactory.AddControl <MyShipController, MyCockpit>(control); if (ServerSettings.GetSetting <bool>(ServerSettings.SettingName.bUseRemoteControl)) { MyTerminalControlFactory.AddControl <MyShipController, MyRemoteControl>(control); } }
private static void AddControl(MyTerminalControl<MyShipController> control) { MyTerminalControlFactory.AddControl<MyShipController, MyCockpit>(control); if (ServerSettings.GetSetting<bool>(ServerSettings.SettingName.bUseRemoteControl)) MyTerminalControlFactory.AddControl<MyShipController, MyRemoteControl>(control); }
static MyShipConnector() { var stateWriter = new MyTerminalControl<MyShipConnector>.WriterDelegate((b, sb) => b.WriteLockStateValue(sb)); var throwOut = new MyTerminalControlOnOffSwitch<MyShipConnector>("ThrowOut", MySpaceTexts.Terminal_ThrowOut); throwOut.Getter = (block) => block.ThrowOut; throwOut.Setter = (block, value) => MySyncShipConnector.SendChangePropertyMessage(value, block, MySyncShipConnector.Properties.ThrowOut); throwOut.EnableToggleAction(); MyTerminalControlFactory.AddControl(throwOut); var collectAll = new MyTerminalControlOnOffSwitch<MyShipConnector>("CollectAll", MySpaceTexts.Terminal_CollectAll); collectAll.Getter = (block) => block.CollectAll; collectAll.Setter = (block, value) => MySyncShipConnector.SendChangePropertyMessage(value, block, MySyncShipConnector.Properties.CollectAll); collectAll.EnableToggleAction(); MyTerminalControlFactory.AddControl(collectAll); var lockBtn = new MyTerminalControlButton<MyShipConnector>("Lock", MySpaceTexts.BlockActionTitle_Lock, MySpaceTexts.Blank, (b) => b.TryConnect()); lockBtn.Enabled = (b) => b.IsWorking && b.InConstraint; lockBtn.Visible = (b) => b.m_connectorMode == Mode.Connector; MyTerminalControlFactory.AddControl(lockBtn); var unlockBtn = new MyTerminalControlButton<MyShipConnector>("Unlock", MySpaceTexts.BlockActionTitle_Unlock, MySpaceTexts.Blank, (b) => b.TryDisconnect()); unlockBtn.Enabled = (b) => b.IsWorking && b.InConstraint; unlockBtn.Visible = (b) => b.m_connectorMode == Mode.Connector; MyTerminalControlFactory.AddControl(unlockBtn); var title = MyTexts.Get(MySpaceTexts.BlockActionTitle_SwitchLock); MyTerminalAction<MyShipConnector> switchLockAction = new MyTerminalAction<MyShipConnector>("SwitchLock", title, MyTerminalActionIcons.TOGGLE); switchLockAction.Action = (b) => b.TrySwitch(); switchLockAction.Writer = stateWriter; switchLockAction.Enabled = (b) => b.m_connectorMode == Mode.Connector; MyTerminalControlFactory.AddAction(switchLockAction); }
static MyLandingGear() { var stateWriter = new MyTerminalControl<MyLandingGear>.WriterDelegate((b, sb) => b.WriteLockStateValue(sb)); var lockBtn = new MyTerminalControlButton<MyLandingGear>("Lock", MySpaceTexts.BlockActionTitle_Lock, MySpaceTexts.Blank, (b) => b.RequestLandingGearLock()); lockBtn.Enabled = (b) => b.IsWorking; lockBtn.EnableAction(MyTerminalActionIcons.TOGGLE, (MyStringId?)null, stateWriter); MyTerminalControlFactory.AddControl(lockBtn); var unlockBtn = new MyTerminalControlButton<MyLandingGear>("Unlock", MySpaceTexts.BlockActionTitle_Unlock, MySpaceTexts.Blank, (b) => b.RequestLandingGearUnlock()); unlockBtn.Enabled = (b) => b.IsWorking; unlockBtn.EnableAction(MyTerminalActionIcons.TOGGLE, (MyStringId?)null, stateWriter); MyTerminalControlFactory.AddControl(unlockBtn); var title = MyTexts.Get(MySpaceTexts.BlockActionTitle_SwitchLock); MyTerminalAction<MyLandingGear> switchLockAction = new MyTerminalAction<MyLandingGear>("SwitchLock", title, MyTerminalActionIcons.TOGGLE); switchLockAction.Action = (b) => b.RequestLandingGearSwitch(); switchLockAction.Writer = stateWriter; MyTerminalControlFactory.AddAction(switchLockAction); var autoLock = new MyTerminalControlCheckbox<MyLandingGear>("Autolock", MySpaceTexts.BlockPropertyTitle_LandGearAutoLock, MySpaceTexts.Blank); autoLock.Getter = (b) => b.m_autoLock; autoLock.Setter = (b, v) => b.SyncObject.SendAutoLockChange(v); autoLock.EnableAction(); MyTerminalControlFactory.AddControl(autoLock); if (MyFakes.LANDING_GEAR_BREAKABLE) { var brakeForce = new MyTerminalControlSlider<MyLandingGear>("BreakForce", MySpaceTexts.BlockPropertyTitle_BreakForce, MySpaceTexts.BlockPropertyDescription_BreakForce); brakeForce.Getter = (x) => x.BreakForce; brakeForce.Setter = (x, v) => x.SyncObject.SendBrakeForceChange(v); brakeForce.DefaultValue = 1; brakeForce.Writer = (x, result) => { if (x.BreakForce >= MaxSolverImpulse) result.AppendStringBuilder(MyTexts.Get(MySpaceTexts.BlockPropertyValue_MotorAngleUnlimited)); else MyValueFormatter.AppendForceInBestUnit(x.BreakForce, result); }; brakeForce.Normalizer = (b, v) => ThresholdToRatio(v); brakeForce.Denormalizer = (b, v) => RatioToThreshold(v); brakeForce.EnableActions(); MyTerminalControlFactory.AddControl(brakeForce); } }
public static void SetDetailedInfo <TBlock>(this MyGuiControlBlockProperty control, MyTerminalControl <TBlock> .WriterDelegate writer, TBlock block) where TBlock : MyTerminalBlock { var sb = control.ExtraInfoLabel.TextToDraw; sb.Clear(); if (writer != null && block != null) { writer(block, sb); } control.ExtraInfoLabel.TextToDraw = sb; control.ExtraInfoLabel.Visible = sb.Length > 0; }