public override void AddControls(List <Sandbox.ModAPI.Interfaces.Terminal.IMyTerminalControl> controls) { IMyTerminalControlCheckbox asteroid = new MyTerminalControlCheckbox <MyShipController>("OrbitAsteroid", MyStringId.GetOrCompute("Asteroid"), MyStringId.GetOrCompute("Orbit the nearest asteroid")); IMyTerminalControlCheckbox planet = new MyTerminalControlCheckbox <MyShipController>("OrbitPlanet", MyStringId.GetOrCompute("Planet"), MyStringId.GetOrCompute("Orbit the nearest planet")); MyTerminalControlTextbox <MyShipController> gridName = new MyTerminalControlTextbox <MyShipController>("GridName", MyStringId.GetOrCompute("Grid"), MyStringId.GetOrCompute("Orbit the specified grid")); asteroid.Getter = block => m_target == Target.asteroid; asteroid.Setter = (block, value) => { m_target = Target.asteroid; m_gridName.Clear(); planet.UpdateVisual(); gridName.UpdateVisual(); }; planet.Getter = block => m_target == Target.planet; planet.Setter = (block, value) => { m_target = Target.planet; m_gridName.Clear(); asteroid.UpdateVisual(); gridName.UpdateVisual(); }; gridName.Getter = block => m_gridName; gridName.Setter = (block, value) => { m_target = Target.grid; m_gridName = value; asteroid.UpdateVisual(); planet.UpdateVisual(); }; controls.Add(asteroid); controls.Add(planet); controls.Add(gridName); }
static MyBatteryBlock() { var recharge = new MyTerminalControlCheckbox <MyBatteryBlock>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.ToolTipBatteryBlock); recharge.Getter = (x) => x.OnlyRecharge; recharge.Setter = (x, v) => x.OnlyRecharge = v; recharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyDischarge; recharge.EnableAction(); var discharge = new MyTerminalControlCheckbox <MyBatteryBlock>("Discharge", MySpaceTexts.BlockPropertyTitle_Discharge, MySpaceTexts.ToolTipBatteryBlock_Discharge); discharge.Getter = (x) => x.OnlyDischarge; discharge.Setter = (x, v) => x.OnlyDischarge = v; discharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyRecharge; discharge.EnableAction(); var semiAuto = new MyTerminalControlCheckbox <MyBatteryBlock>("SemiAuto", MySpaceTexts.BlockPropertyTitle_Semiauto, MySpaceTexts.ToolTipBatteryBlock_Semiauto); semiAuto.Getter = (x) => x.SemiautoEnabled; semiAuto.Setter = (x, v) => x.SemiautoEnabled = v; semiAuto.EnableAction(); MyTerminalControlFactory.AddControl(recharge); MyTerminalControlFactory.AddControl(discharge); MyTerminalControlFactory.AddControl(semiAuto); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyBatteryBlock>()) { return; } base.CreateTerminalControls(); var recharge = new MyTerminalControlCheckbox <MyBatteryBlock>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.ToolTipBatteryBlock); recharge.Getter = (x) => x.OnlyRecharge; recharge.Setter = (x, v) => x.OnlyRecharge = v; recharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyDischarge; recharge.EnableAction(); var discharge = new MyTerminalControlCheckbox <MyBatteryBlock>("Discharge", MySpaceTexts.BlockPropertyTitle_Discharge, MySpaceTexts.ToolTipBatteryBlock_Discharge); discharge.Getter = (x) => x.OnlyDischarge; discharge.Setter = (x, v) => x.OnlyDischarge = v; discharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyRecharge; discharge.EnableAction(); var semiAuto = new MyTerminalControlCheckbox <MyBatteryBlock>("SemiAuto", MySpaceTexts.BlockPropertyTitle_Semiauto, MySpaceTexts.ToolTipBatteryBlock_Semiauto); semiAuto.Getter = (x) => x.SemiautoEnabled; semiAuto.Setter = (x, v) => x.SemiautoEnabled = v; semiAuto.EnableAction(); MyTerminalControlFactory.AddControl(recharge); MyTerminalControlFactory.AddControl(discharge); MyTerminalControlFactory.AddControl(semiAuto); }
static MyMedicalRoom() { //terminal: var label = new MyTerminalControlLabel <MyMedicalRoom>(MySpaceTexts.TerminalScenarioSettingsLabel); var ownershipCheckbox = new MyTerminalControlCheckbox <MyMedicalRoom>("TakeOwnership", MySpaceTexts.MedicalRoom_ownershipAssignmentLabel, MySpaceTexts.MedicalRoom_ownershipAssignmentTooltip); ownershipCheckbox.Getter = (x) => x.m_takeSpawneeOwnership; ownershipCheckbox.Setter = (x, val) => { x.m_takeSpawneeOwnership = val; }; ownershipCheckbox.Enabled = (x) => MySession.Static.Settings.ScenarioEditMode; MyTerminalControlFactory.AddControl(label); MyTerminalControlFactory.AddControl(ownershipCheckbox); var factionCheckbox = new MyTerminalControlCheckbox <MyMedicalRoom>("SetFaction", MySpaceTexts.MedicalRoom_factionAssignmentLabel, MySpaceTexts.MedicalRoom_factionAssignmentTooltip); factionCheckbox.Getter = (x) => x.m_setFactionToSpawnee; factionCheckbox.Setter = (x, val) => { x.m_setFactionToSpawnee = val; }; factionCheckbox.Enabled = (x) => MySession.Static.Settings.ScenarioEditMode; MyTerminalControlFactory.AddControl(factionCheckbox); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyGasGenerator>()) { return; } var useConveyorSystem = new MyTerminalControlOnOffSwitch <MyGasGenerator>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConveyorSystem.Getter = (x) => x.UseConveyorSystem; useConveyorSystem.Setter = (x, v) => x.UseConveyorSystem = v; useConveyorSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConveyorSystem); var refillButton = new MyTerminalControlButton <MyGasGenerator>("Refill", MySpaceTexts.BlockPropertyTitle_Refill, MySpaceTexts.BlockPropertyTitle_Refill, OnRefillButtonPressed); refillButton.Enabled = (x) => x.CanRefill(); refillButton.EnableAction(); MyTerminalControlFactory.AddControl(refillButton); var autoRefill = new MyTerminalControlCheckbox <MyGasGenerator>("Auto-Refill", MySpaceTexts.BlockPropertyTitle_AutoRefill, MySpaceTexts.BlockPropertyTitle_AutoRefill); autoRefill.Getter = (x) => x.AutoRefill; autoRefill.Setter = (x, v) => x.ChangeAutoRefill(v); autoRefill.EnableAction(); MyTerminalControlFactory.AddControl(autoRefill); }
public StaticVariables() { Separator = new MyTerminalControlSeparator <MyCockpit>(); AeroShow = new MyTerminalControlCheckbox <MyCockpit>("Arms_AeroShow", MyStringId.GetOrCompute("Draw Air Resistance"), MyStringId.GetOrCompute("Draw ARMS calculations of air resistance.")); AeroShow.Getter = Get_AeroTerminal; AeroShow.Setter = Set_AeroTerminal; DirectionSelector = MyTerminalControls.Static.CreateControl <IMyTerminalControlCombobox, IMyCockpit>("Arms_AeroDirection"); DirectionSelector.ComboBoxContent = ListDirections; DirectionSelector.Getter = DirectionGetter; DirectionSelector.Setter = DirectionSetter; DirectionSelector.Title = MyStringId.GetOrCompute("Direction of Movement"); EnableHelper = new MyTerminalControlCheckbox <MyCockpit>("Arms_FlightHelper", MyStringId.GetOrCompute("Flight Control Assist"), MyStringId.GetOrCompute("Enable ARMS Flight Control Assistance for atmospheric flight")); EnableHelper.Getter = Get_Helper; EnableHelper.Setter = Set_Helper; AileronButton = GetRotorButton("Aileron"); AileronButton.Action = RotorButtonAileron; ElevatorButton = GetRotorButton("Elevator"); ElevatorButton.Action = RotorButtonElevator; RudderButton = GetRotorButton("Rudder"); RudderButton.Action = RotorButtonRudder; }
static MyGasTank() { var isStockpiling = new MyTerminalControlOnOffSwitch <MyGasTank>("Stockpile", MySpaceTexts.BlockPropertyTitle_Stockpile, MySpaceTexts.BlockPropertyDescription_Stockpile) { Getter = (x) => x.IsStockpiling, Setter = (x, v) => x.SyncObject.ChangeStockpileMode(v) }; isStockpiling.EnableToggleAction(); isStockpiling.EnableOnOffActions(); MyTerminalControlFactory.AddControl(isStockpiling); var refillButton = new MyTerminalControlButton <MyGasTank>("Refill", MySpaceTexts.BlockPropertyTitle_Refill, MySpaceTexts.BlockPropertyTitle_Refill, OnRefillButtonPressed) { Enabled = (x) => x.CanRefill() }; refillButton.EnableAction(); MyTerminalControlFactory.AddControl(refillButton); var autoRefill = new MyTerminalControlCheckbox <MyGasTank>("Auto-Refill", MySpaceTexts.BlockPropertyTitle_AutoRefill, MySpaceTexts.BlockPropertyTitle_AutoRefill) { Getter = (x) => x.m_autoRefill, Setter = (x, v) => x.SyncObject.ChangeAutoRefill(v) }; autoRefill.EnableAction(); MyTerminalControlFactory.AddControl(autoRefill); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyMechanicalConnectionBlockBase>()) { return; } base.CreateTerminalControls(); var weldSpeed = new MyTerminalControlSlider <MyMechanicalConnectionBlockBase>("Weld speed", MySpaceTexts.BlockPropertyTitle_WeldSpeed, MySpaceTexts.Blank); weldSpeed.SetLimits((block) => 0f, (block) => MyGridPhysics.SmallShipMaxLinearVelocity()); weldSpeed.DefaultValueGetter = (block) => MyGridPhysics.LargeShipMaxLinearVelocity() - 5f; weldSpeed.Getter = (x) => x.m_weldSpeed; weldSpeed.Setter = (x, v) => x.m_weldSpeed.Value = v; weldSpeed.Writer = (x, res) => res.AppendDecimal((float)Math.Sqrt(x.m_weldSpeedSq), 1).Append("m/s"); weldSpeed.EnableActions(); MyTerminalControlFactory.AddControl(weldSpeed); var weldForce = new MyTerminalControlCheckbox <MyMechanicalConnectionBlockBase>("Force weld", MySpaceTexts.BlockPropertyTitle_WeldForce, MySpaceTexts.Blank); weldForce.Getter = (x) => x.m_forceWeld; weldForce.Setter = (x, v) => x.m_forceWeld.Value = v; weldForce.EnableAction(); MyTerminalControlFactory.AddControl(weldForce); var addPistonHead = new MyTerminalControlButton <MyMechanicalConnectionBlockBase>("Add Top Part", MySpaceTexts.BlockActionTitle_AddPistonHead, MySpaceTexts.BlockActionTooltip_AddPistonHead, (b) => b.RecreateTop()); addPistonHead.Enabled = (b) => (b.TopBlock == null); addPistonHead.EnableAction(MyTerminalActionIcons.STATION_ON); MyTerminalControlFactory.AddControl(addPistonHead); }
protected override void CreateTerminalControls() { if (!MyTerminalControlFactory.AreControlsCreated <MyOreDetector>()) { base.CreateTerminalControls(); MyTerminalControlSlider <MyOreDetector> slider1 = new MyTerminalControlSlider <MyOreDetector>("Range", MySpaceTexts.BlockPropertyTitle_OreDetectorRange, MySpaceTexts.BlockPropertyDescription_OreDetectorRange); MyTerminalControlSlider <MyOreDetector> slider2 = new MyTerminalControlSlider <MyOreDetector>("Range", MySpaceTexts.BlockPropertyTitle_OreDetectorRange, MySpaceTexts.BlockPropertyDescription_OreDetectorRange); slider2.SetLimits(x => 0f, x => x.m_definition.MaximumRange); MyTerminalValueControl <MyOreDetector, float> .GetterDelegate local3 = (MyTerminalValueControl <MyOreDetector, float> .GetterDelegate)slider2; local3.DefaultValue = new float?((float)100); local3.Getter = x => (x.Range * x.m_definition.MaximumRange) * 0.01f; MyTerminalValueControl <MyOreDetector, float> .GetterDelegate local14 = local3; MyTerminalValueControl <MyOreDetector, float> .GetterDelegate local15 = local3; local15.Setter = (x, v) => x.Range = (v / x.m_definition.MaximumRange) * 100f; MyTerminalValueControl <MyOreDetector, float> .GetterDelegate local12 = local15; MyTerminalValueControl <MyOreDetector, float> .GetterDelegate local13 = local15; local13.Writer = (x, result) => result.AppendInt32(((int)x.m_oreDetectorComponent.DetectionRadius)).Append(" m"); MyTerminalControlFactory.AddControl <MyOreDetector>((MyTerminalControl <MyOreDetector>)local13); MyStringId?on = null; on = null; MyTerminalControlCheckbox <MyOreDetector> checkbox1 = new MyTerminalControlCheckbox <MyOreDetector>("BroadcastUsingAntennas", MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas, MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas, on, on); MyTerminalControlCheckbox <MyOreDetector> checkbox2 = new MyTerminalControlCheckbox <MyOreDetector>("BroadcastUsingAntennas", MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas, MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas, on, on); checkbox2.Getter = x => x.m_oreDetectorComponent.BroadcastUsingAntennas; MyTerminalControlCheckbox <MyOreDetector> local10 = checkbox2; MyTerminalControlCheckbox <MyOreDetector> local11 = checkbox2; local11.Setter = (x, v) => x.m_broadcastUsingAntennas.Value = v; MyTerminalControlCheckbox <MyOreDetector> checkbox = local11; checkbox.EnableAction <MyOreDetector>(null); MyTerminalControlFactory.AddControl <MyOreDetector>(checkbox); } }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyGasTank>()) { return; } base.CreateTerminalControls(); var isStockpiling = new MyTerminalControlOnOffSwitch <MyGasTank>("Stockpile", MySpaceTexts.BlockPropertyTitle_Stockpile, MySpaceTexts.BlockPropertyDescription_Stockpile) { Getter = (x) => x.IsStockpiling, Setter = (x, v) => x.ChangeStockpileMode(v) }; isStockpiling.EnableToggleAction(); isStockpiling.EnableOnOffActions(); MyTerminalControlFactory.AddControl(isStockpiling); var refillButton = new MyTerminalControlButton <MyGasTank>("Refill", MySpaceTexts.BlockPropertyTitle_Refill, MySpaceTexts.BlockPropertyTitle_Refill, OnRefillButtonPressed) { Enabled = (x) => x.CanRefill() }; refillButton.EnableAction(); MyTerminalControlFactory.AddControl(refillButton); var autoRefill = new MyTerminalControlCheckbox <MyGasTank>("Auto-Refill", MySpaceTexts.BlockPropertyTitle_AutoRefill, MySpaceTexts.BlockPropertyTitle_AutoRefill) { Getter = (x) => x.m_autoRefill, Setter = (x, v) => x.ChangeAutoRefill(v) }; autoRefill.EnableAction(); MyTerminalControlFactory.AddControl(autoRefill); }
static MyWarhead() { var slider = new MyTerminalControlSlider <MyWarhead>("DetonationTime", MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime, MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime); slider.SetLogLimits(1, 60 * 60); slider.DefaultValue = 10; slider.Enabled = (x) => !x.IsCountingDown; slider.Getter = (x) => x.DetonationTime; slider.Setter = (x, v) => x.m_countdownMs.Value = (int)(v * 1000); slider.Writer = (x, sb) => MyValueFormatter.AppendTimeExact(Math.Max(x.m_countdownMs, 1000) / 1000, sb); slider.EnableActions(); MyTerminalControlFactory.AddControl(slider); var startButton = new MyTerminalControlButton <MyWarhead>( "StartCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, (b) => MyMultiplayer.RaiseEvent(b, x => x.SetCountdown, true)); startButton.EnableAction(); MyTerminalControlFactory.AddControl(startButton); var stopButton = new MyTerminalControlButton <MyWarhead>( "StopCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, (b) => MyMultiplayer.RaiseEvent(b, x => x.SetCountdown, false)); stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyWarhead>()); var safetyCheckbox = new MyTerminalControlCheckbox <MyWarhead>( "Safety", MySpaceTexts.TerminalControlPanel_Warhead_Safety, MySpaceTexts.TerminalControlPanel_Warhead_SafetyTooltip, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextDisarmed, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextArmed); safetyCheckbox.Getter = (x) => !x.IsArmed; safetyCheckbox.Setter = (x, v) => x.IsArmed = !v; safetyCheckbox.EnableAction(); MyTerminalControlFactory.AddControl(safetyCheckbox); var detonateButton = new MyTerminalControlButton <MyWarhead>( "Detonate", MySpaceTexts.TerminalControlPanel_Warhead_Detonate, MySpaceTexts.TerminalControlPanel_Warhead_Detonate, (b) => { if (b.IsArmed) { MyMultiplayer.RaiseEvent(b, x => x.DetonateRequest); } }); detonateButton.Enabled = (x) => x.IsArmed; detonateButton.EnableAction(); MyTerminalControlFactory.AddControl(detonateButton); }
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); } }
static MyTimerBlock() { m_openedToolbars = new List <MyToolbar>(); var silent = new MyTerminalControlCheckbox <MyTimerBlock>("Silent", MySpaceTexts.BlockPropertyTitle_Silent, MySpaceTexts.ToolTipTimerBlock_Silent); silent.Getter = (x) => x.Silent; silent.Setter = (x, v) => x.Silent = v; silent.EnableAction(); MyTerminalControlFactory.AddControl(silent); var slider = new MyTerminalControlSlider <MyTimerBlock>("TriggerDelay", MySpaceTexts.TerminalControlPanel_TimerDelay, MySpaceTexts.TerminalControlPanel_TimerDelay); slider.SetLogLimits(1, 60 * 60); slider.DefaultValue = 10; slider.Enabled = (x) => !x.IsCountingDown; slider.Getter = (x) => x.TriggerDelay; slider.Setter = (x, v) => x.m_timerSync.Value = ((int)(Math.Round(v, 1) * 1000)); slider.Writer = (x, sb) => MyValueFormatter.AppendTimeExact(Math.Max(x.m_countdownMsStart, 1000) / 1000, sb); slider.EnableActions(); MyTerminalControlFactory.AddControl(slider); var toolbarButton = new MyTerminalControlButton <MyTimerBlock>("OpenToolbar", MySpaceTexts.BlockPropertyTitle_TimerToolbarOpen, MySpaceTexts.BlockPropertyTitle_TimerToolbarOpen, delegate(MyTimerBlock self) { m_openedToolbars.Add(self.Toolbar); if (MyGuiScreenCubeBuilder.Static == null) { m_shouldSetOtherToolbars = true; MyToolbarComponent.CurrentToolbar = self.Toolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; m_openedToolbars.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); MyTerminalControlFactory.AddControl(toolbarButton); var triggerButton = new MyTerminalControlButton <MyTimerBlock>("TriggerNow", MySpaceTexts.BlockPropertyTitle_TimerTrigger, MySpaceTexts.BlockPropertyTitle_TimerTrigger, (x) => x.OnTrigger()); triggerButton.EnableAction(); MyTerminalControlFactory.AddControl(triggerButton); var startButton = new MyTerminalControlButton <MyTimerBlock>("Start", MySpaceTexts.BlockPropertyTitle_TimerStart, MySpaceTexts.BlockPropertyTitle_TimerStart, (x) => x.StartBtn()); startButton.EnableAction(); MyTerminalControlFactory.AddControl(startButton); var stopButton = new MyTerminalControlButton <MyTimerBlock>("Stop", MySpaceTexts.BlockPropertyTitle_TimerStop, MySpaceTexts.BlockPropertyTitle_TimerStop, (x) => x.StopBtn()); stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyRadioAntenna>()) { return; } base.CreateTerminalControls(); MyTerminalControlFactory.RemoveBaseClass <MyRadioAntenna, MyTerminalBlock>(); var show = new MyTerminalControlOnOffSwitch <MyRadioAntenna>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.ShowInTerminal; show.Setter = (x, v) => x.ShowInTerminal = v; MyTerminalControlFactory.AddControl(show); var showConfig = new MyTerminalControlOnOffSwitch <MyRadioAntenna>("ShowInToolbarConfig", MySpaceTexts.Terminal_ShowInToolbarConfig, MySpaceTexts.Terminal_ShowInToolbarConfigToolTip); showConfig.Getter = (x) => x.ShowInToolbarConfig; showConfig.Setter = (x, v) => x.ShowInToolbarConfig = v; MyTerminalControlFactory.AddControl(showConfig); var customName = new MyTerminalControlTextbox <MyRadioAntenna>("CustomName", MyCommonTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => x.SetCustomName(v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyRadioAntenna>()); var broadcastRadius = new MyTerminalControlSlider <MyRadioAntenna>("Radius", MySpaceTexts.BlockPropertyTitle_BroadcastRadius, MySpaceTexts.BlockPropertyDescription_BroadcastRadius); broadcastRadius.SetLogLimits((block) => 1, (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? MyEnergyConstants.MAX_RADIO_POWER_RANGE : MyEnergyConstants.MAX_SMALL_RADIO_POWER_RANGE); broadcastRadius.DefaultValueGetter = (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? 10000 : 500; broadcastRadius.Getter = (x) => x.RadioBroadcaster.BroadcastRadius; broadcastRadius.Setter = (x, v) => x.m_radius.Value = v; //broadcastRadius.Writer = (x, result) => result.Append(x.RadioBroadcaster.BroadcastRadius < MyEnergyConstants.MAX_RADIO_POWER_RANGE ? new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m") : MyTexts.Get(MySpaceTexts.ScreenTerminal_Infinite)); broadcastRadius.Writer = (x, result) => { result.Append(new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m")); }; broadcastRadius.EnableActions(); MyTerminalControlFactory.AddControl(broadcastRadius); var enableBroadcast = new MyTerminalControlCheckbox <MyRadioAntenna>("EnableBroadCast", MySpaceTexts.Antenna_EnableBroadcast, MySpaceTexts.Antenna_EnableBroadcast); enableBroadcast.Getter = (x) => x.RadioBroadcaster.Enabled; enableBroadcast.Setter = (x, v) => x.m_enableBroadcasting.Value = v; enableBroadcast.EnableAction(); MyTerminalControlFactory.AddControl(enableBroadcast); var showShipName = new MyTerminalControlCheckbox <MyRadioAntenna>("ShowShipName", MySpaceTexts.BlockPropertyTitle_ShowShipName, MySpaceTexts.BlockPropertyDescription_ShowShipName); showShipName.Getter = (x) => x.ShowShipName; showShipName.Setter = (x, v) => x.ShowShipName = v; showShipName.EnableAction(); MyTerminalControlFactory.AddControl(showShipName); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyGyro>()) { return; } var gyroPower = new MyTerminalControlSlider <MyGyro>("Power", MySpaceTexts.BlockPropertyTitle_GyroPower, MySpaceTexts.BlockPropertyDescription_GyroPower); gyroPower.Getter = (x) => x.GyroPower; gyroPower.Setter = (x, v) => { x.GyroPower = v; }; gyroPower.Writer = (x, result) => result.AppendInt32((int)(x.GyroPower * 100)).Append(" %"); gyroPower.DefaultValue = 1; gyroPower.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroPower); if (MyFakes.ENABLE_GYRO_OVERRIDE) { var gyroOverride = new MyTerminalControlCheckbox <MyGyro>("Override", MySpaceTexts.BlockPropertyTitle_GyroOverride, MySpaceTexts.BlockPropertyDescription_GyroOverride); gyroOverride.Getter = (x) => x.GyroOverride; gyroOverride.Setter = (x, v) => { x.GyroOverride = v; }; gyroOverride.EnableAction(); MyTerminalControlFactory.AddControl(gyroOverride); // Pitch = X axis, Yaw = Y axis, Roll = Z axis var gyroOverrideSliderY = new MyTerminalControlSlider <MyGyro>("Yaw", MySpaceTexts.BlockPropertyTitle_GyroYawOverride, MySpaceTexts.BlockPropertyDescription_GyroYawOverride); gyroOverrideSliderY.Getter = (x) => - x.m_gyroOverrideVelocity.Value.Y; gyroOverrideSliderY.Setter = (x, v) => { SetGyroTorqueYaw(x, -v); }; gyroOverrideSliderY.Writer = (x, result) => result.AppendDecimal(-x.m_gyroOverrideVelocity.Value.Y * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderY.Enabled = (x) => x.GyroOverride; gyroOverrideSliderY.DefaultValue = 0; gyroOverrideSliderY.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderY.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderY); var gyroOverrideSliderX = new MyTerminalControlSlider <MyGyro>("Pitch", MySpaceTexts.BlockPropertyTitle_GyroPitchOverride, MySpaceTexts.BlockPropertyDescription_GyroPitchOverride); gyroOverrideSliderX.Getter = (x) => x.m_gyroOverrideVelocity.Value.X; gyroOverrideSliderX.Setter = (x, v) => { SetGyroTorquePitch(x, v); }; gyroOverrideSliderX.Writer = (x, result) => result.AppendDecimal(x.m_gyroOverrideVelocity.Value.X * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderX.Enabled = (x) => x.GyroOverride; gyroOverrideSliderX.DefaultValue = 0; gyroOverrideSliderX.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderX.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderX); var gyroOverrideSliderZ = new MyTerminalControlSlider <MyGyro>("Roll", MySpaceTexts.BlockPropertyTitle_GyroRollOverride, MySpaceTexts.BlockPropertyDescription_GyroRollOverride); gyroOverrideSliderZ.Getter = (x) => - x.m_gyroOverrideVelocity.Value.Z; gyroOverrideSliderZ.Setter = (x, v) => { SetGyroTorqueRoll(x, -v); }; gyroOverrideSliderZ.Writer = (x, result) => result.AppendDecimal(-x.m_gyroOverrideVelocity.Value.Z * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderZ.Enabled = (x) => x.GyroOverride; gyroOverrideSliderZ.DefaultValue = 0; gyroOverrideSliderZ.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderZ.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderZ); } }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox<MyShipWelder>("helpOthers", MySpaceTexts.ShipWelder_HelpOthers, MySpaceTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.SyncObject.ChangeHelpOthersMode(v); helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
protected override void AddValueControl(List <Sandbox.ModAPI.Interfaces.Terminal.IMyTerminalControl> controls) { IMyTerminalControlCheckbox checkbox = new MyTerminalControlCheckbox <MyShipController>("BoolValue", MyStringId.GetOrCompute("Value"), MyStringId.GetOrCompute("Value to set propety to")); checkbox.Getter = block => m_value; checkbox.Setter = (block, value) => { m_value = value; m_hasValue = true; }; controls.Add(checkbox); }
static MyMotorSuspension() { var steering = new MyTerminalControlCheckbox <MyMotorSuspension>("Steering", MySpaceTexts.BlockPropertyTitle_Motor_Steering, MySpaceTexts.BlockPropertyDescription_Motor_Steering); steering.Getter = (x) => x.Steering; steering.Setter = (x, v) => x.SyncObject.ChangeSteering(v); steering.EnableAction(); MyTerminalControlFactory.AddControl(steering); var propulsion = new MyTerminalControlCheckbox <MyMotorSuspension>("Propulsion", MySpaceTexts.BlockPropertyTitle_Motor_Propulsion, MySpaceTexts.BlockPropertyDescription_Motor_Propulsion); propulsion.Getter = (x) => x.Propulsion; propulsion.Setter = (x, v) => x.SyncObject.ChangePropulsion(v); propulsion.EnableAction(); MyTerminalControlFactory.AddControl(propulsion); var damping = new MyTerminalControlSlider <MyMotorSuspension>("Damping", MySpaceTexts.BlockPropertyTitle_Motor_Damping, MySpaceTexts.BlockPropertyTitle_Motor_Damping); damping.SetLimits(0, 100); damping.Getter = (x) => x.GetDampingForTerminal(); damping.Setter = (x, v) => x.SyncObject.ChangeDamping(v * 0.002f); damping.Writer = (x, res) => res.AppendInt32((int)(x.Damping / 0.002f)).Append("%"); damping.EnableActions(); MyTerminalControlFactory.AddControl(damping); var strength = new MyTerminalControlSlider <MyMotorSuspension>("Strength", MySpaceTexts.BlockPropertyTitle_Motor_Strength, MySpaceTexts.BlockPropertyTitle_Motor_Strength); strength.SetLimits(0, 100); strength.Getter = (x) => x.GetStrengthForTerminal(); strength.Setter = (x, v) => x.SyncObject.ChangeStrength(v * 0.002f); strength.Writer = (x, res) => res.AppendInt32((int)(x.Strength / 0.002f)).Append("%"); strength.EnableActions(); MyTerminalControlFactory.AddControl(strength); var friction = new MyTerminalControlSlider <MyMotorSuspension>("Friction", MySpaceTexts.BlockPropertyTitle_Motor_Friction, MySpaceTexts.BlockPropertyDescription_Motor_Friction); friction.SetLimits(0, 100); friction.DefaultValue = 150f / 800; friction.Getter = (x) => x.GetFrictionForTerminal(); friction.Setter = (x, v) => x.SyncObject.ChangeFriction(v / 100); friction.Writer = (x, res) => res.AppendInt32((int)(x.Friction * 100)).Append("%"); friction.EnableActions(); MyTerminalControlFactory.AddControl(friction); var power = new MyTerminalControlSlider <MyMotorSuspension>("Power", MySpaceTexts.BlockPropertyTitle_Motor_Power, MySpaceTexts.BlockPropertyDescription_Motor_Power); power.SetLimits(0, 100); power.DefaultValue = 100; power.Getter = (x) => x.GetPowerForTerminal(); power.Setter = (x, v) => x.SyncObject.ChangePower(v / 100); power.Writer = (x, res) => res.AppendInt32((int)(x.Power * 100)).Append("%"); power.EnableActions(); MyTerminalControlFactory.AddControl(power); }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox <MyShipWelder>("helpOthers", MySpaceTexts.ShipWelder_HelpOthers, MySpaceTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.SyncObject.ChangeHelpOthersMode(v); helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyTimerBlock>()) return; var silent = new MyTerminalControlCheckbox<MyTimerBlock>("Silent", MySpaceTexts.BlockPropertyTitle_Silent, MySpaceTexts.ToolTipTimerBlock_Silent); silent.Getter = (x) => x.Silent; silent.Setter = (x, v) => x.Silent = v; silent.EnableAction(); MyTerminalControlFactory.AddControl(silent); var slider = new MyTerminalControlSlider<MyTimerBlock>("TriggerDelay", MySpaceTexts.TerminalControlPanel_TimerDelay, MySpaceTexts.TerminalControlPanel_TimerDelay); slider.SetLogLimits(1, 60 * 60); slider.DefaultValue = 10; slider.Enabled = (x) => !x.IsCountingDown; slider.Getter = (x) => x.TriggerDelay; slider.Setter = (x, v) => x.m_timerSync.Value = ((int)(Math.Round(v, 1) * 1000)); slider.Writer = (x, sb) => MyValueFormatter.AppendTimeExact(Math.Max(x.m_countdownMsStart, 1000) / 1000, sb); slider.EnableActions(); MyTerminalControlFactory.AddControl(slider); var toolbarButton = new MyTerminalControlButton<MyTimerBlock>("OpenToolbar", MySpaceTexts.BlockPropertyTitle_TimerToolbarOpen, MySpaceTexts.BlockPropertyTitle_TimerToolbarOpen, delegate(MyTimerBlock self) { m_openedToolbars.Add(self.Toolbar); if (MyGuiScreenCubeBuilder.Static == null) { m_shouldSetOtherToolbars = true; MyToolbarComponent.CurrentToolbar = self.Toolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; m_openedToolbars.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); MyTerminalControlFactory.AddControl(toolbarButton); var triggerButton = new MyTerminalControlButton<MyTimerBlock>("TriggerNow", MySpaceTexts.BlockPropertyTitle_TimerTrigger, MySpaceTexts.BlockPropertyTitle_TimerTrigger, (x) => x.OnTrigger()); triggerButton.EnableAction(); MyTerminalControlFactory.AddControl(triggerButton); var startButton = new MyTerminalControlButton<MyTimerBlock>("Start", MySpaceTexts.BlockPropertyTitle_TimerStart, MySpaceTexts.BlockPropertyTitle_TimerStart, (x) => x.StartBtn()); startButton.EnableAction(); MyTerminalControlFactory.AddControl(startButton); var stopButton = new MyTerminalControlButton<MyTimerBlock>("Stop", MySpaceTexts.BlockPropertyTitle_TimerStop, MySpaceTexts.BlockPropertyTitle_TimerStop, (x) => x.StopBtn()); stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox <MyShipWelder>("helpOthers", MyCommonTexts.ShipWelder_HelpOthers, MyCommonTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.m_helpOthers.Value = v; helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox<MyShipWelder>("helpOthers", MyCommonTexts.ShipWelder_HelpOthers, MyCommonTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.m_helpOthers.Value = v; helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox<MyShipWelder>("helpOthers", MySpaceTexts.ShipWelder_HelpOthers, MySpaceTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.m_helpOthers; helpOthersCheck.Setter = (x, v) => { x.m_helpOthers = v; }; MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static MyShipWelder() { if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox <MyShipWelder>("helpOthers", MySpaceTexts.ShipWelder_HelpOthers, MySpaceTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.m_helpOthers; helpOthersCheck.Setter = (x, v) => { x.m_helpOthers = v; }; MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static MyGyro() { var gyroPower = new MyTerminalControlSlider<MyGyro>("Power", MySpaceTexts.BlockPropertyTitle_GyroPower, MySpaceTexts.BlockPropertyDescription_GyroPower); gyroPower.Getter = (x) => x.GyroPower; gyroPower.Setter = (x, v) => { x.GyroPower = v; x.SyncObject.SendChangeGyroPowerRequest(v); }; gyroPower.Writer = (x, result) => result.AppendInt32((int)(x.GyroPower * 100)).Append(" %"); gyroPower.DefaultValue = 1; gyroPower.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroPower); if (MyFakes.ENABLE_GYRO_OVERRIDE) { var gyroOverride = new MyTerminalControlCheckbox<MyGyro>("Override", MySpaceTexts.BlockPropertyTitle_GyroOverride, MySpaceTexts.BlockPropertyDescription_GyroOverride); gyroOverride.Getter = (x) => x.GyroOverride; gyroOverride.Setter = (x, v) => { x.SetGyroOverride(v); x.SyncObject.SendGyroOverrideRequest(v); }; gyroOverride.EnableAction(); MyTerminalControlFactory.AddControl(gyroOverride); // Pitch = X axis, Yaw = Y axis, Roll = Z axis var gyroOverrideSliderY = new MyTerminalControlSlider<MyGyro>("Yaw", MySpaceTexts.BlockPropertyTitle_GyroYawOverride, MySpaceTexts.BlockPropertyDescription_GyroYawOverride); gyroOverrideSliderY.Getter = (x) => -x.m_gyroOverrideVelocity.Y; gyroOverrideSliderY.Setter = (x, v) => { SetGyroTorqueYaw(x, -v); x.SyncObject.SendGyroTorqueRequest(x.m_gyroOverrideVelocity); }; gyroOverrideSliderY.Writer = (x, result) => result.AppendDecimal(x.m_gyroOverrideVelocity.Y * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderY.Enabled = (x) => x.GyroOverride; gyroOverrideSliderY.DefaultValue = 0; gyroOverrideSliderY.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderY.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderY); var gyroOverrideSliderX = new MyTerminalControlSlider<MyGyro>("Pitch", MySpaceTexts.BlockPropertyTitle_GyroPitchOverride, MySpaceTexts.BlockPropertyDescription_GyroPitchOverride); gyroOverrideSliderX.Getter = (x) => x.m_gyroOverrideVelocity.X; gyroOverrideSliderX.Setter = (x, v) => { SetGyroTorquePitch(x, v); x.SyncObject.SendGyroTorqueRequest(x.m_gyroOverrideVelocity); }; gyroOverrideSliderX.Writer = (x, result) => result.AppendDecimal(x.m_gyroOverrideVelocity.X * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderX.Enabled = (x) => x.GyroOverride; gyroOverrideSliderX.DefaultValue = 0; gyroOverrideSliderX.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderX.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderX); var gyroOverrideSliderZ = new MyTerminalControlSlider<MyGyro>("Roll", MySpaceTexts.BlockPropertyTitle_GyroRollOverride, MySpaceTexts.BlockPropertyDescription_GyroRollOverride); gyroOverrideSliderZ.Getter = (x) => -x.m_gyroOverrideVelocity.Z; gyroOverrideSliderZ.Setter = (x, v) => { SetGyroTorqueRoll(x, -v); x.SyncObject.SendGyroTorqueRequest(x.m_gyroOverrideVelocity); }; gyroOverrideSliderZ.Writer = (x, result) => result.AppendDecimal(x.m_gyroOverrideVelocity.Z * MathHelper.RadiansPerSecondToRPM, 2).Append(" RPM"); gyroOverrideSliderZ.Enabled = (x) => x.GyroOverride; gyroOverrideSliderZ.DefaultValue = 0; gyroOverrideSliderZ.SetDualLogLimits((x) => 0.01f * MathHelper.RPMToRadiansPerSecond, MaxAngularRadiansPerSecond, 0.05f); gyroOverrideSliderZ.EnableActions(MyTerminalActionIcons.INCREASE, MyTerminalActionIcons.DECREASE); MyTerminalControlFactory.AddControl(gyroOverrideSliderZ); } }
public override void AddControls(List <Sandbox.ModAPI.Interfaces.Terminal.IMyTerminalControl> controls) { MyTerminalControlTextbox <MyShipController> gridName = new MyTerminalControlTextbox <MyShipController>("GridName", MyStringId.GetOrCompute("Grid"), MyStringId.GetOrCompute("Weld the specified grid")); gridName.Getter = block => m_target; gridName.Setter = (block, value) => m_target = value; controls.Add(gridName); IMyTerminalControlCheckbox fetch = new MyTerminalControlCheckbox <MyShipController>("FetchComponents", MyStringId.GetOrCompute("Fetch components"), MyStringId.GetOrCompute("Fetch components the next time the ship lands")); fetch.Getter = block => m_fetch; fetch.Setter = (block, value) => m_fetch = value; controls.Add(fetch); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyShipWelder>()) return; base.CreateTerminalControls(); if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox<MyShipWelder>("helpOthers", MyCommonTexts.ShipWelder_HelpOthers, MyCommonTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.m_helpOthers.Value = v; helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
static Solar() { MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MySolarPanel>()); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyOxygenFarm>()); s_termControl_faceSun = new MyTerminalControlCheckbox<MyTerminalBlock>("FaceSun", MyStringId.GetOrCompute("Face Sun"), MyStringId.GetOrCompute("Face this block towards the sun")); IMyTerminalValueControl<bool> valueControl = s_termControl_faceSun as IMyTerminalValueControl<bool>; valueControl.Getter = GetFaceSun; valueControl.Setter = SetFaceSun; MyTerminalControlFactory.AddControl<MyTerminalBlock, MySolarPanel>(s_termControl_faceSun); MyTerminalControlFactory.AddControl<MyTerminalBlock, MyOxygenFarm>(s_termControl_faceSun); MyAPIGateway.Entities.OnCloseAll += Entities_OnCloseAll; }
static MyBatteryBlock() { var recharge = new MyTerminalControlCheckbox<MyBatteryBlock>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.ToolTipBatteryBlock); recharge.Getter = (x) => !x.ProducerEnabled; recharge.Setter = (x, v) => x.SyncObject.SendProducerEnableChange(!v); recharge.Enabled = (x) => !x.SemiautoEnabled; recharge.EnableAction(); var semiAuto = new MyTerminalControlCheckbox<MyBatteryBlock>("SemiAuto", MySpaceTexts.BlockPropertyTitle_Semiauto, MySpaceTexts.ToolTipBatteryBlock_Semiauto); semiAuto.Getter = (x) => x.SemiautoEnabled; semiAuto.Setter = (x, v) => x.SyncObject.SendSemiautoEnableChange(v); MyTerminalControlFactory.AddControl(recharge); MyTerminalControlFactory.AddControl(semiAuto); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyButtonPanel>()) { return; } base.CreateTerminalControls(); var checkAccess = new MyTerminalControlCheckbox <MyButtonPanel>("AnyoneCanUse", MySpaceTexts.BlockPropertyText_AnyoneCanUse, MySpaceTexts.BlockPropertyDescription_AnyoneCanUse); checkAccess.Getter = (x) => x.AnyoneCanUse; checkAccess.Setter = (x, v) => x.AnyoneCanUse = v; checkAccess.EnableAction(); MyTerminalControlFactory.AddControl(checkAccess); var toolbarButton = new MyTerminalControlButton <MyButtonPanel>("Open Toolbar", MySpaceTexts.BlockPropertyTitle_SensorToolbarOpen, MySpaceTexts.BlockPropertyDescription_SensorToolbarOpen, delegate(MyButtonPanel self) { m_openedToolbars.Add(self.Toolbar); if (MyGuiScreenCubeBuilder.Static == null) { m_shouldSetOtherToolbars = true; MyToolbarComponent.CurrentToolbar = self.Toolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; m_openedToolbars.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); MyTerminalControlFactory.AddControl(toolbarButton); var buttonsList = new MyTerminalControlListbox <MyButtonPanel>("ButtonText", MySpaceTexts.BlockPropertyText_ButtonList, MySpaceTexts.Blank); buttonsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); buttonsList.ItemSelected = (x, y) => x.SelectButtonToName(y); MyTerminalControlFactory.AddControl(buttonsList); var customButtonName = new MyTerminalControlTextbox <MyButtonPanel>("ButtonName", MySpaceTexts.BlockPropertyText_ButtonName, MySpaceTexts.Blank); customButtonName.Getter = (x) => x.GetButtonName(); customButtonName.Setter = (x, v) => x.SetCustomButtonName(v); customButtonName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customButtonName); }
static MyAssembler() { var slaveCheck = new MyTerminalControlCheckbox <MyAssembler>("slaveMode", MySpaceTexts.Assembler_SlaveMode, MySpaceTexts.Assembler_SlaveMode); slaveCheck.Getter = (x) => x.IsSlave; slaveCheck.Setter = (x, v) => { if (x.RepeatEnabled) { x.RequestRepeatEnabled(false); } x.RequestSlaveEnabled(v); }; slaveCheck.EnableAction(); MyTerminalControlFactory.AddControl(slaveCheck); }
private static void CreateTerminal() { Logger.DebugLog("entered", Logger.severity.TRACE); TerminalControlHelper.EnsureTerminalControlCreated <MySolarPanel>(); TerminalControlHelper.EnsureTerminalControlCreated <MyOxygenFarm>(); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MySolarPanel>()); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyOxygenFarm>()); MyTerminalControlCheckbox <MyTerminalBlock> s_termControl_faceSun = new MyTerminalControlCheckbox <MyTerminalBlock>("FaceSun", MyStringId.GetOrCompute("Face Sun"), MyStringId.GetOrCompute("Face this block towards the sun")); new ValueSync <bool, Solar>(s_termControl_faceSun, (script) => script.m_termControl_faceSun, (script, value) => script.m_termControl_faceSun = value); MyTerminalControlFactory.AddControl <MyTerminalBlock, MySolarPanel>(s_termControl_faceSun); MyTerminalControlFactory.AddControl <MyTerminalBlock, MyOxygenFarm>(s_termControl_faceSun); }
static MyOreDetector() { var range = new MyTerminalControlSlider <MyOreDetector>("Range", MySpaceTexts.BlockPropertyTitle_OreDetectorRange, MySpaceTexts.BlockPropertyDescription_OreDetectorRange); range.SetLimits(1, 100); range.DefaultValue = 100; range.Getter = (x) => x.Range; range.Setter = (x, v) => x.Range = v; range.Writer = (x, result) => result.AppendInt32((int)x.m_oreDetectorComponent.DetectionRadius).Append(" m"); var broadcastUsingAntennas = new MyTerminalControlCheckbox <MyOreDetector>("BroadcastUsingAntennas", MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas, MySpaceTexts.BlockPropertyDescription_BroadcastUsingAntennas); broadcastUsingAntennas.Getter = (x) => x.m_oreDetectorComponent.BroadcastUsingAntennas; broadcastUsingAntennas.Setter = (x, v) => x.SyncObject.SendChangeOreDetector(v); MyTerminalControlFactory.AddControl(broadcastUsingAntennas); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyShipWelder>()) { return; } base.CreateTerminalControls(); if (MyFakes.ENABLE_WELDER_HELP_OTHERS) { var helpOthersCheck = new MyTerminalControlCheckbox <MyShipWelder>("helpOthers", MyCommonTexts.ShipWelder_HelpOthers, MyCommonTexts.ShipWelder_HelpOthers); helpOthersCheck.Getter = (x) => x.HelpOthers; helpOthersCheck.Setter = (x, v) => x.m_helpOthers.Value = v; helpOthersCheck.EnableAction(); MyTerminalControlFactory.AddControl(helpOthersCheck); } }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MySpaceBall>()) { return; } base.CreateTerminalControls(); MyTerminalControlFactory.RemoveBaseClass <MySpaceBall, MyTerminalBlock>(); var mass = new MyTerminalControlSlider <MySpaceBall>("VirtualMass", MySpaceTexts.BlockPropertyDescription_SpaceBallVirtualMass, MySpaceTexts.BlockPropertyDescription_SpaceBallVirtualMass); mass.Getter = (x) => x.VirtualMass; mass.Setter = (x, v) => x.VirtualMass = v; mass.DefaultValueGetter = (x) => DEFAULT_MASS; mass.SetLimits(x => 0, x => x.BlockDefinition.MaxVirtualMass); mass.Writer = (x, result) => MyValueFormatter.AppendWeightInBestUnit(x.VirtualMass, result); mass.EnableActions(); MyTerminalControlFactory.AddControl(mass); if (MyPerGameSettings.BallFriendlyPhysics) { var friction = new MyTerminalControlSlider <MySpaceBall>("Friction", MySpaceTexts.BlockPropertyDescription_SpaceBallFriction, MySpaceTexts.BlockPropertyDescription_SpaceBallFriction); friction.Getter = (x) => x.Friction; friction.Setter = (x, v) => x.Friction = v; friction.DefaultValueGetter = (x) => DEFAULT_FRICTION; friction.SetLimits(0, 1.0f); friction.Writer = (x, result) => result.AppendInt32((int)(x.Friction * 100)).Append("%"); friction.EnableActions(); MyTerminalControlFactory.AddControl(friction); var restitution = new MyTerminalControlSlider <MySpaceBall>("Restitution", MySpaceTexts.BlockPropertyDescription_SpaceBallRestitution, MySpaceTexts.BlockPropertyDescription_SpaceBallRestitution); restitution.Getter = (x) => x.Restitution; restitution.Setter = (x, v) => x.Restitution = v; restitution.DefaultValueGetter = (x) => DEFAULT_RESTITUTION; restitution.SetLimits(0, 1.0f); restitution.Writer = (x, result) => result.AppendInt32((int)(x.Restitution * 100)).Append("%"); restitution.EnableActions(); MyTerminalControlFactory.AddControl(restitution); } var enableBroadcast = new MyTerminalControlCheckbox <MySpaceBall>("EnableBroadCast", MySpaceTexts.Antenna_EnableBroadcast, MySpaceTexts.Antenna_EnableBroadcast); enableBroadcast.Getter = (x) => x.RadioBroadcaster.Enabled; enableBroadcast.Setter = (x, v) => x.m_broadcastSync.Value = v; enableBroadcast.EnableAction(); MyTerminalControlFactory.AddControl(enableBroadcast); }
static MyAssembler() { if (MyFakes.ENABLE_ASSEMBLER_COOPERATION) { var slaveCheck = new MyTerminalControlCheckbox <MyAssembler>("slaveMode", MySpaceTexts.Assembler_SlaveMode, MySpaceTexts.Assembler_SlaveMode); slaveCheck.Getter = (x) => x.IsSlave; slaveCheck.Setter = (x, v) => { if (x.RepeatEnabled) { x.SyncObject.RequestRepeatEnabled(false); } x.SyncObject.RequestSlaveSwitch(v); }; MyTerminalControlFactory.AddControl(slaveCheck); } }
static MyRadioAntenna() { MyTerminalControlFactory.RemoveBaseClass <MyRadioAntenna, MyTerminalBlock>(); var show = new MyTerminalControlOnOffSwitch <MyRadioAntenna>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.ShowInTerminal; show.Setter = (x, v) => x.RequestShowInTerminal(v); MyTerminalControlFactory.AddControl(show); var customName = new MyTerminalControlTextbox <MyRadioAntenna>("CustomName", MySpaceTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => MySyncBlockHelpers.SendChangeNameRequest(x, v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyRadioAntenna>()); var broadcastRadius = new MyTerminalControlSlider <MyRadioAntenna>("Radius", MySpaceTexts.BlockPropertyTitle_BroadcastRadius, MySpaceTexts.BlockPropertyDescription_BroadcastRadius); broadcastRadius.SetLogLimits((block) => 1, (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? MyEnergyConstants.MAX_RADIO_POWER_RANGE : MyEnergyConstants.MAX_SMALL_RADIO_POWER_RANGE); broadcastRadius.DefaultValueGetter = (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? 10000 : 500; broadcastRadius.Getter = (x) => x.RadioBroadcaster.BroadcastRadius; broadcastRadius.Setter = (x, v) => x.RadioBroadcaster.SyncObject.SendChangeRadioAntennaRequest(v, x.RadioBroadcaster.Enabled); //broadcastRadius.Writer = (x, result) => result.Append(x.RadioBroadcaster.BroadcastRadius < MyEnergyConstants.MAX_RADIO_POWER_RANGE ? new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m") : MyTexts.Get(MySpaceTexts.ScreenTerminal_Infinite)); broadcastRadius.Writer = (x, result) => { result.Append(new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m")); }; broadcastRadius.EnableActions(); MyTerminalControlFactory.AddControl(broadcastRadius); var enableBroadcast = new MyTerminalControlCheckbox <MyRadioAntenna>("EnableBroadCast", MySpaceTexts.Antenna_EnableBroadcast, MySpaceTexts.Antenna_EnableBroadcast); enableBroadcast.Getter = (x) => x.RadioBroadcaster.Enabled; enableBroadcast.Setter = (x, v) => x.RadioBroadcaster.SyncObject.SendChangeRadioAntennaRequest(x.RadioBroadcaster.BroadcastRadius, v); enableBroadcast.EnableAction(); MyTerminalControlFactory.AddControl(enableBroadcast); var showShipName = new MyTerminalControlCheckbox <MyRadioAntenna>("ShowShipName", MySpaceTexts.BlockPropertyTitle_ShowShipName, MySpaceTexts.BlockPropertyDescription_ShowShipName); showShipName.Getter = (x) => x.ShowShipName; showShipName.Setter = (x, v) => x.RadioBroadcaster.SyncObject.SendChangeRadioAntennaDisplayName(v); showShipName.EnableAction(); MyTerminalControlFactory.AddControl(showShipName); }
static MyBatteryBlock() { var recharge = new MyTerminalControlCheckbox <MyBatteryBlock>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.ToolTipBatteryBlock); recharge.Getter = (x) => !x.ProducerEnabled; recharge.Setter = (x, v) => x.SyncObject.SendProducerEnableChange(!v); recharge.Enabled = (x) => !x.SemiautoEnabled; recharge.EnableAction(); var semiAuto = new MyTerminalControlCheckbox <MyBatteryBlock>("SemiAuto", MySpaceTexts.BlockPropertyTitle_Semiauto, MySpaceTexts.ToolTipBatteryBlock_Semiauto); semiAuto.Getter = (x) => x.SemiautoEnabled; semiAuto.Setter = (x, v) => x.SyncObject.SendSemiautoEnableChange(v); MyTerminalControlFactory.AddControl(recharge); MyTerminalControlFactory.AddControl(semiAuto); }
static MyOxygenGenerator() { var useConveyorSystem = new MyTerminalControlOnOffSwitch<MyOxygenGenerator>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConveyorSystem.Getter = (x) => (x as IMyInventoryOwner).UseConveyorSystem; useConveyorSystem.Setter = (x, v) => MySyncConveyors.SendChangeUseConveyorSystemRequest(x.EntityId, v); useConveyorSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConveyorSystem); var refillButton = new MyTerminalControlButton<MyOxygenGenerator>("Refill", MySpaceTexts.BlockPropertyTitle_Refill, MySpaceTexts.BlockPropertyTitle_Refill, OnRefillButtonPressed); refillButton.Enabled = (x) => x.CanRefill(); refillButton.EnableAction(); MyTerminalControlFactory.AddControl(refillButton); var autoRefill = new MyTerminalControlCheckbox<MyOxygenGenerator>("Auto-Refill", MySpaceTexts.BlockPropertyTitle_AutoRefill, MySpaceTexts.BlockPropertyTitle_AutoRefill); autoRefill.Getter = (x) => x.m_autoRefill; autoRefill.Setter = (x, v) => x.m_autoRefill = v; autoRefill.EnableAction(); MyTerminalControlFactory.AddControl(autoRefill); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyButtonPanel>()) return; var checkAccess = new MyTerminalControlCheckbox<MyButtonPanel>("AnyoneCanUse", MySpaceTexts.BlockPropertyText_AnyoneCanUse, MySpaceTexts.BlockPropertyDescription_AnyoneCanUse); checkAccess.Getter = (x) => x.AnyoneCanUse; checkAccess.Setter = (x, v) => x.AnyoneCanUse = v; checkAccess.EnableAction(); MyTerminalControlFactory.AddControl(checkAccess); var toolbarButton = new MyTerminalControlButton<MyButtonPanel>("Open Toolbar", MySpaceTexts.BlockPropertyTitle_SensorToolbarOpen, MySpaceTexts.BlockPropertyDescription_SensorToolbarOpen, delegate(MyButtonPanel self) { m_openedToolbars.Add(self.Toolbar); if (MyGuiScreenCubeBuilder.Static == null) { m_shouldSetOtherToolbars = true; MyToolbarComponent.CurrentToolbar = self.Toolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; m_openedToolbars.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); MyTerminalControlFactory.AddControl(toolbarButton); var buttonsList = new MyTerminalControlListbox<MyButtonPanel>("ButtonText", MySpaceTexts.BlockPropertyText_ButtonList, MySpaceTexts.Blank); buttonsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); buttonsList.ItemSelected = (x, y) => x.SelectButtonToName(y); MyTerminalControlFactory.AddControl(buttonsList); var customButtonName = new MyTerminalControlTextbox<MyButtonPanel>("ButtonName", MySpaceTexts.BlockPropertyText_ButtonName, MySpaceTexts.Blank); customButtonName.Getter = (x) => x.GetButtonName(); customButtonName.Setter = (x, v) => x.SetCustomButtonName(v); customButtonName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customButtonName); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyMechanicalConnectionBlockBase>()) return; var weldSpeed = new MyTerminalControlSlider<MyMechanicalConnectionBlockBase>("Weld speed", MySpaceTexts.BlockPropertyTitle_WeldSpeed, MySpaceTexts.Blank); weldSpeed.SetLimits((block) => 0f, (block) => MyGridPhysics.SmallShipMaxLinearVelocity()); weldSpeed.DefaultValueGetter = (block) => MyGridPhysics.LargeShipMaxLinearVelocity() - 5f; weldSpeed.Getter = (x) => (float)Math.Sqrt(x.m_weldSpeedSq); weldSpeed.Setter = (x, v) => x.m_weldSpeedSq.Value = v * v; weldSpeed.Writer = (x, res) => res.AppendDecimal((float)Math.Sqrt(x.m_weldSpeedSq), 1).Append("m/s"); weldSpeed.EnableActions(); MyTerminalControlFactory.AddControl(weldSpeed); var weldForce = new MyTerminalControlCheckbox<MyMechanicalConnectionBlockBase>("Force weld", MySpaceTexts.BlockPropertyTitle_WeldForce, MySpaceTexts.Blank); weldForce.Getter = (x) => x.m_forceWeld; weldForce.Setter = (x, v) => x.m_forceWeld.Value = v; weldForce.EnableAction(); MyTerminalControlFactory.AddControl(weldForce); }
static MyShipController() { if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT) { var controlThrusters = new MyTerminalControlCheckbox<MyShipController>("ControlThrusters", MySpaceTexts.TerminalControlPanel_Cockpit_ControlThrusters, MySpaceTexts.TerminalControlPanel_Cockpit_ControlThrusters); controlThrusters.Getter = (x) => x.ControlThrusters; controlThrusters.Setter = (x, v) => x.SyncObject.SetControlThrusters(v); controlThrusters.Visible = (x) => x.m_enableShipControl; controlThrusters.Enabled = (x) => x.IsMainCockpitFree(); var action = controlThrusters.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(controlThrusters); var controlWheels = new MyTerminalControlCheckbox<MyShipController>("ControlWheels", MySpaceTexts.TerminalControlPanel_Cockpit_ControlWheels, MySpaceTexts.TerminalControlPanel_Cockpit_ControlWheels); controlWheels.Getter = (x) => x.ControlWheels; controlWheels.Setter = (x, v) => x.SyncObject.SetControlWheels(v); controlWheels.Visible = (x) => x.m_enableShipControl; controlWheels.Enabled = (x) => x.GridWheels.WheelCount > 0 && x.IsMainCockpitFree(); action = controlWheels.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(controlWheels); var handBrake = new MyTerminalControlCheckbox<MyShipController>("HandBrake", MySpaceTexts.TerminalControlPanel_Cockpit_Handbrake, MySpaceTexts.TerminalControlPanel_Cockpit_Handbrake); handBrake.Getter = (x) => x.CubeGrid.GridSystems.WheelSystem.HandBrake; handBrake.Setter = (x, v) => x.CubeGrid.SyncObject.SetHandbrakeRequest(v); handBrake.Visible = (x) => x.m_enableShipControl; handBrake.Enabled = (x) => x.GridWheels.WheelCount > 0 && x.IsMainCockpitFree(); action = handBrake.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(handBrake); } if (MyFakes.ENABLE_DAMPENERS_OVERRIDE) { var dampenersOverride = new MyTerminalControlCheckbox<MyShipController>("DampenersOverride", MySpaceTexts.ControlName_InertialDampeners, MySpaceTexts.ControlName_InertialDampeners); dampenersOverride.Getter = (x) => { if (x.GridThrustSystem == null) { Debug.Fail("Alex Florea: Grid thrust system should not be null!"); return false; } else { return x.GridThrustSystem.DampenersEnabled; } }; dampenersOverride.Setter = (x, v) => x.EnableDampingInternal(v, true); dampenersOverride.Visible = (x) => x.m_enableShipControl; var action = dampenersOverride.EnableAction(); if (action != null) { action.Enabled = (x) => x.m_enableShipControl;// x.EnableShipControl; } dampenersOverride.Enabled = (x) => x.IsMainCockpitFree(); MyTerminalControlFactory.AddControl(dampenersOverride); } var mainCockpit = new MyTerminalControlCheckbox<MyShipController>("MainCockpit", MySpaceTexts.TerminalControlPanel_Cockpit_MainCockpit, MySpaceTexts.TerminalControlPanel_Cockpit_MainCockpit); mainCockpit.Getter = (x) => x.IsMainCockpit; mainCockpit.Setter = (x, v) => x.SetMainCockpit(v); mainCockpit.Enabled = (x) => x.IsMainCockpitFree(); mainCockpit.Visible = (x) => x.CanBeMainCockpit(); mainCockpit.EnableAction(); MyTerminalControlFactory.AddControl(mainCockpit); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyWarhead>()) return; base.CreateTerminalControls(); var slider = new MyTerminalControlSlider<MyWarhead>("DetonationTime", MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime, MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime); slider.SetLogLimits(1, 60 * 60); slider.DefaultValue = 10; slider.Enabled = (x) => !x.IsCountingDown; slider.Getter = (x) => x.DetonationTime; slider.Setter = (x, v) => x.m_countdownMs.Value = (int)(v * 1000); slider.Writer = (x, sb) => MyValueFormatter.AppendTimeExact(Math.Max(x.m_countdownMs, 1000) / 1000, sb); slider.EnableActions(); MyTerminalControlFactory.AddControl(slider); var startButton = new MyTerminalControlButton<MyWarhead>( "StartCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, (b) => MyMultiplayer.RaiseEvent(b, x => x.SetCountdown, true)); startButton.EnableAction(); MyTerminalControlFactory.AddControl(startButton); var stopButton = new MyTerminalControlButton<MyWarhead>( "StopCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, (b) => MyMultiplayer.RaiseEvent(b, x => x.SetCountdown, false)); stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyWarhead>()); var safetyCheckbox = new MyTerminalControlCheckbox<MyWarhead>( "Safety", MySpaceTexts.TerminalControlPanel_Warhead_Safety, MySpaceTexts.TerminalControlPanel_Warhead_SafetyTooltip, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextDisarmed, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextArmed); safetyCheckbox.Getter = (x) => !x.IsArmed; safetyCheckbox.Setter = (x, v) => x.IsArmed = !v; safetyCheckbox.EnableAction(); MyTerminalControlFactory.AddControl(safetyCheckbox); var detonateButton = new MyTerminalControlButton<MyWarhead>( "Detonate", MySpaceTexts.TerminalControlPanel_Warhead_Detonate, MySpaceTexts.TerminalControlPanel_Warhead_Detonate, (b) => { if (b.IsArmed) { MyMultiplayer.RaiseEvent(b, x => x.DetonateRequest); } }); detonateButton.Enabled = (x) => x.IsArmed; detonateButton.EnableAction(); MyTerminalControlFactory.AddControl(detonateButton); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyRadioAntenna>()) return; base.CreateTerminalControls(); MyTerminalControlFactory.RemoveBaseClass<MyRadioAntenna, MyTerminalBlock>(); var show = new MyTerminalControlOnOffSwitch<MyRadioAntenna>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.ShowInTerminal; show.Setter = (x, v) => x.ShowInTerminal = v; MyTerminalControlFactory.AddControl(show); var showConfig = new MyTerminalControlOnOffSwitch<MyRadioAntenna>("ShowInToolbarConfig", MySpaceTexts.Terminal_ShowInToolbarConfig, MySpaceTexts.Terminal_ShowInToolbarConfigToolTip); showConfig.Getter = (x) => x.ShowInToolbarConfig; showConfig.Setter = (x, v) => x.ShowInToolbarConfig = v; MyTerminalControlFactory.AddControl(showConfig); var customName = new MyTerminalControlTextbox<MyRadioAntenna>("CustomName", MyCommonTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => x.SetCustomName(v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyRadioAntenna>()); var broadcastRadius = new MyTerminalControlSlider<MyRadioAntenna>("Radius", MySpaceTexts.BlockPropertyTitle_BroadcastRadius, MySpaceTexts.BlockPropertyDescription_BroadcastRadius); broadcastRadius.SetLogLimits((block) => 1, (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? MyEnergyConstants.MAX_RADIO_POWER_RANGE : MyEnergyConstants.MAX_SMALL_RADIO_POWER_RANGE); broadcastRadius.DefaultValueGetter = (block) => block.CubeGrid.GridSizeEnum == MyCubeSize.Large ? 10000 : 500; broadcastRadius.Getter = (x) => x.RadioBroadcaster.BroadcastRadius; broadcastRadius.Setter = (x, v) => x.m_radius.Value = v; //broadcastRadius.Writer = (x, result) => result.Append(x.RadioBroadcaster.BroadcastRadius < MyEnergyConstants.MAX_RADIO_POWER_RANGE ? new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m") : MyTexts.Get(MySpaceTexts.ScreenTerminal_Infinite)); broadcastRadius.Writer = (x, result) => { result.Append(new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m")); }; broadcastRadius.EnableActions(); MyTerminalControlFactory.AddControl(broadcastRadius); var enableBroadcast = new MyTerminalControlCheckbox<MyRadioAntenna>("EnableBroadCast", MySpaceTexts.Antenna_EnableBroadcast, MySpaceTexts.Antenna_EnableBroadcast); enableBroadcast.Getter = (x) => x.RadioBroadcaster.Enabled; enableBroadcast.Setter = (x, v) => x.m_enableBroadcasting.Value = v; enableBroadcast.EnableAction(); MyTerminalControlFactory.AddControl(enableBroadcast); var showShipName = new MyTerminalControlCheckbox<MyRadioAntenna>("ShowShipName", MySpaceTexts.BlockPropertyTitle_ShowShipName, MySpaceTexts.BlockPropertyDescription_ShowShipName); showShipName.Getter = (x) => x.ShowShipName; showShipName.Setter = (x, v) => x.ShowShipName = v; showShipName.EnableAction(); MyTerminalControlFactory.AddControl(showShipName); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyBatteryBlock>()) return; var recharge = new MyTerminalControlCheckbox<MyBatteryBlock>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.ToolTipBatteryBlock); recharge.Getter = (x) => x.OnlyRecharge; recharge.Setter = (x, v) => x.OnlyRecharge = v; recharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyDischarge; recharge.EnableAction(); var discharge = new MyTerminalControlCheckbox<MyBatteryBlock>("Discharge", MySpaceTexts.BlockPropertyTitle_Discharge, MySpaceTexts.ToolTipBatteryBlock_Discharge); discharge.Getter = (x) => x.OnlyDischarge; discharge.Setter = (x, v) => x.OnlyDischarge = v; discharge.Enabled = (x) => !x.SemiautoEnabled && !x.OnlyRecharge; discharge.EnableAction(); var semiAuto = new MyTerminalControlCheckbox<MyBatteryBlock>("SemiAuto", MySpaceTexts.BlockPropertyTitle_Semiauto, MySpaceTexts.ToolTipBatteryBlock_Semiauto); semiAuto.Getter = (x) => x.SemiautoEnabled; semiAuto.Setter = (x, v) => x.SemiautoEnabled = v; semiAuto.EnableAction(); MyTerminalControlFactory.AddControl(recharge); MyTerminalControlFactory.AddControl(discharge); MyTerminalControlFactory.AddControl(semiAuto); }
static MyMedicalRoom() { //terminal: var label = new MyTerminalControlLabel<MyMedicalRoom>("ScenarioControls", MySpaceTexts.TerminalScenarioSettingsLabel); var ownershipCheckbox = new MyTerminalControlCheckbox<MyMedicalRoom>("TakeOwnership", MySpaceTexts.MedicalRoom_ownershipAssignmentLabel, MySpaceTexts.MedicalRoom_ownershipAssignmentTooltip); ownershipCheckbox.Getter = (x) => x.m_takeSpawneeOwnership; ownershipCheckbox.Setter = (x, val) => { x.m_takeSpawneeOwnership = val; }; ownershipCheckbox.Enabled = (x) => MySession.Static.Settings.ScenarioEditMode; MyTerminalControlFactory.AddControl(label); MyTerminalControlFactory.AddControl(ownershipCheckbox); var factionCheckbox = new MyTerminalControlCheckbox<MyMedicalRoom>("SetFaction", MySpaceTexts.MedicalRoom_factionAssignmentLabel, MySpaceTexts.MedicalRoom_factionAssignmentTooltip); factionCheckbox.Getter = (x) => x.m_setFactionToSpawnee; factionCheckbox.Setter = (x, val) => { x.m_setFactionToSpawnee = val; }; factionCheckbox.Enabled = (x) => MySession.Static.Settings.ScenarioEditMode; MyTerminalControlFactory.AddControl(factionCheckbox); }
static MyMotorSuspension() { var steering = new MyTerminalControlCheckbox<MyMotorSuspension>("Steering", MySpaceTexts.BlockPropertyTitle_Motor_Steering, MySpaceTexts.BlockPropertyDescription_Motor_Steering); steering.Getter = (x) => x.Steering; steering.Setter = (x, v) => x.SyncObject.ChangeSteering(v); steering.EnableAction(); MyTerminalControlFactory.AddControl(steering); var propulsion = new MyTerminalControlCheckbox<MyMotorSuspension>("Propulsion", MySpaceTexts.BlockPropertyTitle_Motor_Propulsion, MySpaceTexts.BlockPropertyDescription_Motor_Propulsion); propulsion.Getter = (x) => x.Propulsion; propulsion.Setter = (x, v) => x.SyncObject.ChangePropulsion(v); propulsion.EnableAction(); MyTerminalControlFactory.AddControl(propulsion); var damping = new MyTerminalControlSlider<MyMotorSuspension>("Damping", MySpaceTexts.BlockPropertyTitle_Motor_Damping, MySpaceTexts.BlockPropertyTitle_Motor_Damping); damping.SetLimits(0, 100); damping.Getter = (x) => x.GetDampingForTerminal(); damping.Setter = (x, v) => x.SyncObject.ChangeDamping(v * 0.002f); damping.Writer = (x, res) => res.AppendInt32((int)(x.Damping / 0.002f)).Append("%"); damping.EnableActions(); MyTerminalControlFactory.AddControl(damping); var strength = new MyTerminalControlSlider<MyMotorSuspension>("Strength", MySpaceTexts.BlockPropertyTitle_Motor_Strength, MySpaceTexts.BlockPropertyTitle_Motor_Strength); strength.SetLimits(0, 100); strength.Getter = (x) => x.GetStrengthForTerminal(); strength.Setter = (x, v) => x.SyncObject.ChangeStrength(v * 0.002f); strength.Writer = (x, res) => res.AppendInt32((int)(x.Strength / 0.002f)).Append("%"); strength.EnableActions(); MyTerminalControlFactory.AddControl(strength); var friction = new MyTerminalControlSlider<MyMotorSuspension>("Friction", MySpaceTexts.BlockPropertyTitle_Motor_Friction, MySpaceTexts.BlockPropertyDescription_Motor_Friction); friction.SetLimits(0, 100); friction.DefaultValue = 150f / 800; friction.Getter = (x) => x.GetFrictionForTerminal(); friction.Setter = (x, v) => x.SyncObject.ChangeFriction(v / 100); friction.Writer = (x, res) => res.AppendInt32((int)(x.Friction * 100)).Append("%"); friction.EnableActions(); MyTerminalControlFactory.AddControl(friction); var power = new MyTerminalControlSlider<MyMotorSuspension>("Power", MySpaceTexts.BlockPropertyTitle_Motor_Power, MySpaceTexts.BlockPropertyDescription_Motor_Power); power.SetLimits(0, 100); power.DefaultValue = 100; power.Getter = (x) => x.GetPowerForTerminal(); power.Setter = (x, v) => x.SyncObject.ChangePower(v / 100); power.Writer = (x, res) => res.AppendInt32((int)(x.Power * 100)).Append("%"); power.EnableActions(); MyTerminalControlFactory.AddControl(power); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyAssembler>()) return; base.CreateTerminalControls(); var slaveCheck = new MyTerminalControlCheckbox<MyAssembler>("slaveMode", MySpaceTexts.Assembler_SlaveMode, MySpaceTexts.Assembler_SlaveMode); slaveCheck.Getter = (x) => x.IsSlave; slaveCheck.Setter = (x, v) => { if (x.RepeatEnabled) { x.RequestRepeatEnabled(false); } x.RequestSlaveEnabled(v); }; slaveCheck.EnableAction(); MyTerminalControlFactory.AddControl(slaveCheck); }
static MyProjector() { if (!MyFakes.ENABLE_PROJECTOR_BLOCK) { return; } var blueprintBtn = new MyTerminalControlButton<MyProjector>("Blueprint", MySpaceTexts.Blueprints, MySpaceTexts.Blank, (p) => p.SelectBlueprint()); blueprintBtn.Enabled = (b) => b.CanProject(); blueprintBtn.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(blueprintBtn); var removeBtn = new MyTerminalControlButton<MyProjector>("Remove", MySpaceTexts.RemoveProjectionButton, MySpaceTexts.Blank, (p) => p.SyncObject.SendRemoveProjection()); removeBtn.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(removeBtn); var keepProjectionToggle = new MyTerminalControlCheckbox<MyProjector>("KeepProjection", MySpaceTexts.KeepProjectionToggle, MySpaceTexts.KeepProjectionTooltip); keepProjectionToggle.Getter = (x) => x.m_keepProjection; keepProjectionToggle.Setter = (x, v) => { x.SyncObject.SendNewKeepProjection(v); }; keepProjectionToggle.EnableAction(); keepProjectionToggle.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(keepProjectionToggle); //ShowOnlyBuildable var showOnlyBuildableBlockToggle = new MyTerminalControlCheckbox<MyProjector>("ShowOnlyBuildable", MySpaceTexts.ShowOnlyBuildableBlockToggle, MySpaceTexts.ShowOnlyBuildableTooltip); showOnlyBuildableBlockToggle.Getter = (x) => x.m_showOnlyBuildable; showOnlyBuildableBlockToggle.Setter = (x, v) => { x.m_showOnlyBuildable = v; x.OnOffsetsChanged(); }; showOnlyBuildableBlockToggle.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(showOnlyBuildableBlockToggle); //HideArmorBlocks var hideArmorBlockToggle = new MyTerminalControlCheckbox<MyProjector>("HideArmorBlocks", MySpaceTexts.HideArmorBlockToggle, MySpaceTexts.HideArmorBlockTooltip); hideArmorBlockToggle.Getter = (x) => x.m_hideArmorBlock; hideArmorBlockToggle.Setter = (x, v) => { x.m_hideArmorBlock = v; x.OnOffsetsChanged(); }; hideArmorBlockToggle.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(hideArmorBlockToggle); //Position var offsetX = new MyTerminalControlSlider<MyProjector>("X", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetX, MySpaceTexts.Blank); offsetX.SetLimits(-50, 50); offsetX.DefaultValue = 0; offsetX.Getter = (x) => x.m_projectionOffset.X; offsetX.Setter = (x, v) => { x.m_projectionOffset.X = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetX.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.X)); offsetX.EnableActions(step: 0.01f); offsetX.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetX); var offsetY = new MyTerminalControlSlider<MyProjector>("Y", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetY, MySpaceTexts.Blank); offsetY.SetLimits(-50, 50); offsetY.DefaultValue = 0; offsetY.Getter = (x) => x.m_projectionOffset.Y; offsetY.Setter = (x, v) => { x.m_projectionOffset.Y = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetY.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.Y)); offsetY.EnableActions(step: 0.01f); offsetY.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetY); var offsetZ = new MyTerminalControlSlider<MyProjector>("Z", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetZ, MySpaceTexts.Blank); offsetZ.SetLimits(-50, 50); offsetZ.DefaultValue = 0; offsetZ.Getter = (x) => x.m_projectionOffset.Z; offsetZ.Setter = (x, v) => { x.m_projectionOffset.Z = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetZ.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.Z)); offsetZ.EnableActions(step: 0.01f); offsetZ.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetZ); //Rotation var rotationX = new MyTerminalControlSlider<MyProjector>("RotX", MySpaceTexts.BlockPropertyTitle_ProjectionRotationX, MySpaceTexts.Blank); rotationX.SetLimits(-2, 2); rotationX.DefaultValue = 0; rotationX.Getter = (x) => x.m_projectionRotation.X; rotationX.Setter = (x, v) => { x.m_projectionRotation.X = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationX.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.X * 90).Append("°"); rotationX.EnableActions(step: 0.2f); rotationX.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationX); var rotationY = new MyTerminalControlSlider<MyProjector>("RotY", MySpaceTexts.BlockPropertyTitle_ProjectionRotationY, MySpaceTexts.Blank); rotationY.SetLimits(-2, 2); rotationY.DefaultValue = 0; rotationY.Getter = (x) => x.m_projectionRotation.Y; rotationY.Setter = (x, v) => { x.m_projectionRotation.Y = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationY.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.Y * 90).Append("°"); rotationY.EnableActions(step: 0.2f); rotationY.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationY); var rotationZ = new MyTerminalControlSlider<MyProjector>("RotZ", MySpaceTexts.BlockPropertyTitle_ProjectionRotationZ, MySpaceTexts.Blank); rotationZ.SetLimits(-2, 2); rotationZ.DefaultValue = 0; rotationZ.Getter = (x) => x.m_projectionRotation.Z; rotationZ.Setter = (x, v) => { x.m_projectionRotation.Z = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationZ.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.Z * 90).Append("°"); rotationZ.EnableActions(step: 0.2f); rotationZ.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationZ); var scenarioSettingsSeparator = new MyTerminalControlSeparator<MyProjector>(); scenarioSettingsSeparator.Visible = (p) => p.ScenarioSettingsEnabled(); MyTerminalControlFactory.AddControl(scenarioSettingsSeparator); var scenarioSettingsLabel = new MyTerminalControlLabel<MyProjector>("ScenarioLabel", MySpaceTexts.TerminalScenarioSettingsLabel); scenarioSettingsLabel.Visible = (p) => p.ScenarioSettingsEnabled(); MyTerminalControlFactory.AddControl(scenarioSettingsLabel); var spawnProjectionButton = new MyTerminalControlButton<MyProjector>("SpawnProjection", MySpaceTexts.BlockPropertyTitle_ProjectionSpawn, MySpaceTexts.Blank, (p) => p.TrySpawnProjection()); spawnProjectionButton.Visible = (p) => p.ScenarioSettingsEnabled(); spawnProjectionButton.Enabled = (p) => p.CanSpawnProjection(); spawnProjectionButton.EnableAction(); MyTerminalControlFactory.AddControl(spawnProjectionButton); var instantBuildingCheckbox = new MyTerminalControlCheckbox<MyProjector>("InstantBuilding", MySpaceTexts.BlockPropertyTitle_Projector_InstantBuilding, MySpaceTexts.BlockPropertyTitle_Projector_InstantBuilding_Tooltip); instantBuildingCheckbox.Visible = (p) => p.ScenarioSettingsEnabled(); instantBuildingCheckbox.Enabled = (p) => p.CanEnableInstantBuilding(); instantBuildingCheckbox.Getter = (p) => p.m_instantBuildingEnabled; instantBuildingCheckbox.Setter = (p, v) => p.TrySetInstantBuilding(v); MyTerminalControlFactory.AddControl(instantBuildingCheckbox); var getOwnershipCheckbox = new MyTerminalControlCheckbox<MyProjector>("GetOwnership", MySpaceTexts.BlockPropertyTitle_Projector_GetOwnership, MySpaceTexts.BlockPropertiesTooltip_Projector_GetOwnership); getOwnershipCheckbox.Visible = (p) => p.ScenarioSettingsEnabled(); getOwnershipCheckbox.Enabled = (p) => p.CanEditInstantBuildingSettings(); getOwnershipCheckbox.Getter = (p) => p.m_getOwnershipFromProjector; getOwnershipCheckbox.Setter = (p, v) => p.TrySetGetOwnership(v); MyTerminalControlFactory.AddControl(getOwnershipCheckbox); var numberOfProjections = new MyTerminalControlSlider<MyProjector>("NumberOfProjections", MySpaceTexts.BlockPropertyTitle_Projector_NumberOfProjections, MySpaceTexts.BlockPropertyTitle_Projector_NumberOfProjections_Tooltip); numberOfProjections.Visible = (p) => p.ScenarioSettingsEnabled(); numberOfProjections.Enabled = (p) => p.CanEditInstantBuildingSettings(); numberOfProjections.Getter = (p) => p.m_maxNumberOfProjections; numberOfProjections.Setter = (p, v) => p.TryChangeNumberOfProjections(v); numberOfProjections.Writer = (p, s) => { if (p.m_maxNumberOfProjections == MAX_NUMBER_OF_PROJECTIONS) { s.AppendStringBuilder(MyTexts.Get(MySpaceTexts.ScreenTerminal_Infinite)); } else { s.AppendInt32(p.m_maxNumberOfProjections); } }; numberOfProjections.SetLogLimits(1, MAX_NUMBER_OF_PROJECTIONS); MyTerminalControlFactory.AddControl(numberOfProjections); var numberOfBlocks = new MyTerminalControlSlider<MyProjector>("NumberOfBlocks", MySpaceTexts.BlockPropertyTitle_Projector_BlocksPerProjection, MySpaceTexts.BlockPropertyTitle_Projector_BlocksPerProjection_Tooltip); numberOfBlocks.Visible = (p) => p.ScenarioSettingsEnabled(); numberOfBlocks.Enabled = (p) => p.CanEditInstantBuildingSettings(); numberOfBlocks.Getter = (p) => p.m_maxNumberOfBlocksPerProjection; numberOfBlocks.Setter = (p, v) => p.TryChangeMaxNumberOfBlocksPerProjection(v); numberOfBlocks.Writer = (p, s) => { if (p.m_maxNumberOfBlocksPerProjection == MAX_NUMBER_OF_BLOCKS) { s.AppendStringBuilder(MyTexts.Get(MySpaceTexts.ScreenTerminal_Infinite)); } else { s.AppendInt32(p.m_maxNumberOfBlocksPerProjection); } }; numberOfBlocks.SetLogLimits(1, MAX_NUMBER_OF_BLOCKS); MyTerminalControlFactory.AddControl(numberOfBlocks); }
static MySpaceBall() { MyTerminalControlFactory.RemoveBaseClass<MySpaceBall, MyTerminalBlock>(); var mass = new MyTerminalControlSlider<MySpaceBall>("VirtualMass", MySpaceTexts.BlockPropertyDescription_SpaceBallVirtualMass, MySpaceTexts.BlockPropertyDescription_SpaceBallVirtualMass); mass.Getter = (x) => x.VirtualMass; mass.Setter = (x, v) => x.VirtualMass = v; mass.DefaultValueGetter = (x) => DEFAULT_MASS; mass.SetLimits(x => 0, x => x.BlockDefinition.MaxVirtualMass); mass.Writer = (x, result) => MyValueFormatter.AppendWeightInBestUnit(x.VirtualMass, result); mass.EnableActions(); MyTerminalControlFactory.AddControl(mass); if (MyPerGameSettings.BallFriendlyPhysics) { var friction = new MyTerminalControlSlider<MySpaceBall>("Friction", MySpaceTexts.BlockPropertyDescription_SpaceBallFriction, MySpaceTexts.BlockPropertyDescription_SpaceBallFriction); friction.Getter = (x) => x.Friction; friction.Setter = (x, v) => x.Friction = v; friction.DefaultValueGetter = (x) => DEFAULT_FRICTION; friction.SetLimits(0, 1.0f); friction.Writer = (x, result) => result.AppendInt32((int)(x.Friction * 100)).Append("%"); friction.EnableActions(); MyTerminalControlFactory.AddControl(friction); var restitution = new MyTerminalControlSlider<MySpaceBall>("Restitution", MySpaceTexts.BlockPropertyDescription_SpaceBallRestitution, MySpaceTexts.BlockPropertyDescription_SpaceBallRestitution); restitution.Getter = (x) => x.Restitution; restitution.Setter = (x, v) => x.Restitution = v; restitution.DefaultValueGetter = (x) => DEFAULT_RESTITUTION; restitution.SetLimits(0, 1.0f); restitution.Writer = (x, result) => result.AppendInt32((int)(x.Restitution * 100)).Append("%"); restitution.EnableActions(); MyTerminalControlFactory.AddControl(restitution); } var enableBroadcast = new MyTerminalControlCheckbox<MySpaceBall>("EnableBroadCast", MySpaceTexts.Antenna_EnableBroadcast, MySpaceTexts.Antenna_EnableBroadcast); enableBroadcast.Getter = (x) => x.RadioBroadcaster.Enabled; enableBroadcast.Setter = (x, v) => x.m_broadcastSync.Value = v; enableBroadcast.EnableAction(); MyTerminalControlFactory.AddControl(enableBroadcast); }
private static void AddCheckbox(string id, string title, string toolTip, Option opt) { MyTerminalControlCheckbox<MySpaceProjector> control = new MyTerminalControlCheckbox<MySpaceProjector>(id, MyStringId.GetOrCompute(title), MyStringId.GetOrCompute(toolTip)); IMyTerminalValueControl<bool> valueControl = control; valueControl.Getter = block => GetOptionTerminal(block, opt); valueControl.Setter = (block, value) => SetOptionTerminal(block, opt, value); if (Static.TermControls.Count == 0) MyTerminalControlFactory.AddControl(control); Static.TermControls.Add(control); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyShipController>()) return; if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT) { var controlThrusters = new MyTerminalControlCheckbox<MyShipController>("ControlThrusters", MySpaceTexts.TerminalControlPanel_Cockpit_ControlThrusters, MySpaceTexts.TerminalControlPanel_Cockpit_ControlThrusters); controlThrusters.Getter = (x) => x.ControlThrusters; controlThrusters.Setter = (x, v) => x.ControlThrusters = v; controlThrusters.Visible = (x) => x.m_enableShipControl; controlThrusters.Enabled = (x) => x.IsMainCockpitFree(); var action = controlThrusters.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(controlThrusters); var controlWheels = new MyTerminalControlCheckbox<MyShipController>("ControlWheels", MySpaceTexts.TerminalControlPanel_Cockpit_ControlWheels, MySpaceTexts.TerminalControlPanel_Cockpit_ControlWheels); controlWheels.Getter = (x) => x.ControlWheels; controlWheels.Setter = (x, v) => x.ControlWheels = v; controlWheels.Visible = (x) => x.m_enableShipControl; controlWheels.Enabled = (x) => x.GridWheels.WheelCount > 0 && x.IsMainCockpitFree(); action = controlWheels.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(controlWheels); var handBrake = new MyTerminalControlCheckbox<MyShipController>("HandBrake", MySpaceTexts.TerminalControlPanel_Cockpit_Handbrake, MySpaceTexts.TerminalControlPanel_Cockpit_Handbrake); handBrake.Getter = (x) => x.CubeGrid.GridSystems.WheelSystem.HandBrake; handBrake.Setter = (x, v) => x.SwitchHandbrake(); handBrake.Visible = (x) => x.m_enableShipControl; handBrake.Enabled = (x) => x.GridWheels.WheelCount > 0 && x.IsMainCockpitFree(); action = handBrake.EnableAction(); if (action != null) action.Enabled = (x) => x.m_enableShipControl; MyTerminalControlFactory.AddControl(handBrake); } if (MyFakes.ENABLE_DAMPENERS_OVERRIDE) { var dampenersOverride = new MyTerminalControlCheckbox<MyShipController>("DampenersOverride", MySpaceTexts.ControlName_InertialDampeners, MySpaceTexts.ControlName_InertialDampeners); dampenersOverride.Getter = (x) => { return x.EntityThrustComponent != null && x.EntityThrustComponent.DampenersEnabled; }; dampenersOverride.Setter = (x, v) => x.EnableDampingInternal(v, true); dampenersOverride.Visible = (x) => x.m_enableShipControl; var action = dampenersOverride.EnableAction(); if (action != null) { action.Enabled = (x) => x.m_enableShipControl;// x.EnableShipControl; } dampenersOverride.Enabled = (x) => x.IsMainCockpitFree(); MyTerminalControlFactory.AddControl(dampenersOverride); } var mainCockpit = new MyTerminalControlCheckbox<MyShipController>("MainCockpit", MySpaceTexts.TerminalControlPanel_Cockpit_MainCockpit, MySpaceTexts.TerminalControlPanel_Cockpit_MainCockpit); mainCockpit.Getter = (x) => x.IsMainCockpit; mainCockpit.Setter = (x, v) => x.IsMainCockpit = v; mainCockpit.Enabled = (x) => x.IsMainCockpitFree(); mainCockpit.Visible = (x) => x.CanBeMainCockpit(); mainCockpit.EnableAction(); MyTerminalControlFactory.AddControl(mainCockpit); var horizonIndicator = new MyTerminalControlCheckbox<MyShipController>("HorizonIndicator", MySpaceTexts.TerminalControlPanel_Cockpit_HorizonIndicator, MySpaceTexts.TerminalControlPanel_Cockpit_HorizonIndicator); horizonIndicator.Getter = (x) => x.HorizonIndicatorEnabled; horizonIndicator.Setter = (x, v) => x.HorizonIndicatorEnabled = v; horizonIndicator.Enabled = (x) => true; horizonIndicator.Visible = (x) => x.CanHaveHorizon(); horizonIndicator.EnableAction(); MyTerminalControlFactory.AddControl(horizonIndicator); }
static MyAssembler() { if (MyFakes.ENABLE_ASSEMBLER_COOPERATION) { var slaveCheck = new MyTerminalControlCheckbox<MyAssembler>("slaveMode", MySpaceTexts.Assembler_SlaveMode, MySpaceTexts.Assembler_SlaveMode); slaveCheck.Getter = (x) => x.IsSlave; slaveCheck.Setter = (x, v) => { if (x.RepeatEnabled) { x.SyncObject.RequestRepeatEnabled(false); } x.SyncObject.RequestSlaveSwitch(v); }; slaveCheck.EnableAction(); MyTerminalControlFactory.AddControl(slaveCheck); } }
static MyAssembler() { var slaveCheck = new MyTerminalControlCheckbox<MyAssembler>("slaveMode", MySpaceTexts.Assembler_SlaveMode, MySpaceTexts.Assembler_SlaveMode); slaveCheck.Getter = (x) => x.IsSlave; slaveCheck.Setter = (x, v) => { if (x.RepeatEnabled) { x.RequestRepeatEnabled(false); } x.RequestSlaveEnabled(v); }; slaveCheck.EnableAction(); MyTerminalControlFactory.AddControl(slaveCheck); }
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); } }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyGasGenerator>()) return; var useConveyorSystem = new MyTerminalControlOnOffSwitch<MyGasGenerator>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConveyorSystem.Getter = (x) => x.UseConveyorSystem; useConveyorSystem.Setter = (x, v) => x.UseConveyorSystem = v; useConveyorSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConveyorSystem); var refillButton = new MyTerminalControlButton<MyGasGenerator>("Refill", MySpaceTexts.BlockPropertyTitle_Refill, MySpaceTexts.BlockPropertyTitle_Refill, OnRefillButtonPressed); refillButton.Enabled = (x) => x.CanRefill(); refillButton.EnableAction(); MyTerminalControlFactory.AddControl(refillButton); var autoRefill = new MyTerminalControlCheckbox<MyGasGenerator>("Auto-Refill", MySpaceTexts.BlockPropertyTitle_AutoRefill, MySpaceTexts.BlockPropertyTitle_AutoRefill); autoRefill.Getter = (x) => x.AutoRefill; autoRefill.Setter = (x, v) => x.ChangeAutoRefill(v); autoRefill.EnableAction(); MyTerminalControlFactory.AddControl(autoRefill); }
static MyProjector() { if (!MyFakes.ENABLE_PROJECTOR_BLOCK) { return; } var blueprintBtn = new MyTerminalControlButton<MyProjector>("Blueprint", MySpaceTexts.Blueprints, MySpaceTexts.Blank, (p) => p.SelectBlueprint()); blueprintBtn.Enabled = (b) => b.CanProject(); blueprintBtn.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(blueprintBtn); var removeBtn = new MyTerminalControlButton<MyProjector>("Remove", MySpaceTexts.RemoveProjectionButton, MySpaceTexts.Blank, (p) => p.SyncObject.SendRemoveProjection()); removeBtn.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(removeBtn); var keepProjectionToggle = new MyTerminalControlCheckbox<MyProjector>("KeepProjection", MySpaceTexts.KeepProjectionToggle, MySpaceTexts.KeepProjectionTooltip); keepProjectionToggle.Getter = (x) => x.m_keepProjection; keepProjectionToggle.Setter = (x, v) => { x.SyncObject.SendNewKeepProjection(v); }; keepProjectionToggle.EnableAction(); keepProjectionToggle.Enabled = (b) => b.IsProjecting(); MyTerminalControlFactory.AddControl(keepProjectionToggle); //Position var offsetX = new MyTerminalControlSlider<MyProjector>("X", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetX, MySpaceTexts.Blank); offsetX.SetLimits(-50, 50); offsetX.DefaultValue = 0; offsetX.Getter = (x) => x.m_projectionOffset.X; offsetX.Setter = (x, v) => { x.m_projectionOffset.X = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetX.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.X)); offsetX.EnableActions(step: 0.01f); offsetX.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetX); var offsetY = new MyTerminalControlSlider<MyProjector>("Y", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetY, MySpaceTexts.Blank); offsetY.SetLimits(-50, 50); offsetY.DefaultValue = 0; offsetY.Getter = (x) => x.m_projectionOffset.Y; offsetY.Setter = (x, v) => { x.m_projectionOffset.Y = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetY.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.Y)); offsetY.EnableActions(step: 0.01f); offsetY.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetY); var offsetZ = new MyTerminalControlSlider<MyProjector>("Z", MySpaceTexts.BlockPropertyTitle_ProjectionOffsetZ, MySpaceTexts.Blank); offsetZ.SetLimits(-50, 50); offsetZ.DefaultValue = 0; offsetZ.Getter = (x) => x.m_projectionOffset.Z; offsetZ.Setter = (x, v) => { x.m_projectionOffset.Z = Convert.ToInt32(v); x.OnOffsetsChanged(); }; offsetZ.Writer = (x, result) => result.AppendInt32((int)(x.m_projectionOffset.Z)); offsetZ.EnableActions(step: 0.01f); offsetZ.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(offsetZ); //Rotation var rotationX = new MyTerminalControlSlider<MyProjector>("RotX", MySpaceTexts.BlockPropertyTitle_ProjectionRotationX, MySpaceTexts.Blank); rotationX.SetLimits(-2, 2); rotationX.DefaultValue = 0; rotationX.Getter = (x) => x.m_projectionRotation.X; rotationX.Setter = (x, v) => { x.m_projectionRotation.X = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationX.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.X * 90).Append("°"); rotationX.EnableActions(step: 0.2f); rotationX.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationX); var rotationY = new MyTerminalControlSlider<MyProjector>("RotY", MySpaceTexts.BlockPropertyTitle_ProjectionRotationY, MySpaceTexts.Blank); rotationY.SetLimits(-2, 2); rotationY.DefaultValue = 0; rotationY.Getter = (x) => x.m_projectionRotation.Y; rotationY.Setter = (x, v) => { x.m_projectionRotation.Y = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationY.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.Y * 90).Append("°"); rotationY.EnableActions(step: 0.2f); rotationY.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationY); var rotationZ = new MyTerminalControlSlider<MyProjector>("RotZ", MySpaceTexts.BlockPropertyTitle_ProjectionRotationZ, MySpaceTexts.Blank); rotationZ.SetLimits(-2, 2); rotationZ.DefaultValue = 0; rotationZ.Getter = (x) => x.m_projectionRotation.Z; rotationZ.Setter = (x, v) => { x.m_projectionRotation.Z = Convert.ToInt32(v); x.OnOffsetsChanged(); }; rotationZ.Writer = (x, result) => result.AppendInt32((int)x.m_projectionRotation.Z * 90).Append("°"); rotationZ.EnableActions(step: 0.2f); rotationZ.Enabled = (x) => x.IsProjecting(); MyTerminalControlFactory.AddControl(rotationZ); }
static Projector() { MyAPIGateway.Entities.OnCloseAll += Entities_OnCloseAll; MyTerminalControls.Static.CustomControlGetter += CustomControlGetter; MyAPIGateway.Session.DamageSystem.RegisterAfterDamageHandler((int)MyDamageSystemPriority.Low, AfterDamageHandler); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MySpaceProjector>()); AddCheckbox("HoloDisplay", "Holographic Display", "Holographically display this ship and nearby detected ships", Option.OnOff); AddCheckbox("HD_This Ship", "This Ship", "Holographically display this ship", Option.ThisShip); AddCheckbox("HD_Owner", "Owned Ships", "Holographically display ships owned by this block's owner", Option.Owner); AddCheckbox("HD_Faction", "Faction Ships", "Holographically display faction owned ships", Option.Faction); AddCheckbox("HD_Neutral", "Neutral Ships", "Holographically display neutral ships", Option.Neutral); AddCheckbox("HD_Enemy", "Enemy Ships", "Holographically display enemy ships", Option.Enemy); MyTerminalControlSlider<MySpaceProjector> slider = new MyTerminalControlSlider<MySpaceProjector>("HD_RangeDetection", MyStringId.GetOrCompute("Detection Range"), MyStringId.GetOrCompute("Maximum distance of detected entity")); slider.DefaultValue = DefaultRangeDetection; slider.Normalizer = (block, value) => Normalizer(MinRangeDetection, MaxRangeDetection, block, value); slider.Denormalizer = (block, value) => Denormalizer(MinRangeDetection, MaxRangeDetection, block, value); slider.Writer = (block, sb) => WriterMetres(GetRangeDetection, block, sb); IMyTerminalValueControl<float> valueControl = slider; valueControl.Getter = GetRangeDetection; valueControl.Setter = SetRangeDetection; Static.TermControls.Add(slider); slider = new MyTerminalControlSlider<MySpaceProjector>("HD_RadiusHolo", MyStringId.GetOrCompute("Hologram Radius"), MyStringId.GetOrCompute("Maximum radius of hologram")); slider.DefaultValue = DefaultRadiusHolo; slider.Normalizer = (block, value) => Normalizer(MinRadiusHolo, MaxRadiusHolo, block, value); slider.Denormalizer = (block, value) => Denormalizer(MinRadiusHolo, MaxRadiusHolo, block, value); slider.Writer = (block, sb) => WriterMetres(GetRadiusHolo, block, sb); valueControl = slider; valueControl.Getter = GetRadiusHolo; valueControl.Setter = SetRadiusHolo; Static.TermControls.Add(slider); slider = new MyTerminalControlSlider<MySpaceProjector>("HD_EntitySizeScale", MyStringId.GetOrCompute("Entity Size Scale"), MyStringId.GetOrCompute("Larger value causes entities to appear larger")); slider.DefaultValue = DefaultSizeScale; slider.Normalizer = (block, value) => Normalizer(MinSizeScale, MaxSizeScale, block, value); slider.Denormalizer = (block, value) => Denormalizer(MinSizeScale, MaxSizeScale, block, value); slider.Writer = (block, sb) => sb.Append(GetSizeScale(block)); valueControl = slider; valueControl.Getter = GetSizeScale; valueControl.Setter = SetSizeScale; Static.TermControls.Add(slider); Static.TermControls.Add(new MyTerminalControlSeparator<MySpaceProjector>()); MyTerminalControlCheckbox<MySpaceProjector> control = new MyTerminalControlCheckbox<MySpaceProjector>("HD_MouseControls", MyStringId.GetOrCompute("Mouse Controls"), MyStringId.GetOrCompute("Allow manipulation of hologram with mouse. User-specific setting.")); IMyTerminalValueControl<bool> valueControlBool = control; valueControlBool.Getter = block => Static.MouseControls; valueControlBool.Setter = (block, value) => Static.MouseControls = value; Static.TermControls.Add(control); control = new MyTerminalControlCheckbox<MySpaceProjector>("HD_ShowBoundary", MyStringId.GetOrCompute("Show Boundary"), MyStringId.GetOrCompute("Show the boundaries of the hologram. User-specific setting.")); valueControlBool = control; valueControlBool.Getter = block => ShowBoundary; valueControlBool.Setter = (block, value) => ShowBoundary = value; Static.TermControls.Add(control); AddCheckbox("HD_ShowOffset", "Show Offset Controls", "Display controls that can be used to adjust the position of the hologram", Option.ShowOffset); AddOffsetSlider("HD_OffsetX", "Right/Left Offset", "+ve moves hologram to the right, -ve moves hologram to the left", 0); AddOffsetSlider("HD_OffsetY", "Up/Down Offset", "+ve moves hologram up, -ve moves hologram down", 1); AddOffsetSlider("HD_OffsetZ", "Back/Fore Offset", "+ve moves hologram back, -ve moves hologram forward", 2); Static.TermControls_Offset.Add(new MyTerminalControlSeparator<MySpaceProjector>()); AddCheckbox("HD_IntegrityColour", "Colour by Integrity", "Colour blocks according to their integrities", Option.IntegrityColours); IMyTerminalControlColor colour = MyAPIGateway.TerminalControls.CreateControl<IMyTerminalControlColor, IMyProjector>("HD_FullIntegriyColour"); colour.Title = MyStringId.GetOrCompute("Whole"); colour.Tooltip = MyStringId.GetOrCompute("Colour when block has full integrity. User-specific setting."); colour.Getter = (block) => IntegrityFull; colour.Setter = (block, value) => IntegrityFull = value; Static.TermControls_Colours.Add(colour); colour = MyAPIGateway.TerminalControls.CreateControl<IMyTerminalControlColor, IMyProjector>("HD_CriticalIntegriyColour"); colour.Title = MyStringId.GetOrCompute("Func."); colour.Tooltip = MyStringId.GetOrCompute("Colour when block is just above critical integrity. User-specific setting."); colour.Getter = (block) => IntegrityFunctional; colour.Setter = (block, value) => IntegrityFunctional = value; Static.TermControls_Colours.Add(colour); colour = MyAPIGateway.TerminalControls.CreateControl<IMyTerminalControlColor, IMyProjector>("HD_CriticalIntegriyColour"); colour.Title = MyStringId.GetOrCompute("Broken"); colour.Tooltip = MyStringId.GetOrCompute("Colour when block is just below critical integrity. User-specific setting."); colour.Getter = (block) => IntegrityDamaged; colour.Setter = (block, value) => IntegrityDamaged = value; Static.TermControls_Colours.Add(colour); colour = MyAPIGateway.TerminalControls.CreateControl<IMyTerminalControlColor, IMyProjector>("HD_ZeroIntegriyColour"); colour.Title = MyStringId.GetOrCompute("Razed"); colour.Tooltip = MyStringId.GetOrCompute("Colour when block has zero integrity. User-specific setting."); colour.Getter = (block) => IntegrityZero; colour.Setter = (block, value) => IntegrityZero = value; Static.TermControls_Colours.Add(colour); }
static MyWarhead() { var slider = new MyTerminalControlSlider<MyWarhead>("DetonationTime", MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime, MySpaceTexts.TerminalControlPanel_Warhead_DetonationTime); slider.SetLogLimits(1, 60 * 60); slider.DefaultValue = 10; slider.Enabled = (x) => !x.IsCountingDown; slider.Getter = (x) => x.DetonationTime; slider.Setter = (x, v) => MySyncWarhead.SetTimer(x, v * 1000); slider.Writer = (x, sb) => MyValueFormatter.AppendTimeExact(Math.Max(x.m_countdownMs, 1000) / 1000, sb); slider.EnableActions(); MyTerminalControlFactory.AddControl(slider); var startButton = new MyTerminalControlButton<MyWarhead>( "StartCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StartCountdown, (b) => MySyncWarhead.StartCountdown(b)); startButton.EnableAction(); MyTerminalControlFactory.AddControl(startButton); var stopButton = new MyTerminalControlButton<MyWarhead>( "StopCountdown", MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, MySpaceTexts.TerminalControlPanel_Warhead_StopCountdown, (b) => MySyncWarhead.StopCountdown(b)); stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyWarhead>()); var safetyCheckbox = new MyTerminalControlCheckbox<MyWarhead>( "Safety", MySpaceTexts.TerminalControlPanel_Warhead_Safety, MySpaceTexts.TerminalControlPanel_Warhead_SafetyTooltip, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextDisarmed, MySpaceTexts.TerminalControlPanel_Warhead_SwitchTextArmed); safetyCheckbox.Getter = (x) => !x.IsArmed; safetyCheckbox.Setter = (x, v) => MySyncWarhead.SetArm(x, !v); safetyCheckbox.EnableAction(); MyTerminalControlFactory.AddControl(safetyCheckbox); var detonateButton = new MyTerminalControlButton<MyWarhead>( "Detonate", MySpaceTexts.TerminalControlPanel_Warhead_Detonate, MySpaceTexts.TerminalControlPanel_Warhead_Detonate, (b) => MySyncWarhead.Detonate(b)); detonateButton.Enabled = (x) => x.IsArmed; detonateButton.EnableAction(); MyTerminalControlFactory.AddControl(detonateButton); }
static MyMotorStator() { var reverse = new MyTerminalControlButton<MyMotorStator>("Reverse", MySpaceTexts.BlockActionTitle_Reverse, MySpaceTexts.Blank, (b) => b.TargetVelocityRPM = -b.TargetVelocityRPM); reverse.EnableAction(MyTerminalActionIcons.REVERSE); MyTerminalControlFactory.AddControl(reverse); var detach = new MyTerminalControlButton<MyMotorStator>("Detach", MySpaceTexts.BlockActionTitle_Detach, MySpaceTexts.Blank, (b) => b.m_rotorBlockId.Value = new State() { OtherEntityId = null, MasterToSlave = null}); detach.Enabled = (b) => b.m_rotorBlockId.Value.OtherEntityId.HasValue; detach.Visible = (b) => b.m_canBeDetached; var actionDetach = detach.EnableAction(MyTerminalActionIcons.NONE); actionDetach.Enabled = (b) => b.m_canBeDetached; MyTerminalControlFactory.AddControl(detach); var attach = new MyTerminalControlButton<MyMotorStator>("Attach", MySpaceTexts.BlockActionTitle_Attach, MySpaceTexts.Blank, (b) => b.m_rotorBlockId.Value = new State() { OtherEntityId = 0, MasterToSlave = null}); attach.Enabled = (b) => !b.m_rotorBlockId.Value.OtherEntityId.HasValue; attach.Visible = (b) => b.m_canBeDetached; var actionAttach = attach.EnableAction(MyTerminalActionIcons.NONE); actionAttach.Enabled = (b) => b.m_canBeDetached; MyTerminalControlFactory.AddControl(attach); var torque = new MyTerminalControlSlider<MyMotorStator>("Torque", MySpaceTexts.BlockPropertyTitle_MotorTorque, MySpaceTexts.BlockPropertyDescription_MotorTorque); torque.Getter = (x) => x.Torque; torque.Setter = (x, v) => x.Torque.Value = v; torque.DefaultValueGetter = (x) => x.MotorDefinition.MaxForceMagnitude; torque.Writer = (x, result) => MyValueFormatter.AppendTorqueInBestUnit(x.Torque, result); torque.EnableActions(); torque.Denormalizer = (x, v) => x.DenormalizeTorque(v); torque.Normalizer = (x, v) => x.NormalizeTorque(v); MyTerminalControlFactory.AddControl(torque); var brakingTorque = new MyTerminalControlSlider<MyMotorStator>("BrakingTorque", MySpaceTexts.BlockPropertyTitle_MotorBrakingTorque, MySpaceTexts.BlockPropertyDescription_MotorBrakingTorque); brakingTorque.Getter = (x) => x.BrakingTorque; brakingTorque.Setter = (x, v) => x.BrakingTorque.Value = v; brakingTorque.DefaultValue = 0; brakingTorque.Writer = (x, result) => MyValueFormatter.AppendTorqueInBestUnit(x.BrakingTorque, result); brakingTorque.EnableActions(); brakingTorque.Denormalizer = (x, v) => x.DenormalizeTorque(v); brakingTorque.Normalizer = (x, v) => x.NormalizeTorque(v); MyTerminalControlFactory.AddControl(brakingTorque); var targetVelocity = new MyTerminalControlSlider<MyMotorStator>("Velocity", MySpaceTexts.BlockPropertyTitle_MotorTargetVelocity, MySpaceTexts.BlockPropertyDescription_MotorVelocity); targetVelocity.Getter = (x) => x.TargetVelocityRPM; targetVelocity.Setter = (x, v) => x.TargetVelocityRPM = v; targetVelocity.DefaultValue = 0; targetVelocity.Writer = (x, result) => result.Concat(x.TargetVelocityRPM, 2).Append(" rpm"); targetVelocity.EnableActionsWithReset(); targetVelocity.Denormalizer = (x, v) => x.DenormalizeRPM(v); targetVelocity.Normalizer = (x, v) => x.NormalizeRPM(v); MyTerminalControlFactory.AddControl(targetVelocity); var lowerLimit = new MyTerminalControlSlider<MyMotorStator>("LowerLimit", MySpaceTexts.BlockPropertyTitle_MotorMinAngle, MySpaceTexts.BlockPropertyDescription_MotorLowerLimit); lowerLimit.Getter = (x) => x.MinAngle; lowerLimit.Setter = (x, v) => x.MinAngle = v; lowerLimit.DefaultValue = -361; lowerLimit.SetLimits(-361, 360); lowerLimit.Writer = (x, result) => WriteAngle(x.m_minAngle, result); lowerLimit.EnableActions(); MyTerminalControlFactory.AddControl(lowerLimit); var upperLimit = new MyTerminalControlSlider<MyMotorStator>("UpperLimit", MySpaceTexts.BlockPropertyTitle_MotorMaxAngle, MySpaceTexts.BlockPropertyDescription_MotorUpperLimit); upperLimit.Getter = (x) => x.MaxAngle; upperLimit.Setter = (x, v) => x.MaxAngle = v; upperLimit.DefaultValue = 361; upperLimit.SetLimits(-360, 361); upperLimit.Writer = (x, result) => WriteAngle(x.m_maxAngle, result); upperLimit.EnableActions(); MyTerminalControlFactory.AddControl(upperLimit); var rotorDisplacement = new MyTerminalControlSlider<MyMotorStator>("Displacement", MySpaceTexts.BlockPropertyTitle_MotorRotorDisplacement, MySpaceTexts.BlockPropertyDescription_MotorRotorDisplacement); rotorDisplacement.Getter = (x) => x.DummyDisplacement; rotorDisplacement.Setter = (x, v) => x.DummyDisplacement = v; rotorDisplacement.DefaultValueGetter = (x) => 0.0f; rotorDisplacement.SetLimits((x) => x.MotorDefinition.RotorDisplacementMin, (x) => x.MotorDefinition.RotorDisplacementMax); rotorDisplacement.Writer = (x, result) => MyValueFormatter.AppendDistanceInBestUnit(x.DummyDisplacement, result); rotorDisplacement.Enabled = (b) => b.m_isAttached; rotorDisplacement.EnableActions(); MyTerminalControlFactory.AddControl(rotorDisplacement); var weldSpeed = new MyTerminalControlSlider<MyMotorStator>("Weld speed", MySpaceTexts.BlockPropertyTitle_WeldSpeed, MySpaceTexts.Blank); weldSpeed.SetLimits((block) => 0f, (block) => MyGridPhysics.SmallShipMaxLinearVelocity()); weldSpeed.DefaultValueGetter = (block) => MyGridPhysics.LargeShipMaxLinearVelocity() - 5f; weldSpeed.Getter = (x) => (float)Math.Sqrt(x.m_weldSpeedSq); weldSpeed.Setter = (x, v) => x.m_weldSpeedSq.Value = v * v; weldSpeed.Writer = (x, res) => res.AppendDecimal((float)Math.Sqrt(x.m_weldSpeedSq), 1).Append("m/s"); weldSpeed.EnableActions(); MyTerminalControlFactory.AddControl(weldSpeed); var weldForce = new MyTerminalControlCheckbox<MyMotorStator>("Force weld", MySpaceTexts.BlockPropertyTitle_WeldForce, MySpaceTexts.Blank); weldForce.Getter = (x) => x.m_forceWeld; weldForce.Setter = (x, v) => x.m_forceWeld.Value = v; weldForce.EnableAction(); MyTerminalControlFactory.AddControl(weldForce); }