protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyCameraBlock>()) { return; } base.CreateTerminalControls(); var viewBtn = new MyTerminalControlButton <MyCameraBlock>("View", MySpaceTexts.BlockActionTitle_View, MySpaceTexts.Blank, (b) => b.RequestSetView()); viewBtn.Enabled = (b) => b.CanUse(); viewBtn.SupportsMultipleBlocks = false; var action = viewBtn.EnableAction(MyTerminalActionIcons.TOGGLE); if (action != null) { action.InvalidToolbarTypes = new List <MyToolbarType> { MyToolbarType.ButtonPanel }; action.ValidForGroups = false; } MyTerminalControlFactory.AddControl(viewBtn); var controlName = MyInput.Static.GetGameControl(MyControlsSpace.USE).GetControlButtonName(MyGuiInputDeviceEnum.Keyboard); m_hudNotification = new MyHudNotification(MySpaceTexts.NotificationHintPressToExitCamera); m_hudNotification.SetTextFormatArguments(controlName); }
public StaticVariables() { Logger.DebugLog("entered", Logger.severity.TRACE); TerminalControlHelper.EnsureTerminalControlCreated <MyProgrammableBlock>(); MyTerminalAction <MyProgrammableBlock> programmable_sendMessage = new MyTerminalAction <MyProgrammableBlock>("SendMessage", new StringBuilder("Send Message"), "Textures\\GUI\\Icons\\Actions\\Start.dds") { ValidForGroups = false, ActionWithParameters = ProgrammableBlock_SendMessage }; programmable_sendMessage.ParameterDefinitions.Add(Ingame.TerminalActionParameter.Get(string.Empty)); programmable_sendMessage.ParameterDefinitions.Add(Ingame.TerminalActionParameter.Get(string.Empty)); programmable_sendMessage.ParameterDefinitions.Add(Ingame.TerminalActionParameter.Get(string.Empty)); MyTerminalControlFactory.AddAction(programmable_sendMessage); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyProgrammableBlock>()); handleDetected = new MyTerminalControlOnOffSwitch <MyProgrammableBlock>("HandleDetected", MyStringId.GetOrCompute("Handle Detected")); new ValueSync <bool, ProgrammableBlock>(handleDetected, (prog) => prog.value_handleDetectedTerminal, (prog, value) => prog.value_handleDetectedTerminal = value); MyTerminalControlFactory.AddControl(handleDetected); blockCountList = new MyTerminalControlTextbox <MyProgrammableBlock>("BlockCounts", MyStringId.GetOrCompute("Blocks to Count"), MyStringId.GetOrCompute("Comma separated list of blocks to count")); new StringBuilderSync <ProgrammableBlock>(blockCountList, (prog) => prog.value_blockCountList, (prog, value) => { prog.value_blockCountList = value; prog.m_blockCountList_btl = new BlockTypeList(prog.m_blockCountList_sb.ToString().LowerRemoveWhitespace().Split(',')); }); MyTerminalControlFactory.AddControl(blockCountList); }
/// <summary> /// Control creation was moved from the static ctor into this static function. Control creation should still be static, but static ctors /// only ever get called once, which means we can never modify these controls (remove), since they will be removed forever. All classes /// that inherit MyTerminalBlock should put terminal control creation in a function called CreateTerminalControls, as MyTerminalControlFactory /// will properly ensure their base classes' controls are added in. I can't make this virtual because terminal controls don't deal with instances /// directly (this should probably change) /// </summary> static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyTerminalBlock>()) { return; } var show = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.m_showInTerminal; show.Setter = (x, v) => x.ShowInTerminal = v; MyTerminalControlFactory.AddControl(show); var showConfig = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowInToolbarConfig", MySpaceTexts.Terminal_ShowInToolbarConfig, MySpaceTexts.Terminal_ShowInToolbarConfigToolTip); showConfig.Getter = (x) => x.m_showInToolbarConfig; showConfig.Setter = (x, v) => x.ShowInToolbarConfig = v; MyTerminalControlFactory.AddControl(showConfig); var customName = new MyTerminalControlTextbox <MyTerminalBlock>("Name", MyCommonTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => x.SetCustomName(v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName); var onOffSwitch = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowOnHUD", MySpaceTexts.Terminal_ShowOnHUD, MySpaceTexts.Terminal_ShowOnHUDToolTip); onOffSwitch.Getter = (x) => x.ShowOnHUD; onOffSwitch.Setter = (x, v) => x.ShowOnHUD = v; MyTerminalControlFactory.AddControl(onOffSwitch); }
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 <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); }
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 MyProgrammableBlock() { var console = new MyTerminalControlButton <MyProgrammableBlock>("Edit", MySpaceTexts.TerminalControlPanel_EditCode, MySpaceTexts.TerminalControlPanel_EditCode_Tooltip, (b) => b.SyncObject.SendOpenEditorRequest(Sync.MyId)); console.Visible = (b) => MyFakes.ENABLE_PROGRAMMABLE_BLOCK && MySession.Static.EnableIngameScripts; MyTerminalControlFactory.AddControl(console); var arg = new MyTerminalControlTextbox <MyProgrammableBlock>("ConsoleCommand", MySpaceTexts.TerminalControlPanel_RunArgument, MySpaceTexts.TerminalControlPanel_RunArgument_ToolTip); arg.Visible = (e) => MyFakes.ENABLE_PROGRAMMABLE_BLOCK && MySession.Static.EnableIngameScripts; arg.Getter = (e) => new StringBuilder(e.TerminalRunArgument); arg.Setter = (e, v) => e.TerminalRunArgument = v.ToString(); MyTerminalControlFactory.AddControl(arg); var terminalRun = new MyTerminalControlButton <MyProgrammableBlock>("TerminalRun", MySpaceTexts.TerminalControlPanel_RunCode, MySpaceTexts.TerminalControlPanel_RunCode_Tooltip, (b) => b.Run()); terminalRun.Visible = (b) => MyFakes.ENABLE_PROGRAMMABLE_BLOCK && MySession.Static.EnableIngameScripts; terminalRun.Enabled = (b) => b.IsWorking == true && b.IsFunctional == true; MyTerminalControlFactory.AddControl(terminalRun); var runAction = new MyTerminalAction <MyProgrammableBlock>("Run", MyTexts.Get(MySpaceTexts.TerminalControlPanel_RunCode), OnRunApplied, null, MyTerminalActionIcons.START); runAction.Enabled = (b) => b.IsWorking == true && b.IsFunctional == true; runAction.DoUserParameterRequest = RequestRunArgument; runAction.ParameterDefinitions.Add(TerminalActionParameter.Get(string.Empty)); MyTerminalControlFactory.AddAction(runAction); }
static MyGasTank() { 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 MyTerminalBlock() { var show = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.m_showInTerminal; show.Setter = (x, v) => x.RequestShowInTerminal(v); MyTerminalControlFactory.AddControl(show); var showConfig = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowInToolbarConfig", MySpaceTexts.Terminal_ShowInToolbarConfig, MySpaceTexts.Terminal_ShowInToolbarConfigToolTip); showConfig.Getter = (x) => x.m_showInToolbarConfig; showConfig.Setter = (x, v) => x.RequestShowInToolbarConfig(v); MyTerminalControlFactory.AddControl(showConfig); var customName = new MyTerminalControlTextbox <MyTerminalBlock>("Name", MySpaceTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => MySyncBlockHelpers.SendChangeNameRequest(x, v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName); var onOffSwitch = new MyTerminalControlOnOffSwitch <MyTerminalBlock>("ShowOnHUD", MySpaceTexts.Terminal_ShowOnHUD, MySpaceTexts.Terminal_ShowOnHUDToolTip); onOffSwitch.Getter = (x) => x.ShowOnHUD; onOffSwitch.Setter = (x, v) => x.RequestShowOnHUD(v); MyTerminalControlFactory.AddControl(onOffSwitch); }
static MyBeacon() { MyTerminalControlFactory.RemoveBaseClass <MyBeacon, MyTerminalBlock>(); var show = new MyTerminalControlOnOffSwitch <MyBeacon>("ShowInTerminal", MySpaceTexts.Terminal_ShowInTerminal, MySpaceTexts.Terminal_ShowInTerminalToolTip); show.Getter = (x) => x.ShowInTerminal; show.Setter = (x, v) => x.RequestShowInTerminal(v); MyTerminalControlFactory.AddControl(show); var showConfig = new MyTerminalControlOnOffSwitch <MyBeacon>("ShowInToolbarConfig", MySpaceTexts.Terminal_ShowInToolbarConfig, MySpaceTexts.Terminal_ShowInToolbarConfigToolTip); showConfig.Getter = (x) => x.ShowInToolbarConfig; showConfig.Setter = (x, v) => x.RequestShowInToolbarConfig(v); MyTerminalControlFactory.AddControl(showConfig); var customName = new MyTerminalControlTextbox <MyBeacon>("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 <MyBeacon>()); var broadcastRadius = new MyTerminalControlSlider <MyBeacon>("Radius", MySpaceTexts.BlockPropertyTitle_BroadcastRadius, MySpaceTexts.BlockPropertyDescription_BroadcastRadius); broadcastRadius.SetLogLimits(1, MyEnergyConstants.MAX_RADIO_POWER_RANGE); broadcastRadius.DefaultValue = 10000; broadcastRadius.Getter = (x) => x.RadioBroadcaster.BroadcastRadius; broadcastRadius.Setter = (x, v) => x.RadioBroadcaster.SyncObject.SendChangeRadioAntennaRequest(v, x.RadioBroadcaster.Enabled); broadcastRadius.Writer = (x, result) => result.Append(new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m")); broadcastRadius.EnableActions(); MyTerminalControlFactory.AddControl(broadcastRadius); }
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); } }
static MyThrust() { float threshold = 0.01f; var thrustOverride = new MyTerminalControlSlider <MyThrust>("Override", MySpaceTexts.BlockPropertyTitle_ThrustOverride, MySpaceTexts.BlockPropertyDescription_ThrustOverride); thrustOverride.Getter = (x) => x.ThrustOverride; thrustOverride.Setter = (x, v) => { float val = v; float limit = x.m_thrustDefinition.ForceMagnitude * threshold; x.SetThrustOverride(val <= limit ? 0 : v); x.SyncObject.SendChangeThrustOverrideRequest(x.ThrustOverride); }; thrustOverride.DefaultValue = 0; thrustOverride.SetLogLimits((x) => x.m_thrustDefinition.ForceMagnitude * 0.01f, (x) => x.m_thrustDefinition.ForceMagnitude); thrustOverride.EnableActions(); thrustOverride.Writer = (x, result) => { if (x.ThrustOverride <= x.m_thrustDefinition.ForceMagnitude * 0.01f) { result.Append(MyTexts.Get(MySpaceTexts.Disabled)); } else { MyValueFormatter.AppendForceInBestUnit(x.ThrustOverride, result); } }; MyTerminalControlFactory.AddControl(thrustOverride); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyThrust>()) { return; } float threshold = 1f; var thrustOverride = new MyTerminalControlSlider <MyThrust>("Override", MySpaceTexts.BlockPropertyTitle_ThrustOverride, MySpaceTexts.BlockPropertyDescription_ThrustOverride); thrustOverride.Getter = (x) => x.m_thrustOverride; thrustOverride.Setter = (x, v) => { x.m_thrustOverride.Value = (v <= threshold ? 0 : v); x.RaisePropertiesChanged(); }; thrustOverride.DefaultValue = 0; thrustOverride.SetLimits((x) => 0f, (x) => 100f); thrustOverride.EnableActions(); thrustOverride.Writer = (x, result) => { if (x.ThrustOverride < 1f) { result.Append(MyTexts.Get(MyCommonTexts.Disabled)); } else { MyValueFormatter.AppendForceInBestUnit(x.ThrustOverride * x.m_thrustComponent.GetLastThrustMultiplier(x), result); } }; MyTerminalControlFactory.AddControl(thrustOverride); }
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); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyBeacon>()) { return; } base.CreateTerminalControls(); //MyTerminalControlFactory.RemoveBaseClass<MyBeacon, MyTerminalBlock>(); // this removed also controls shared with other blocks //removed unnecessary controls var controlList = MyTerminalControlFactory.GetList(typeof(MyBeacon)).Controls; controlList.Remove(controlList[4]); //name controlList.Remove(controlList[4]); //show on HUD var customName = new MyTerminalControlTextbox <MyBeacon>("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 <MyBeacon>()); var broadcastRadius = new MyTerminalControlSlider <MyBeacon>("Radius", MySpaceTexts.BlockPropertyTitle_BroadcastRadius, MySpaceTexts.BlockPropertyDescription_BroadcastRadius); broadcastRadius.SetLogLimits(1, MyEnergyConstants.MAX_RADIO_POWER_RANGE); broadcastRadius.DefaultValue = 10000; broadcastRadius.Getter = (x) => x.RadioBroadcaster.BroadcastRadius; broadcastRadius.Setter = (x, v) => x.m_radius.Value = v; broadcastRadius.Writer = (x, result) => result.Append(new StringBuilder().AppendDecimal(x.RadioBroadcaster.BroadcastRadius, 0).Append(" m")); broadcastRadius.EnableActions(); MyTerminalControlFactory.AddControl(broadcastRadius); }
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); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyPistonBase>()) { return; } var reverse = new MyTerminalControlButton <MyPistonBase>("Reverse", MySpaceTexts.BlockActionTitle_Reverse, MySpaceTexts.Blank, (x) => x.Velocity.Value = -x.Velocity); reverse.EnableAction(MyTerminalActionIcons.REVERSE); MyTerminalControlFactory.AddControl(reverse); var extendAction = new MyTerminalAction <MyPistonBase>("Extend", MyTexts.Get(MySpaceTexts.BlockActionTitle_Extend), OnExtendApplied, null, MyTerminalActionIcons.REVERSE); extendAction.Enabled = (b) => b.IsFunctional == true; MyTerminalControlFactory.AddAction(extendAction); var retractAction = new MyTerminalAction <MyPistonBase>("Retract", MyTexts.Get(MySpaceTexts.BlockActionTitle_Retract), OnRetractApplied, null, MyTerminalActionIcons.REVERSE); retractAction.Enabled = (b) => b.IsFunctional == true; MyTerminalControlFactory.AddAction(retractAction); var velocity = new MyTerminalControlSlider <MyPistonBase>("Velocity", MySpaceTexts.BlockPropertyTitle_Velocity, MySpaceTexts.Blank); velocity.SetLimits((block) => - block.BlockDefinition.MaxVelocity, (block) => block.BlockDefinition.MaxVelocity); velocity.DefaultValue = -0.5f; velocity.Getter = (x) => x.Velocity; velocity.Setter = (x, v) => x.Velocity.Value = v; velocity.Writer = (x, res) => res.AppendDecimal(x.Velocity, 1).Append("m/s"); velocity.EnableActionsWithReset(); MyTerminalControlFactory.AddControl(velocity); var maxDist = new MyTerminalControlSlider <MyPistonBase>("UpperLimit", MySpaceTexts.BlockPropertyTitle_MaximalDistance, MySpaceTexts.Blank); maxDist.SetLimits((block) => block.BlockDefinition.Minimum, (block) => block.BlockDefinition.Maximum); maxDist.DefaultValueGetter = (block) => block.BlockDefinition.Maximum; maxDist.Getter = (x) => x.MaxLimit; maxDist.Setter = (x, v) => x.MaxLimit.Value = v; maxDist.Writer = (x, res) => res.AppendDecimal(x.MaxLimit, 1).Append("m"); maxDist.EnableActions(); MyTerminalControlFactory.AddControl(maxDist); var minDist = new MyTerminalControlSlider <MyPistonBase>("LowerLimit", MySpaceTexts.BlockPropertyTitle_MinimalDistance, MySpaceTexts.Blank); minDist.SetLimits((block) => block.BlockDefinition.Minimum, (block) => block.BlockDefinition.Maximum); minDist.DefaultValueGetter = (block) => block.BlockDefinition.Minimum; minDist.Getter = (x) => x.MinLimit; minDist.Setter = (x, v) => x.MinLimit.Value = v; minDist.Writer = (x, res) => res.AppendDecimal(x.MinLimit, 1).Append("m"); minDist.EnableActions(); MyTerminalControlFactory.AddControl(minDist); var addPistonHead = new MyTerminalControlButton <MyPistonBase>("Add Piston Head", MySpaceTexts.BlockActionTitle_AddPistonHead, MySpaceTexts.BlockActionTooltip_AddPistonHead, (b) => b.RecreateTop()); addPistonHead.Enabled = (b) => (b.m_topBlock == null); addPistonHead.EnableAction(MyTerminalActionIcons.STATION_ON); MyTerminalControlFactory.AddControl(addPistonHead); }
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 <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); } }
public void Install() { if (IsInstalled || IsFaulted) { return; } // Custom terminal control needs to be initialized after game controls otherwise game fails it initialize it's own if (!MyTerminalControlFactory.AreControlsCreated <MyProgrammableBlock>()) { return; } if (MyTerminalControlFactory.GetControls(typeof(MyProgrammableBlock)).Any(x => x.Id == "MDK-Debug-BindScriptDLL")) { return; } IsInstalled = true; var editIndex = FindEditButtonIndex(); if (editIndex < 0) { MyLog.Default.WriteLine($"{Plugin.Ident}: {Resources.ProgrammableBlockExtensions_Install_NoEditButton}"); MyAPIGateway.Utilities.ShowMessage(Plugin.Ident, Resources.ProgrammableBlockExtensions_Install_NoEditButton); IsInstalled = true; IsFaulted = true; return; } var button = new MyTerminalControlButton <MyProgrammableBlock>("MDK-Debug-UnbindScriptDll", MyStringId.GetOrCompute($"{Plugin.Ident}: {Resources.ProgrammableBlockExtensions_Install_UnbindDLLButtonText}"), MyStringId.NullOrEmpty, OnUnbindScriptDll) { Visible = IsUnbindButtonVisible, Enabled = IsUnbindButtonEnabled }; MyTerminalControlFactory.AddControl(editIndex, button); button = new MyTerminalControlButton <MyProgrammableBlock>("MDK-Debug-BindScriptDLL", MyStringId.GetOrCompute($"{Plugin.Ident}: {Resources.ProgrammableBlockExtensions_Install_BindDLLButtonText}"), MyStringId.NullOrEmpty, OnBindScriptDll) { Visible = IsBindButtonVisible, Enabled = IsBindButtonEnabled, }; MyTerminalControlFactory.AddControl(editIndex, button); button = new MyTerminalControlButton <MyProgrammableBlock>("MDK-Debug-AttachDebugger", MyStringId.GetOrCompute($"{Plugin.Ident}: {Resources.ProgrammableBlockExtensions_Install_AttachDebugger}"), MyStringId.NullOrEmpty, OnAttachDebugger) { Visible = IsAttachDebuggerButtonVisible, Enabled = IsAttachDebuggerButtonEnabled }; MyTerminalControlFactory.AddControl(editIndex, button); MySession.OnUnloading += Unload; MyLog.Default.WriteLine($"{Plugin.Ident}: {Resources.ProgrammableBlockExtensions_Install_Ready}"); MyAPIGateway.Utilities.ShowMessage(Plugin.Ident, Resources.ProgrammableBlockExtensions_Install_Ready); }
static MyGravityGenerator() { var fieldWidth = new MyTerminalControlSlider <MyGravityGenerator>("Width", MySpaceTexts.BlockPropertyTitle_GravityFieldWidth, MySpaceTexts.BlockPropertyDescription_GravityFieldWidth); fieldWidth.SetLimits(1, 150); fieldWidth.DefaultValue = 150; fieldWidth.Getter = (x) => x.m_fieldSize.Value.X; fieldWidth.Setter = (x, v) => { Vector3 fieldSize = x.m_fieldSize; fieldSize.X = v; x.m_fieldSize.Value = fieldSize; }; fieldWidth.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.m_fieldSize.Value.X, NUM_DECIMALS)).Append(" m"); fieldWidth.EnableActions(); MyTerminalControlFactory.AddControl(fieldWidth); var fieldHeight = new MyTerminalControlSlider <MyGravityGenerator>("Height", MySpaceTexts.BlockPropertyTitle_GravityFieldHeight, MySpaceTexts.BlockPropertyDescription_GravityFieldHeight); fieldHeight.SetLimits(1, 150); fieldHeight.DefaultValue = 150; fieldHeight.Getter = (x) => x.m_fieldSize.Value.Y; fieldHeight.Setter = (x, v) => { Vector3 fieldSize = x.m_fieldSize; fieldSize.Y = v; x.m_fieldSize.Value = fieldSize; }; fieldHeight.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.m_fieldSize.Value.Y, NUM_DECIMALS)).Append(" m"); fieldHeight.EnableActions(); MyTerminalControlFactory.AddControl(fieldHeight); var fieldDepth = new MyTerminalControlSlider <MyGravityGenerator>("Depth", MySpaceTexts.BlockPropertyTitle_GravityFieldDepth, MySpaceTexts.BlockPropertyDescription_GravityFieldDepth); fieldDepth.SetLimits(1, 150); fieldDepth.DefaultValue = 150; fieldDepth.Getter = (x) => x.m_fieldSize.Value.Z; fieldDepth.Setter = (x, v) => { Vector3 fieldSize = x.m_fieldSize; fieldSize.Z = v; x.m_fieldSize.Value = fieldSize; }; fieldDepth.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.m_fieldSize.Value.Z, NUM_DECIMALS)).Append(" m"); fieldDepth.EnableActions(); MyTerminalControlFactory.AddControl(fieldDepth); var gravityAcceleration = new MyTerminalControlSlider <MyGravityGenerator>("Gravity", MySpaceTexts.BlockPropertyTitle_GravityAcceleration, MySpaceTexts.BlockPropertyDescription_GravityAcceleration); gravityAcceleration.SetLimits(-MyGravityProviderSystem.G, MyGravityProviderSystem.G); gravityAcceleration.DefaultValue = MyGravityProviderSystem.G; gravityAcceleration.Getter = (x) => x.GravityAcceleration; gravityAcceleration.Setter = (x, v) => x.GravityAcceleration = v; gravityAcceleration.Writer = (x, result) => result.AppendDecimal(x.m_gravityAcceleration / MyGravityProviderSystem.G, 2).Append(" G"); gravityAcceleration.EnableActions(); MyTerminalControlFactory.AddControl(gravityAcceleration); }
static MyConveyorSorter() { drainAll = new MyTerminalControlOnOffSwitch <MyConveyorSorter>("DrainAll", MySpaceTexts.Terminal_DrainAll); drainAll.Getter = (block) => block.DrainAll; drainAll.Setter = (block, val) => block.DrainAll = val; drainAll.EnableToggleAction(); MyTerminalControlFactory.AddControl(drainAll); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyConveyorSorter>()); blacklistWhitelist = new MyTerminalControlCombobox <MyConveyorSorter>("blacklistWhitelist", MySpaceTexts.BlockPropertyTitle_ConveyorSorterFilterMode, MySpaceTexts.Blank); blacklistWhitelist.ComboBoxContent = (block) => FillBlWlCombo(block); blacklistWhitelist.Getter = (block) => (long)(block.IsWhitelist ? 1 : 0); blacklistWhitelist.Setter = (block, val) => block.ChangeBlWl(val == 1); blacklistWhitelist.SetSerializerBit(); blacklistWhitelist.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(blacklistWhitelist); currentList = new MyTerminalControlListbox <MyConveyorSorter>("CurrentList", MySpaceTexts.BlockPropertyTitle_ConveyorSorterFilterItemsList, MySpaceTexts.Blank, true); currentList.ListContent = (block, list1, list2) => block.FillCurrentList(list1, list2); currentList.ItemSelected = (block, val) => block.SelectFromCurrentList(val); currentList.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(currentList); removeFromSelectionButton = new MyTerminalControlButton <MyConveyorSorter>("removeFromSelectionButton", MySpaceTexts.BlockPropertyTitle_ConveyorSorterRemove, MySpaceTexts.Blank, (block) => block.RemoveFromCurrentList()); removeFromSelectionButton.Enabled = (x) => x.m_selectedForDelete != null && x.m_selectedForDelete.Count > 0;; removeFromSelectionButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(removeFromSelectionButton); candidates = new MyTerminalControlListbox <MyConveyorSorter>("candidatesList", MySpaceTexts.BlockPropertyTitle_ConveyorSorterCandidatesList, MySpaceTexts.Blank, true); candidates.ListContent = (block, list1, list2) => block.FillCandidatesList(list1, list2); candidates.ItemSelected = (block, val) => block.SelectCandidate(val); candidates.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(candidates); addToSelectionButton = new MyTerminalControlButton <MyConveyorSorter>("addToSelectionButton", MySpaceTexts.BlockPropertyTitle_ConveyorSorterAdd, MySpaceTexts.Blank, (x) => x.AddToCurrentList()); addToSelectionButton.SupportsMultipleBlocks = false; addToSelectionButton.Enabled = (x) => x.m_selectedForAdd != null && x.m_selectedForAdd.Count > 0; MyTerminalControlFactory.AddControl(addToSelectionButton); byte index = 0;//warning: if you shuffle indexes, you will shuffle data in saved games CandidateTypes.Add(++index, new Tuple <MyObjectBuilderType, StringBuilder>(typeof(MyObjectBuilder_AmmoMagazine), MyTexts.Get(MySpaceTexts.DisplayName_ConvSorterTypes_Ammo))); CandidateTypes.Add(++index, new Tuple <MyObjectBuilderType, StringBuilder>(typeof(MyObjectBuilder_Component), MyTexts.Get(MySpaceTexts.DisplayName_ConvSorterTypes_Component))); CandidateTypes.Add(++index, new Tuple <MyObjectBuilderType, StringBuilder>(typeof(MyObjectBuilder_PhysicalGunObject), MyTexts.Get(MySpaceTexts.DisplayName_ConvSorterTypes_HandTool))); CandidateTypes.Add(++index, new Tuple <MyObjectBuilderType, StringBuilder>(typeof(MyObjectBuilder_Ingot), MyTexts.Get(MySpaceTexts.DisplayName_ConvSorterTypes_Ingot))); CandidateTypes.Add(++index, new Tuple <MyObjectBuilderType, StringBuilder>(typeof(MyObjectBuilder_Ore), MyTexts.Get(MySpaceTexts.DisplayName_ConvSorterTypes_Ore))); foreach (var val in CandidateTypes) { CandidateTypesToId.Add(val.Value.Item1, val.Key); } }
static MyShipToolBase() { var useConvSystem = new MyTerminalControlOnOffSwitch <MyShipToolBase>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConvSystem.Getter = (x) => (x as IMyInventoryOwner).UseConveyorSystem; useConvSystem.Setter = (x, v) => MySyncConveyors.SendChangeUseConveyorSystemRequest(x.EntityId, v); useConvSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConvSystem); }
static MyShipDrill() { var useConvSystem = new MyTerminalControlOnOffSwitch <MyShipDrill>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConvSystem.Getter = x => (x).UseConveyorSystem; useConvSystem.Setter = (x, v) => (x).UseConveyorSystem = v; useConvSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConvSystem); }
static MyProductionBlock() { var useConveyorSystem = new MyTerminalControlOnOffSwitch <MyProductionBlock>("UseConveyor", MySpaceTexts.Terminal_UseConveyorSystem); useConveyorSystem.Getter = (x) => x.UseConveyorSystem; useConveyorSystem.Setter = (x, v) => x.UseConveyorSystem = v; useConveyorSystem.EnableToggleAction(); MyTerminalControlFactory.AddControl(useConveyorSystem); }
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); } }
private static void RegisterForTerminalBlock <TValue, TBlock>(string name, TValue defaultValue, Func <TBlock, TValue> getter) where TBlock : MyTerminalBlock { var property = new ProgrammingInfoControl <TBlock, TValue>( name, defaultValue, getter); MyTerminalControlFactory.AddControl(property); }
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 <MyGravityGeneratorSphere>()) { return; } if (MyFakes.ENABLE_GRAVITY_GENERATOR_SPHERE) { var fieldRadius = new MyTerminalControlSlider <MyGravityGeneratorSphere>("Radius", MySpaceTexts.BlockPropertyTitle_GravityFieldRadius, MySpaceTexts.BlockPropertyDescription_GravityFieldRadius); fieldRadius.DefaultValue = DEFAULT_RADIUS; fieldRadius.Getter = (x) => x.m_radius; fieldRadius.Setter = (x, v) => { if (v < x.BlockDefinition.MinRadius) { v = x.BlockDefinition.MinRadius; } x.Radius = v; }; fieldRadius.Normalizer = (x, v) => { if (v == 0) { return(0); } else { return((v - x.BlockDefinition.MinRadius) / (x.BlockDefinition.MaxRadius - x.BlockDefinition.MinRadius)); } }; fieldRadius.Denormalizer = (x, v) => { if (v == 0) { return(0); } else { return(v * (x.BlockDefinition.MaxRadius - x.BlockDefinition.MinRadius) + x.BlockDefinition.MinRadius); } }; fieldRadius.Writer = (x, result) => result.AppendInt32((int)x.m_radius).Append(" m"); fieldRadius.EnableActions(); MyTerminalControlFactory.AddControl(fieldRadius); var gravityAcceleration = new MyTerminalControlSlider <MyGravityGeneratorSphere>("Gravity", MySpaceTexts.BlockPropertyTitle_GravityAcceleration, MySpaceTexts.BlockPropertyDescription_GravityAcceleration); gravityAcceleration.SetLimits(-MyGravityProviderSystem.G, MyGravityProviderSystem.G); gravityAcceleration.DefaultValue = MyGravityProviderSystem.G; gravityAcceleration.Getter = (x) => x.GravityAcceleration; gravityAcceleration.Setter = (x, v) => x.GravityAcceleration = v; gravityAcceleration.Writer = (x, result) => result.AppendDecimal(x.m_gravityAcceleration / MyGravityProviderSystem.G, 2).Append(" G"); gravityAcceleration.EnableActions(); MyTerminalControlFactory.AddControl(gravityAcceleration); } }