public override void AddControls(List <IMyTerminalControl> controls) { MyTerminalControlListbox <MyShipController> gpsList = new MyTerminalControlListbox <MyShipController>("GolisGpsList", MyStringId.GetOrCompute("GPS list"), MyStringId.NullOrEmpty, false, 18); gpsList.ListContent = FillWaypointList; gpsList.ItemSelected = OnItemSelected; controls.Add(gpsList); }
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 void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MySoundBlock>()) { return; } var volumeSlider = new MyTerminalControlSlider <MySoundBlock>("VolumeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockVolume, MySpaceTexts.BlockPropertyDescription_SoundBlockVolume); volumeSlider.SetLimits(0, 1.0f); volumeSlider.DefaultValue = 1; volumeSlider.Getter = (x) => x.Volume; volumeSlider.Setter = (x, v) => x.Volume = v; volumeSlider.Writer = (x, result) => result.AppendInt32((int)(x.Volume * 100.0)).Append(" %"); volumeSlider.EnableActions(); MyTerminalControlFactory.AddControl(volumeSlider); var rangeSlider = new MyTerminalControlSlider <MySoundBlock>("RangeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockRange, MySpaceTexts.BlockPropertyDescription_SoundBlockRange); rangeSlider.SetLimits(0, 500); rangeSlider.DefaultValue = 50; rangeSlider.Getter = (x) => x.Range; rangeSlider.Setter = (x, v) => x.Range = v; rangeSlider.Writer = (x, result) => result.AppendInt32((int)x.Range).Append(" m"); rangeSlider.EnableActions(); MyTerminalControlFactory.AddControl(rangeSlider); m_playButton = new MyTerminalControlButton <MySoundBlock>("PlaySound", MySpaceTexts.BlockPropertyTitle_SoundBlockPlay, MySpaceTexts.Blank, (x) => MyMultiplayer.RaiseEvent(x, y => y.PlaySound)); m_playButton.Enabled = (x) => x.IsSoundSelected; m_playButton.EnableAction(); MyTerminalControlFactory.AddControl(m_playButton); m_stopButton = new MyTerminalControlButton <MySoundBlock>("StopSound", MySpaceTexts.BlockPropertyTitle_SoundBlockStop, MySpaceTexts.Blank, (x) => { MyMultiplayer.RaiseEvent(x, y => y.StopSound); x.m_willStartSound = false; }); m_stopButton.Enabled = (x) => x.IsSoundSelected; m_stopButton.EnableAction(); MyTerminalControlFactory.AddControl(m_stopButton); m_loopableTimeSlider = new MyTerminalControlSlider <MySoundBlock>("LoopableSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockLoopTime, MySpaceTexts.Blank); m_loopableTimeSlider.DefaultValue = 1f; m_loopableTimeSlider.Getter = (x) => x.LoopPeriod; m_loopableTimeSlider.Setter = (x, f) => x.LoopPeriod = f; m_loopableTimeSlider.Writer = (x, result) => MyValueFormatter.AppendTimeInBestUnit(x.LoopPeriod, result); m_loopableTimeSlider.Enabled = (x) => x.IsLoopable; m_loopableTimeSlider.Normalizer = (x, f) => x.NormalizeLoopPeriod(f); m_loopableTimeSlider.Denormalizer = (x, f) => x.DenormalizeLoopPeriod(f); m_loopableTimeSlider.EnableActions(); MyTerminalControlFactory.AddControl(m_loopableTimeSlider); var soundsList = new MyTerminalControlListbox <MySoundBlock>("SoundsList", MySpaceTexts.BlockPropertyTitle_SoundBlockSoundList, MySpaceTexts.Blank); soundsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); soundsList.ItemSelected = (x, y) => x.SelectSound(y, true); MyTerminalControlFactory.AddControl(soundsList); }
public RotorPicker(IMyTerminalBlock cockpit, string rotorName, ControlRotorParams rotorParams, SetControlRotors onComplete) { m_block = cockpit; m_onComplete = onComplete; IEnumerable <IMyMotorStator> selected; rotorParams(out selected, out m_sensitivity, out m_trim); m_trim = MathHelper.ToDegrees(m_trim); m_listbox = new MyTerminalControlListbox <MyCockpit>("Arms_RotorPicker", MyStringId.GetOrCompute(rotorName + " Rotors"), MyStringId.NullOrEmpty, true, 14); m_listbox.ListContent = ListContent; m_listbox.ItemSelected = ItemSelected; m_sensitivitySlider = new MyTerminalControlSlider <MyCockpit>("Arms_RotorPickerSensitivity", MyStringId.GetOrCompute("Control Sensitivity"), MyStringId.GetOrCompute("How sensitive the ship will be to input")); m_sensitivitySlider.DefaultValue = 1f; m_sensitivitySlider.Getter = b => m_sensitivity; m_sensitivitySlider.Setter = (b, value) => m_sensitivity = value; m_sensitivitySlider.SetLogLimits(0.01f, 100f); m_sensitivitySlider.Writer = (b, sb) => sb.Append(m_sensitivity); m_trimSlider = new MyTerminalControlSlider <MyCockpit>("Arms_RotorPickerTrim", MyStringId.GetOrCompute("Trim"), MyStringId.GetOrCompute("Default angle of rotors")); m_trimSlider.DefaultValue = 0f; m_trimSlider.Getter = b => m_trim; m_trimSlider.Setter = (b, value) => m_trim = value; m_trimSlider.SetLimits(-45f, 45f); m_trimSlider.Writer = (b, sb) => { sb.Append(m_trim); sb.Append('°'); }; m_save = new MyTerminalControlButton <MyCockpit>("Arms_RotorPickerSave", MyStringId.GetOrCompute("Save & Exit"), MyStringId.NullOrEmpty, SaveAndExit); CubeGridCache cache = CubeGridCache.GetFor(m_block.CubeGrid); if (cache == null) { return; } foreach (IMyMotorStator stator in cache.BlocksOfType(typeof(MyObjectBuilder_MotorStator))) { MyGuiControlListbox.Item item = new MyGuiControlListbox.Item(new StringBuilder(stator.DisplayNameText), userData: stator); m_allItems.Add(item); if (selected.Contains(stator)) { m_selected.Add(item); } } MyTerminalControls.Static.CustomControlGetter += CustomControlGetter; cockpit.RebuildControls(); }
static MySoundBlock() { var volumeSlider = new MyTerminalControlSlider <MySoundBlock>("VolumeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockVolume, MySpaceTexts.BlockPropertyDescription_SoundBlockVolume); volumeSlider.SetLimits(0, 1.0f); volumeSlider.DefaultValue = 1; volumeSlider.Getter = (x) => x.Volume; volumeSlider.Setter = (x, v) => x.SyncObject.SendChangeSoundVolumeRequest(v); volumeSlider.Writer = (x, result) => result.AppendInt32((int)(x.Volume * 100.0)).Append(" %"); volumeSlider.EnableActions(); MyTerminalControlFactory.AddControl(volumeSlider); var rangeSlider = new MyTerminalControlSlider <MySoundBlock>("RangeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockRange, MySpaceTexts.BlockPropertyDescription_SoundBlockRange); rangeSlider.SetLimits(0, 500); rangeSlider.DefaultValue = 50; rangeSlider.Getter = (x) => x.Range; rangeSlider.Setter = (x, v) => x.SyncObject.SendChangeSoundRangeRequest(v); rangeSlider.Writer = (x, result) => result.AppendInt32((int)x.Range).Append(" m"); rangeSlider.EnableActions(); MyTerminalControlFactory.AddControl(rangeSlider); var playButton = new MyTerminalControlButton <MySoundBlock>("PlaySound", MySpaceTexts.BlockPropertyTitle_SoundBlockPlay, MySpaceTexts.Blank, (x) => x.SyncObject.SendPlaySoundRequest()); playButton.Enabled = (x) => x.IsSoundSelected; playButton.EnableAction(); MyTerminalControlFactory.AddControl(playButton); var stopButton = new MyTerminalControlButton <MySoundBlock>("StopSound", MySpaceTexts.BlockPropertyTitle_SoundBlockStop, MySpaceTexts.Blank, (x) => x.SyncObject.SendStopSoundRequest()); stopButton.Enabled = (x) => x.IsSoundSelected; stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); var loopableTimeSlider = new MyTerminalControlSlider <MySoundBlock>("LoopableSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockLoopTime, MySpaceTexts.Blank); loopableTimeSlider.DefaultValue = 1f; loopableTimeSlider.Getter = (x) => x.LoopPeriod; loopableTimeSlider.Setter = (x, f) => x.SyncObject.SendChangeLoopPeriodRequest(f); loopableTimeSlider.Writer = (x, result) => MyValueFormatter.AppendTimeInBestUnit(x.LoopPeriod, result); loopableTimeSlider.Enabled = (x) => x.IsLoopable; loopableTimeSlider.Normalizer = (x, f) => x.NormalizeLoopPeriod(f); loopableTimeSlider.Denormalizer = (x, f) => x.DenormalizeLoopPeriod(f); loopableTimeSlider.EnableActions(); MyTerminalControlFactory.AddControl(loopableTimeSlider); var soundsList = new MyTerminalControlListbox <MySoundBlock>("SoundsList", MySpaceTexts.BlockPropertyTitle_SoundBlockSoundList, MySpaceTexts.Blank); soundsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); soundsList.ItemSelected = (x, y) => x.SelectSound(y, true); MyTerminalControlFactory.AddControl(soundsList); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyConveyorSorter>()) { return; } base.CreateTerminalControls(); 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); }
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); }
protected override void CreateTerminalControls() { if (!MyTerminalControlFactory.AreControlsCreated <MyConveyorSorter>()) { base.CreateTerminalControls(); MyStringId tooltip = new MyStringId(); MyStringId?on = null; on = null; drainAll = new MyTerminalControlOnOffSwitch <MyConveyorSorter>("DrainAll", MySpaceTexts.Terminal_DrainAll, tooltip, on, on); drainAll.Getter = block => block.DrainAll; drainAll.Setter = (block, val) => block.DrainAll = val; drainAll.EnableToggleAction <MyConveyorSorter>(); MyTerminalControlFactory.AddControl <MyConveyorSorter>(drainAll); MyTerminalControlFactory.AddControl <MyConveyorSorter>(new MyTerminalControlSeparator <MyConveyorSorter>()); blacklistWhitelist = new MyTerminalControlCombobox <MyConveyorSorter>("blacklistWhitelist", MySpaceTexts.BlockPropertyTitle_ConveyorSorterFilterMode, MySpaceTexts.Blank); blacklistWhitelist.ComboBoxContent = block => FillBlWlCombo(block); blacklistWhitelist.Getter = block => block.IsWhitelist ? ((MyTerminalValueControl <MyConveyorSorter, long> .GetterDelegate) 1) : ((MyTerminalValueControl <MyConveyorSorter, long> .GetterDelegate) 0); blacklistWhitelist.Setter = (block, val) => block.ChangeBlWl(val == 1L); blacklistWhitelist.SetSerializerBit(); blacklistWhitelist.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl <MyConveyorSorter>(blacklistWhitelist); currentList = new MyTerminalControlListbox <MyConveyorSorter>("CurrentList", MySpaceTexts.BlockPropertyTitle_ConveyorSorterFilterItemsList, MySpaceTexts.Blank, true, 8); currentList.ListContent = (block, list1, list2) => block.FillCurrentList(list1, list2); currentList.ItemSelected = (block, val) => block.SelectFromCurrentList(val); currentList.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl <MyConveyorSorter>(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 <MyConveyorSorter>(removeFromSelectionButton); candidates = new MyTerminalControlListbox <MyConveyorSorter>("candidatesList", MySpaceTexts.BlockPropertyTitle_ConveyorSorterCandidatesList, MySpaceTexts.Blank, true, 8); candidates.ListContent = (block, list1, list2) => block.FillCandidatesList(list1, list2); candidates.ItemSelected = (block, val) => block.SelectCandidate(val); candidates.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl <MyConveyorSorter>(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 <MyConveyorSorter>(addToSelectionButton); } }
public override void AddControls(List <Sandbox.ModAPI.Interfaces.Terminal.IMyTerminalControl> controls) { MyTerminalControlTextbox <MyShipController> textBox = new MyTerminalControlTextbox <MyShipController>("BlockName", MyStringId.GetOrCompute("Block name"), MyStringId.GetOrCompute("Blocks with names containing this string will have their property set.")); textBox.Getter = block => m_targetBlock; textBox.Setter = (block, value) => m_targetBlock = value; controls.Add(textBox); IMyTerminalControlListbox propertyList = new MyTerminalControlListbox <MyShipController>("PropertyList", MyStringId.GetOrCompute("Property"), MyStringId.NullOrEmpty); propertyList.ListContent = ListContent; propertyList.ItemSelected = ItemSelected; MyTerminalControlButton <MyShipController> searchButton = new MyTerminalControlButton <MyShipController>("SearchButton", MyStringId.GetOrCompute("Search"), MyStringId.GetOrCompute("Search for properties"), block => propertyList.UpdateVisual()); controls.Add(searchButton); controls.Add(propertyList); AddValueControl(controls); }
public override void AddControls(List<Sandbox.ModAPI.Interfaces.Terminal.IMyTerminalControl> controls) { MyTerminalControlTextbox<MyShipController> textBox = new MyTerminalControlTextbox<MyShipController>("BlockName", MyStringId.GetOrCompute("Block name"), MyStringId.GetOrCompute("Blocks with names containing this string will run the action.")); textBox.Getter = block => m_targetBlock; textBox.Setter = (block, value) => m_targetBlock = value; controls.Add(textBox); IMyTerminalControlListbox actionList = new MyTerminalControlListbox<MyShipController>("ActionList", MyStringId.GetOrCompute("Action"), MyStringId.NullOrEmpty); actionList.ListContent = ListContent; actionList.ItemSelected = ItemSelected; MyTerminalControlButton<MyShipController> searchButton = new MyTerminalControlButton<MyShipController>("SearchButton", MyStringId.GetOrCompute("Search"), MyStringId.GetOrCompute("Search for actions"), block => actionList.UpdateVisual()); controls.Add(searchButton); controls.Add(actionList); MyTerminalControlTextbox<MyShipController> actionParams = new MyTerminalControlTextbox<MyShipController>("ActionParams", MyStringId.GetOrCompute("Action Params"), MyStringId.GetOrCompute("Comma separated list of parameters to pass to action")); actionParams.Getter = block => m_actionParams; actionParams.Setter = (block, value) => m_actionParams = value; controls.Add(actionParams); }
static MySoundBlock() { var volumeSlider = new MyTerminalControlSlider<MySoundBlock>("VolumeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockVolume, MySpaceTexts.BlockPropertyDescription_SoundBlockVolume); volumeSlider.SetLimits(0, 1.0f); volumeSlider.DefaultValue = 1; volumeSlider.Getter = (x) => x.Volume; volumeSlider.Setter = (x, v) => x.SyncObject.SendChangeSoundVolumeRequest(v); volumeSlider.Writer = (x, result) => result.AppendInt32((int)(x.Volume * 100.0)).Append(" %"); volumeSlider.EnableActions(); MyTerminalControlFactory.AddControl(volumeSlider); var rangeSlider = new MyTerminalControlSlider<MySoundBlock>("RangeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockRange, MySpaceTexts.BlockPropertyDescription_SoundBlockRange); rangeSlider.SetLimits(0, 500); rangeSlider.DefaultValue = 50; rangeSlider.Getter = (x) => x.Range; rangeSlider.Setter = (x, v) => x.SyncObject.SendChangeSoundRangeRequest(v); rangeSlider.Writer = (x, result) => result.AppendInt32((int)x.Range).Append(" m"); rangeSlider.EnableActions(); MyTerminalControlFactory.AddControl(rangeSlider); var playButton = new MyTerminalControlButton<MySoundBlock>("PlaySound", MySpaceTexts.BlockPropertyTitle_SoundBlockPlay, MySpaceTexts.Blank, (x) => x.SyncObject.SendPlaySoundRequest()); playButton.Enabled = (x) => x.IsSoundSelected; playButton.EnableAction(); MyTerminalControlFactory.AddControl(playButton); var stopButton = new MyTerminalControlButton<MySoundBlock>("StopSound", MySpaceTexts.BlockPropertyTitle_SoundBlockStop, MySpaceTexts.Blank, (x) => x.SyncObject.SendStopSoundRequest()); stopButton.Enabled = (x) => x.IsSoundSelected; stopButton.EnableAction(); MyTerminalControlFactory.AddControl(stopButton); var loopableTimeSlider = new MyTerminalControlSlider<MySoundBlock>("LoopableSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockLoopTime, MySpaceTexts.Blank); loopableTimeSlider.DefaultValue = 1f; loopableTimeSlider.Getter = (x) => x.LoopPeriod; loopableTimeSlider.Setter = (x, f) => x.SyncObject.SendChangeLoopPeriodRequest(f); loopableTimeSlider.Writer = (x, result) => MyValueFormatter.AppendTimeInBestUnit(x.LoopPeriod, result); loopableTimeSlider.Enabled = (x) => x.IsLoopable; loopableTimeSlider.Normalizer = (x, f) => x.NormalizeLoopPeriod(f); loopableTimeSlider.Denormalizer = (x, f) => x.DenormalizeLoopPeriod(f); loopableTimeSlider.EnableActions(); MyTerminalControlFactory.AddControl(loopableTimeSlider); var soundsList = new MyTerminalControlListbox<MySoundBlock>("SoundsList", MySpaceTexts.BlockPropertyTitle_SoundBlockSoundList, MySpaceTexts.Blank); soundsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); soundsList.ItemSelected = (x, y) => x.SelectSound(y, true); MyTerminalControlFactory.AddControl(soundsList); }
static MyTextPanel() { var publicTitleField = new MyTerminalControlTextbox <MyTextPanel>("PublicTitle", MySpaceTexts.BlockPropertyTitle_TextPanelPublicTitle, MySpaceTexts.Blank); publicTitleField.Getter = (x) => x.PublicTitle; publicTitleField.Setter = (x, v) => x.SyncObject.SendChangeTitleMessage(v, true); publicTitleField.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(publicTitleField); var showPublicButton = new MyTerminalControlButton <MyTextPanel>("ShowPublicTextPanel", MySpaceTexts.BlockPropertyTitle_TextPanelShowPublicTextPanel, MySpaceTexts.Blank, (x) => x.OpenWindow(true, true, true)); showPublicButton.Enabled = (x) => !x.IsOpen; showPublicButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(showPublicButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var titleField = new MyTerminalControlTextbox <MyTextPanel>("Title", MySpaceTexts.BlockPropertyTitle_TextPanelTitle, MySpaceTexts.Blank); titleField.Getter = (x) => x.PrivateTitle; titleField.Setter = (x, v) => x.SyncObject.SendChangeTitleMessage(v, false); titleField.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(titleField); var showButton = new MyTerminalControlButton <MyTextPanel>("ShowTextPanel", MySpaceTexts.BlockPropertyTitle_TextPanelShowTextPanel, MySpaceTexts.Blank, (x) => x.OpenWindow(true, true, false)); showButton.Enabled = (x) => !x.IsOpen; showButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(showButton); var comboAccess = new MyTerminalControlCombobox <MyTextPanel>("Access", MySpaceTexts.BlockPropertyTitle_TextPanelAccessType, MySpaceTexts.Blank); comboAccess.ComboBoxContent = (x) => FillComboBoxContent(x); comboAccess.Getter = (x) => (long)x.AccessFlag; comboAccess.Setter = (x, y) => x.SyncObject.SendChangeAccessFlagMessage((byte)y); comboAccess.Enabled = (x) => x.OwnerId != 0; MyTerminalControlFactory.AddControl(comboAccess); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var showTextOnScreen = new MyTerminalControlCombobox <MyTextPanel>("ShowTextOnScreen", MySpaceTexts.BlockPropertyTitle_ShowTextOnScreen, MySpaceTexts.Blank); showTextOnScreen.ComboBoxContent = (x) => FillShowOnScreenComboBoxContent(x); showTextOnScreen.Getter = (x) => (long)x.ShowTextFlag; showTextOnScreen.Setter = (x, y) => x.SyncObject.SendShowOnScreenChangeRequest((byte)y); showTextOnScreen.Enabled = (x) => x.OwnerId != 0; MyTerminalControlFactory.AddControl(showTextOnScreen); var changeFontSlider = new MyTerminalControlSlider <MyTextPanel>("FontSize", MySpaceTexts.BlockPropertyTitle_LCDScreenTextSize, MySpaceTexts.Blank); changeFontSlider.SetLimits(0.1f, 10.0f); changeFontSlider.DefaultValue = 1.0f; changeFontSlider.Getter = (x) => x.FontSize; changeFontSlider.Setter = (x, v) => x.SyncObject.SendFontSizeChangeRequest(v); changeFontSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.FontSize, 1)); changeFontSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeFontSlider); var fontColor = new MyTerminalControlColor <MyTextPanel>("FontColor", MySpaceTexts.BlockPropertyTitle_FontColor); fontColor.Getter = (x) => x.FontColor; fontColor.Setter = (x, v) => x.SyncObject.SendChangeFontColorRequest(v); MyTerminalControlFactory.AddControl(fontColor); var backgroundColor = new MyTerminalControlColor <MyTextPanel>("BackgroundColor", MySpaceTexts.BlockPropertyTitle_BackgroundColor); backgroundColor.Getter = (x) => x.BackgroundColor; backgroundColor.Setter = (x, v) => x.SyncObject.SendChangeBackgroundColorRequest(v); MyTerminalControlFactory.AddControl(backgroundColor); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var imagesList = new MyTerminalControlListbox <MyTextPanel>("ImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenDefinitionsTextures, MySpaceTexts.Blank, true); imagesList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); imagesList.ItemSelected = (x, y) => x.SelectImageToDraw(y); MyTerminalControlFactory.AddControl(imagesList); var addToSelectionButton = new MyTerminalControlButton <MyTextPanel>("SelectTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectTextures, MySpaceTexts.Blank, (x) => x.AddImagesToSelection()); MyTerminalControlFactory.AddControl(addToSelectionButton); var changeIntervalSlider = new MyTerminalControlSlider <MyTextPanel>("ChangeIntervalSlider", MySpaceTexts.BlockPropertyTitle_LCDScreenRefreshInterval, MySpaceTexts.Blank); changeIntervalSlider.SetLimits(0, 30.0f); changeIntervalSlider.DefaultValue = 0; changeIntervalSlider.Getter = (x) => x.ChangeInterval; changeIntervalSlider.Setter = (x, v) => x.SyncObject.SendIntervalChangeRequest(v); changeIntervalSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.ChangeInterval, NUM_DECIMALS)).Append(" s"); changeIntervalSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeIntervalSlider); var selectedImagesList = new MyTerminalControlListbox <MyTextPanel>("SelectedImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectedTextures, MySpaceTexts.Blank, true); selectedImagesList.ListContent = (x, list1, list2) => x.FillSelectedListContent(list1, list2); selectedImagesList.ItemSelected = (x, y) => x.SelectImage(y); MyTerminalControlFactory.AddControl(selectedImagesList); var removeSelectedButton = new MyTerminalControlButton <MyTextPanel>("RemoveSelectedTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenRemoveSelectedTextures, MySpaceTexts.Blank, (x) => x.RemoveImagesFromSelection()); MyTerminalControlFactory.AddControl(removeSelectedButton); }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyRemoteControl>()) return; base.CreateTerminalControls(); var controlBtn = new MyTerminalControlButton<MyRemoteControl>("Control", MySpaceTexts.ControlRemote, MySpaceTexts.Blank, (b) => b.RequestControl()); controlBtn.Enabled = r => r.CanControl(); controlBtn.SupportsMultipleBlocks = false; var action = controlBtn.EnableAction(MyTerminalActionIcons.TOGGLE); if (action != null) { action.InvalidToolbarTypes = new List<MyToolbarType> { MyToolbarType.ButtonPanel }; action.ValidForGroups = false; } MyTerminalControlFactory.AddControl(controlBtn); var autoPilotSeparator = new MyTerminalControlSeparator<MyRemoteControl>(); MyTerminalControlFactory.AddControl(autoPilotSeparator); var autoPilot = new MyTerminalControlOnOffSwitch<MyRemoteControl>("AutoPilot", MySpaceTexts.BlockPropertyTitle_AutoPilot, MySpaceTexts.Blank); autoPilot.Getter = (x) => x.m_autoPilotEnabled; autoPilot.Setter = (x, v) => x.SetAutoPilotEnabled(v); autoPilot.Enabled = r => r.CanEnableAutoPilot(); autoPilot.EnableToggleAction(); autoPilot.EnableOnOffActions(); MyTerminalControlFactory.AddControl(autoPilot); var collisionAv = new MyTerminalControlOnOffSwitch<MyRemoteControl>("CollisionAvoidance", MySpaceTexts.BlockPropertyTitle_CollisionAvoidance, MySpaceTexts.Blank); collisionAv.Getter = (x) => x.m_useCollisionAvoidance; collisionAv.Setter = (x, v) => x.SetCollisionAvoidance(v); collisionAv.Enabled = r => true; collisionAv.EnableToggleAction(); collisionAv.EnableOnOffActions(); MyTerminalControlFactory.AddControl(collisionAv); var dockignMode = new MyTerminalControlOnOffSwitch<MyRemoteControl>("DockingMode", MySpaceTexts.BlockPropertyTitle_EnableDockingMode, MySpaceTexts.Blank); dockignMode.Getter = (x) => x.m_dockingModeEnabled; dockignMode.Setter = (x, v) => x.SetDockingMode(v); dockignMode.Enabled = r => r.IsWorking; dockignMode.EnableToggleAction(); dockignMode.EnableOnOffActions(); MyTerminalControlFactory.AddControl(dockignMode); var cameraList = new MyTerminalControlCombobox<MyRemoteControl>("CameraList", MySpaceTexts.BlockPropertyTitle_AssignedCamera, MySpaceTexts.Blank); cameraList.ComboBoxContentWithBlock = (x, list) => x.FillCameraComboBoxContent(list); cameraList.Getter = (x) => (long)x.m_bindedCamera; cameraList.Setter = (x, y) => x.m_bindedCamera.Value = y; MyTerminalControlFactory.AddControl(cameraList); m_cameraList = cameraList; var flightMode = new MyTerminalControlCombobox<MyRemoteControl>("FlightMode", MySpaceTexts.BlockPropertyTitle_FlightMode, MySpaceTexts.Blank); flightMode.ComboBoxContent = (x) => FillFlightModeCombo(x); flightMode.Getter = (x) => (long)x.m_currentFlightMode.Value; flightMode.Setter = (x, v) => x.ChangeFlightMode((FlightMode)v); flightMode.SetSerializerRange((int)MyEnum<FlightMode>.Range.Min, (int)MyEnum<FlightMode>.Range.Max); MyTerminalControlFactory.AddControl(flightMode); var directionCombo = new MyTerminalControlCombobox<MyRemoteControl>("Direction", MySpaceTexts.BlockPropertyTitle_ForwardDirection, MySpaceTexts.Blank); directionCombo.ComboBoxContent = (x) => FillDirectionCombo(x); directionCombo.Getter = (x) => (long)x.m_currentDirection.Value; directionCombo.Setter = (x, v) => x.ChangeDirection((Base6Directions.Direction)v); MyTerminalControlFactory.AddControl(directionCombo); if (MyFakes.ENABLE_VR_REMOTE_BLOCK_AUTOPILOT_SPEED_LIMIT) { var sliderSpeedLimit = new MyTerminalControlSlider<MyRemoteControl>("SpeedLimit", MySpaceTexts.BlockPropertyTitle_RemoteBlockSpeedLimit, MySpaceTexts.BlockPropertyTitle_RemoteBlockSpeedLimit); sliderSpeedLimit.SetLimits(1, 200); sliderSpeedLimit.DefaultValue = MyObjectBuilder_RemoteControl.DEFAULT_AUTOPILOT_SPEED_LIMIT; sliderSpeedLimit.Getter = (x) => x.m_autopilotSpeedLimit; sliderSpeedLimit.Setter = (x, v) => x.m_autopilotSpeedLimit.Value = v; sliderSpeedLimit.Writer = (x, sb) => sb.Append(MyValueFormatter.GetFormatedFloat(x.m_autopilotSpeedLimit, 0)); sliderSpeedLimit.EnableActions(); MyTerminalControlFactory.AddControl(sliderSpeedLimit); } var waypointList = new MyTerminalControlListbox<MyRemoteControl>("WaypointList", MySpaceTexts.BlockPropertyTitle_Waypoints, MySpaceTexts.Blank, true); waypointList.ListContent = (x, list1, list2) => x.FillWaypointList(list1, list2); waypointList.ItemSelected = (x, y) => x.SelectWaypoint(y); if (!MySandboxGame.IsDedicated) { m_waypointGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)waypointList.GetGuiControl()).PropertyControl; } MyTerminalControlFactory.AddControl(waypointList); var toolbarButton = new MyTerminalControlButton<MyRemoteControl>("Open Toolbar", MySpaceTexts.BlockPropertyTitle_AutoPilotToolbarOpen, MySpaceTexts.BlockPropertyPopup_AutoPilotToolbarOpen, delegate(MyRemoteControl self) { var actions = self.m_selectedWaypoints[0].Actions; if (actions != null) { for (int i = 0; i < actions.Length; i++) { if (actions[i] != null) { self.m_actionToolbar.SetItemAtIndex(i, actions[i]); } } } self.m_actionToolbar.ItemChanged += self.Toolbar_ItemChanged; if (MyGuiScreenCubeBuilder.Static == null) { MyToolbarComponent.CurrentToolbar = self.m_actionToolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; self.m_actionToolbar.ItemChanged -= self.Toolbar_ItemChanged; self.m_actionToolbar.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); toolbarButton.Enabled = r => r.m_selectedWaypoints.Count == 1; toolbarButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(toolbarButton); var removeBtn = new MyTerminalControlButton<MyRemoteControl>("RemoveWaypoint", MySpaceTexts.BlockActionTitle_RemoveWaypoint, MySpaceTexts.Blank, (b) => b.RemoveWaypoints()); removeBtn.Enabled = r => r.CanRemoveWaypoints(); removeBtn.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(removeBtn); var moveUp = new MyTerminalControlButton<MyRemoteControl>("MoveUp", MySpaceTexts.BlockActionTitle_MoveWaypointUp, MySpaceTexts.Blank, (b) => b.MoveWaypointsUp()); moveUp.Enabled = r => r.CanMoveWaypointsUp(); moveUp.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(moveUp); var moveDown = new MyTerminalControlButton<MyRemoteControl>("MoveDown", MySpaceTexts.BlockActionTitle_MoveWaypointDown, MySpaceTexts.Blank, (b) => b.MoveWaypointsDown()); moveDown.Enabled = r => r.CanMoveWaypointsDown(); moveDown.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(moveDown); var addButton = new MyTerminalControlButton<MyRemoteControl>("AddWaypoint", MySpaceTexts.BlockActionTitle_AddWaypoint, MySpaceTexts.Blank, (b) => b.AddWaypoints()); addButton.Enabled = r => r.CanAddWaypoints(); addButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(addButton); var gpsList = new MyTerminalControlListbox<MyRemoteControl>("GpsList", MySpaceTexts.BlockPropertyTitle_GpsLocations, MySpaceTexts.Blank, true); gpsList.ListContent = (x, list1, list2) => x.FillGpsList(list1, list2); gpsList.ItemSelected = (x, y) => x.SelectGps(y); if (!MySandboxGame.IsDedicated) { m_gpsGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)gpsList.GetGuiControl()).PropertyControl; } MyTerminalControlFactory.AddControl(gpsList); foreach (var direction in m_directionNames) { var setDirectionAction = new MyTerminalAction<MyRemoteControl>(MyTexts.Get(direction.Value).ToString(), MyTexts.Get(direction.Value), OnAction, null, MyTerminalActionIcons.TOGGLE); setDirectionAction.Enabled = (b) => b.IsWorking; setDirectionAction.ParameterDefinitions.Add(TerminalActionParameter.Get((byte)direction.Key)); MyTerminalControlFactory.AddAction(setDirectionAction); } var resetButton = new MyTerminalControlButton<MyRemoteControl>("Reset", MySpaceTexts.BlockActionTitle_WaypointReset, MySpaceTexts.BlockActionTooltip_WaypointReset, (b) => b.ResetWaypoint()); resetButton.Enabled = r => r.IsWorking; resetButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(resetButton); var copyButton = new MyTerminalControlButton<MyRemoteControl>("Copy", MySpaceTexts.BlockActionTitle_RemoteCopy, MySpaceTexts.Blank, (b) => b.CopyAutopilotSetup()); copyButton.Enabled = r => r.IsWorking; copyButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(copyButton); var pasteButton = new MyTerminalControlButton<MyRemoteControl>("Paste", MySpaceTexts.BlockActionTitle_RemotePaste, MySpaceTexts.Blank, (b) => b.PasteAutopilotSetup()); pasteButton.Enabled = r => r.IsWorking && MyRemoteControl.m_clipboard != null; pasteButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(pasteButton); }
static MyConveyorSorter() { drainAll = new MyTerminalControlOnOffSwitch<MyConveyorSorter>("DrainAll", MySpaceTexts.Terminal_DrainAll); drainAll.Getter = (block) => block.DrainAll; drainAll.Setter = (block, val) => block.ChangeDrainAll(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); 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); 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; ; 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); MyTerminalControlFactory.AddControl(candidates); addToSelectionButton = new MyTerminalControlButton<MyConveyorSorter>("addToSelectionButton", MySpaceTexts.BlockPropertyTitle_ConveyorSorterAdd, MySpaceTexts.Blank, (x) => x.AddToCurrentList()); 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 MyJumpDrive() { var jumpButton = new MyTerminalControlButton <MyJumpDrive>("Jump", MySpaceTexts.BlockActionTitle_Jump, MySpaceTexts.Blank, (x) => x.RequestJump()); jumpButton.Enabled = (x) => x.CanJump; jumpButton.SupportsMultipleBlocks = false; // Can only be called from toolbar of cockpit jumpButton.Visible = (x) => false; var action = jumpButton.EnableAction(MyTerminalActionIcons.TOGGLE); if (action != null) { action.InvalidToolbarTypes = new List <MyToolbarType> { MyToolbarType.ButtonPanel, MyToolbarType.Character, MyToolbarType.Seat }; action.ValidForGroups = false; } MyTerminalControlFactory.AddControl(jumpButton); var recharging = new MyTerminalControlOnOffSwitch <MyJumpDrive>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.Blank); recharging.Getter = (x) => x.m_isRecharging; recharging.Setter = (x, v) => x.m_isRecharging.Value = v; recharging.EnableToggleAction(); recharging.EnableOnOffActions(); MyTerminalControlFactory.AddControl(recharging); var maxDistanceSlider = new MyTerminalControlSlider <MyJumpDrive>("JumpDistance", MySpaceTexts.BlockPropertyTitle_JumpDistance, MySpaceTexts.Blank); maxDistanceSlider.SetLimits(0f, 100f); maxDistanceSlider.DefaultValue = 100f; maxDistanceSlider.Enabled = (x) => x.m_jumpTarget == null; maxDistanceSlider.Getter = (x) => x.m_jumpDistanceRatio; maxDistanceSlider.Setter = (x, v) => { x.m_jumpDistanceRatio.Value = v; }; maxDistanceSlider.Writer = (x, v) => { v.AppendFormatedDecimal((x.m_jumpDistanceRatio / 100f).ToString("P0") + " (", (float)x.ComputeMaxDistance() / 1000f, 0, " km").Append(")"); }; maxDistanceSlider.EnableActions(0.01f); MyTerminalControlFactory.AddControl(maxDistanceSlider); var selectedTarget = new MyTerminalControlListbox <MyJumpDrive>("SelectedTarget", MySpaceTexts.BlockPropertyTitle_DestinationGPS, MySpaceTexts.Blank, false, 1); selectedTarget.ListContent = (x, list1, list2) => x.FillSelectedTarget(list1, list2); MyTerminalControlFactory.AddControl(selectedTarget); var removeBtn = new MyTerminalControlButton <MyJumpDrive>("RemoveBtn", MySpaceTexts.RemoveProjectionButton, MySpaceTexts.Blank, (x) => x.RemoveSelected()); removeBtn.Enabled = (x) => x.CanRemove(); MyTerminalControlFactory.AddControl(removeBtn); var selectBtn = new MyTerminalControlButton <MyJumpDrive>("SelectBtn", MyCommonTexts.SelectBlueprint, MySpaceTexts.Blank, (x) => x.SelectTarget()); selectBtn.Enabled = (x) => x.CanSelect(); MyTerminalControlFactory.AddControl(selectBtn); var gpsList = new MyTerminalControlListbox <MyJumpDrive>("GpsList", MySpaceTexts.BlockPropertyTitle_GpsLocations, MySpaceTexts.Blank, true); gpsList.ListContent = (x, list1, list2) => x.FillGpsList(list1, list2); gpsList.ItemSelected = (x, y) => x.SelectGps(y); MyTerminalControlFactory.AddControl(gpsList); if (!MySandboxGame.IsDedicated) { m_gpsGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)gpsList.GetGuiControl()).PropertyControl; } }
static MyRemoteControl() { var controlBtn = new MyTerminalControlButton<MyRemoteControl>("Control", MySpaceTexts.ControlRemote, MySpaceTexts.Blank, (b) => b.RequestControl()); controlBtn.Enabled = r => r.CanControl(); controlBtn.SupportsMultipleBlocks = false; var action = controlBtn.EnableAction(MyTerminalActionIcons.TOGGLE); if (action != null) { action.InvalidToolbarTypes = new List<MyToolbarType> { MyToolbarType.ButtonPanel }; action.ValidForGroups = false; } MyTerminalControlFactory.AddControl(controlBtn); var autoPilotSeparator = new MyTerminalControlSeparator<MyRemoteControl>(); MyTerminalControlFactory.AddControl(autoPilotSeparator); var autoPilot = new MyTerminalControlOnOffSwitch<MyRemoteControl>("AutoPilot", MySpaceTexts.BlockPropertyTitle_AutoPilot, MySpaceTexts.Blank); autoPilot.Getter = (x) => x.m_autoPilotEnabled; autoPilot.Setter = (x, v) => x.SetAutoPilotEnabled(v); autoPilot.Enabled = r => r.CanEnableAutoPilot(); autoPilot.EnableToggleAction(); autoPilot.EnableOnOffActions(); MyTerminalControlFactory.AddControl(autoPilot); var dockignMode = new MyTerminalControlOnOffSwitch<MyRemoteControl>("DockingMode", MySpaceTexts.BlockPropertyTitle_EnableDockingMode, MySpaceTexts.Blank); dockignMode.Getter = (x) => x.m_dockingModeEnabled; dockignMode.Setter = (x, v) => x.SetDockingMode(v); dockignMode.Enabled = r => r.IsWorking; dockignMode.EnableToggleAction(); dockignMode.EnableOnOffActions(); MyTerminalControlFactory.AddControl(dockignMode); var flightMode = new MyTerminalControlCombobox<MyRemoteControl>("FlightMode", MySpaceTexts.BlockPropertyTitle_FlightMode, MySpaceTexts.Blank); flightMode.ComboBoxContent = (x) => FillFlightModeCombo(x); flightMode.Getter = (x) => (long)x.m_currentFlightMode; flightMode.Setter = (x, v) => x.ChangeFlightMode((FlightMode)v); MyTerminalControlFactory.AddControl(flightMode); var directionCombo = new MyTerminalControlCombobox<MyRemoteControl>("Direction", MySpaceTexts.BlockPropertyTitle_ForwardDirection, MySpaceTexts.Blank); directionCombo.ComboBoxContent = (x) => FillDirectionCombo(x); directionCombo.Getter = (x) => (long)x.m_currentDirection; directionCombo.Setter = (x, v) => x.ChangeDirection((Base6Directions.Direction)v); MyTerminalControlFactory.AddControl(directionCombo); var waypointList = new MyTerminalControlListbox<MyRemoteControl>("WaypointList", MySpaceTexts.BlockPropertyTitle_Waypoints, MySpaceTexts.Blank, true); waypointList.ListContent = (x, list1, list2) => x.FillWaypointList(list1, list2); waypointList.ItemSelected = (x, y) => x.SelectWaypoint(y); if (!MySandboxGame.IsDedicated) { m_waypointGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)waypointList.GetGuiControl()).PropertyControl; } MyTerminalControlFactory.AddControl(waypointList); var toolbarButton = new MyTerminalControlButton<MyRemoteControl>("Open Toolbar", MySpaceTexts.BlockPropertyTitle_AutoPilotToolbarOpen, MySpaceTexts.BlockPropertyPopup_AutoPilotToolbarOpen, delegate(MyRemoteControl self) { var actions = self.m_selectedWaypoints[0].Actions; if (actions != null) { for (int i = 0; i < actions.Length; i++) { if (actions[i] != null) { self.m_actionToolbar.SetItemAtIndex(i, actions[i]); } } } self.m_actionToolbar.ItemChanged += self.Toolbar_ItemChanged; if (MyGuiScreenCubeBuilder.Static == null) { MyToolbarComponent.CurrentToolbar = self.m_actionToolbar; MyGuiScreenBase screen = MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ToolbarConfigScreen, 0, self); MyToolbarComponent.AutoUpdate = false; screen.Closed += (source) => { MyToolbarComponent.AutoUpdate = true; self.m_actionToolbar.ItemChanged -= self.Toolbar_ItemChanged; self.m_actionToolbar.Clear(); }; MyGuiSandbox.AddScreen(screen); } }); toolbarButton.Enabled = r => r.m_selectedWaypoints.Count == 1; toolbarButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(toolbarButton); var removeBtn = new MyTerminalControlButton<MyRemoteControl>("RemoveWaypoint", MySpaceTexts.BlockActionTitle_RemoveWaypoint, MySpaceTexts.Blank, (b) => b.RemoveWaypoints()); removeBtn.Enabled = r => r.CanRemoveWaypoints(); removeBtn.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(removeBtn); var moveUp = new MyTerminalControlButton<MyRemoteControl>("MoveUp", MySpaceTexts.BlockActionTitle_MoveWaypointUp, MySpaceTexts.Blank, (b) => b.MoveWaypointsUp()); moveUp.Enabled = r => r.CanMoveWaypointsUp(); moveUp.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(moveUp); var moveDown = new MyTerminalControlButton<MyRemoteControl>("MoveDown", MySpaceTexts.BlockActionTitle_MoveWaypointDown, MySpaceTexts.Blank, (b) => b.MoveWaypointsDown()); moveDown.Enabled = r => r.CanMoveWaypointsDown(); moveDown.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(moveDown); var addButton = new MyTerminalControlButton<MyRemoteControl>("AddWaypoint", MySpaceTexts.BlockActionTitle_AddWaypoint, MySpaceTexts.Blank, (b) => b.AddWaypoints()); addButton.Enabled = r => r.CanAddWaypoints(); addButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(addButton); var gpsList = new MyTerminalControlListbox<MyRemoteControl>("GpsList", MySpaceTexts.BlockPropertyTitle_GpsLocations, MySpaceTexts.Blank, true); gpsList.ListContent = (x, list1, list2) => x.FillGpsList(list1, list2); gpsList.ItemSelected = (x, y) => x.SelectGps(y); if (!MySandboxGame.IsDedicated) { m_gpsGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)gpsList.GetGuiControl()).PropertyControl; } MyTerminalControlFactory.AddControl(gpsList); foreach (var direction in m_directionNames) { var setDirectionAction = new MyTerminalAction<MyRemoteControl>(MyTexts.Get(direction.Value).ToString(), MyTexts.Get(direction.Value), OnAction, null, MyTerminalActionIcons.TOGGLE); setDirectionAction.Enabled = (b) => b.IsWorking; setDirectionAction.ParameterDefinitions.Add(TerminalActionParameter.Get((byte)direction.Key)); MyTerminalControlFactory.AddAction(setDirectionAction); } var resetButton = new MyTerminalControlButton<MyRemoteControl>("Reset", MySpaceTexts.BlockActionTitle_WaypointReset, MySpaceTexts.BlockActionTooltip_WaypointReset, (b) => b.ResetWaypoint()); resetButton.Enabled = r => r.IsWorking; resetButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(resetButton); var copyButton = new MyTerminalControlButton<MyRemoteControl>("Copy", MySpaceTexts.BlockActionTitle_RemoteCopy, MySpaceTexts.Blank, (b) => b.CopyAutopilotSetup()); copyButton.Enabled = r => r.IsWorking; copyButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(copyButton); var pasteButton = new MyTerminalControlButton<MyRemoteControl>("Paste", MySpaceTexts.BlockActionTitle_RemotePaste, MySpaceTexts.Blank, (b) => b.PasteAutopilotSetup()); pasteButton.Enabled = r => r.IsWorking && MyRemoteControl.m_clipboard != null; pasteButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(pasteButton); }
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<MySoundBlock>()) return; var volumeSlider = new MyTerminalControlSlider<MySoundBlock>("VolumeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockVolume, MySpaceTexts.BlockPropertyDescription_SoundBlockVolume); volumeSlider.SetLimits(0, 1.0f); volumeSlider.DefaultValue = 1; volumeSlider.Getter = (x) => x.Volume; volumeSlider.Setter = (x, v) => x.Volume = v; volumeSlider.Writer = (x, result) => result.AppendInt32((int)(x.Volume * 100.0)).Append(" %"); volumeSlider.EnableActions(); MyTerminalControlFactory.AddControl(volumeSlider); var rangeSlider = new MyTerminalControlSlider<MySoundBlock>("RangeSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockRange, MySpaceTexts.BlockPropertyDescription_SoundBlockRange); rangeSlider.SetLimits(0, 500); rangeSlider.DefaultValue = 50; rangeSlider.Getter = (x) => x.Range; rangeSlider.Setter = (x, v) => x.Range = v; rangeSlider.Writer = (x, result) => result.AppendInt32((int)x.Range).Append(" m"); rangeSlider.EnableActions(); MyTerminalControlFactory.AddControl(rangeSlider); m_playButton = new MyTerminalControlButton<MySoundBlock>("PlaySound", MySpaceTexts.BlockPropertyTitle_SoundBlockPlay, MySpaceTexts.Blank, (x) => MyMultiplayer.RaiseEvent(x, y => y.PlaySound)); m_playButton.Enabled = (x) => x.IsSoundSelected; m_playButton.EnableAction(); MyTerminalControlFactory.AddControl(m_playButton); m_stopButton = new MyTerminalControlButton<MySoundBlock>("StopSound", MySpaceTexts.BlockPropertyTitle_SoundBlockStop, MySpaceTexts.Blank, (x) => { MyMultiplayer.RaiseEvent(x, y => y.StopSound); x.m_willStartSound = false; }); m_stopButton.Enabled = (x) => x.IsSoundSelected; m_stopButton.EnableAction(); MyTerminalControlFactory.AddControl(m_stopButton); m_loopableTimeSlider = new MyTerminalControlSlider<MySoundBlock>("LoopableSlider", MySpaceTexts.BlockPropertyTitle_SoundBlockLoopTime, MySpaceTexts.Blank); m_loopableTimeSlider.DefaultValue = 1f; m_loopableTimeSlider.Getter = (x) => x.LoopPeriod; m_loopableTimeSlider.Setter = (x, f) => x.LoopPeriod = f; m_loopableTimeSlider.Writer = (x, result) => MyValueFormatter.AppendTimeInBestUnit(x.LoopPeriod, result); m_loopableTimeSlider.Enabled = (x) => x.IsLoopable; m_loopableTimeSlider.Normalizer = (x, f) => x.NormalizeLoopPeriod(f); m_loopableTimeSlider.Denormalizer = (x, f) => x.DenormalizeLoopPeriod(f); m_loopableTimeSlider.EnableActions(); MyTerminalControlFactory.AddControl(m_loopableTimeSlider); var soundsList = new MyTerminalControlListbox<MySoundBlock>("SoundsList", MySpaceTexts.BlockPropertyTitle_SoundBlockSoundList, MySpaceTexts.Blank); soundsList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); soundsList.ItemSelected = (x, y) => x.SelectSound(y, true); MyTerminalControlFactory.AddControl(soundsList); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyConveyorSorter>()) return; 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); }
protected override void CreateTerminalControls() { /*MyTerminalControlFactory.RemoveBaseClass<MyLaserAntenna, MyTerminalBlock>(); var customName = new MyTerminalControlTextbox<MyLaserAntenna>("CustomName", MySpaceTexts.Name, MySpaceTexts.Blank); customName.Getter = (x) => x.CustomName; customName.Setter = (x, v) => MySyncBlockHelpers.SendChangeNameRequest(x, v); customName.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(customName);*/ if (MyTerminalControlFactory.AreControlsCreated<MyLaserAntenna>()) return; base.CreateTerminalControls(); idleButton = new MyTerminalControlButton<MyLaserAntenna>("Idle", MySpaceTexts.LaserAntennaIdleButton, MySpaceTexts.Blank, delegate (MyLaserAntenna self) { self.SetIdle(); idleButton.UpdateVisual(); }); idleButton.Enabled = (x) => x.m_state != StateEnum.idle; idleButton.EnableAction(); MyTerminalControlFactory.AddControl(idleButton); //-------------------------------------------------------------------------------------- MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyLaserAntenna>()); var copyCoordsButton = new MyTerminalControlButton<MyLaserAntenna>("CopyCoords", MySpaceTexts.LaserAntennaCopyCoords, MySpaceTexts.LaserAntennaCopyCoordsHelp, delegate (MyLaserAntenna self) { StringBuilder sanitizedName = new StringBuilder(self.DisplayNameText); sanitizedName.Replace(':', ' '); StringBuilder sb = new StringBuilder("GPS:", 256); sb.Append(sanitizedName); sb.Append(":"); sb.Append(Math.Round(self.HeadPos.X, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); sb.Append(Math.Round(self.HeadPos.Y, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); sb.Append(Math.Round(self.HeadPos.Z, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); #if !XB1 Thread thread = new Thread(() => System.Windows.Forms.Clipboard.SetText(sb.ToString())); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); #else Debug.Assert(false, "Not Clipboard support on XB1!"); #endif }); MyTerminalControlFactory.AddControl(copyCoordsButton); var copyTargetCoordsButton = new MyTerminalControlButton<MyLaserAntenna>("CopyTargetCoords", MySpaceTexts.LaserAntennaCopyTargetCoords, MySpaceTexts.LaserAntennaCopyTargetCoordsHelp, delegate (MyLaserAntenna self) { if (self.m_targetId == null) return; StringBuilder sanitizedName = new StringBuilder(self.m_lastKnownTargetName.ToString()); sanitizedName.Replace(':', ' '); StringBuilder sb = new StringBuilder("GPS:", 256); sb.Append(sanitizedName); sb.Append(":"); sb.Append(Math.Round(self.m_targetCoords.X, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); sb.Append(Math.Round(self.m_targetCoords.Y, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); sb.Append(Math.Round(self.m_targetCoords.Z, 2).ToString(System.Globalization.CultureInfo.InvariantCulture)); sb.Append(":"); #if !XB1 Thread thread = new Thread(() => System.Windows.Forms.Clipboard.SetText(sb.ToString())); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); #else Debug.Assert(false, "Not Clipboard support on XB1!"); #endif }); copyTargetCoordsButton.Enabled = (x) => x.m_targetId != null; MyTerminalControlFactory.AddControl(copyTargetCoordsButton); PasteGpsCoords = new MyTerminalControlButton<MyLaserAntenna>("PasteGpsCoords", MySpaceTexts.LaserAntennaPasteGPS, MySpaceTexts.Blank, delegate (MyLaserAntenna self) { Thread thread = new Thread(() => PasteFromClipboard()); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); self.PasteCoordinates(m_clipboardText); }); //PasteGpsCoords.Enabled = (x) => x.P2PTargetCoords; PasteGpsCoords.EnableAction(); MyTerminalControlFactory.AddControl(PasteGpsCoords); gpsCoords = new MyTerminalControlTextbox<MyLaserAntenna>("gpsCoords", MySpaceTexts.LaserAntennaSelectedCoords, MySpaceTexts.Blank); gpsCoords.Getter = (x) => x.m_termGpsName; gpsCoords.Enabled = (x) => false; MyTerminalControlFactory.AddControl(gpsCoords); connectGPS = new MyTerminalControlButton<MyLaserAntenna>("ConnectGPS", MySpaceTexts.LaserAntennaConnectGPS, MySpaceTexts.Blank, delegate (MyLaserAntenna self) { if (self.m_termGpsCoords == null) return;//should not get here anyway self.ConnectToGps(); }); connectGPS.Enabled = (x) => x.CanConnectToGPS(); connectGPS.EnableAction(); MyTerminalControlFactory.AddControl(connectGPS); var isPerm = new MyTerminalControlCheckbox<MyLaserAntenna>("isPerm", MySpaceTexts.LaserAntennaPermanentCheckbox, MySpaceTexts.Blank); isPerm.Getter = (self) => self.m_IsPermanent; isPerm.Setter = (self, v) => { self.ChangePerm(v); }; isPerm.Enabled = (self) => self.State == StateEnum.connected; isPerm.EnableAction(); MyTerminalControlFactory.AddControl(isPerm); //-------------------------------------------------------------------------------------- MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyLaserAntenna>()); receiversList = new MyTerminalControlListbox<MyLaserAntenna>("receiversList", MySpaceTexts.LaserAntennaReceiversList, MySpaceTexts.LaserAntennaReceiversListHelp); receiversList.ListContent = (x, population, selected) => x.PopulatePossibleReceivers(population, selected); receiversList.ItemSelected = (x, y) => x.ReceiverSelected(y); //receiversList.Enabled = (x) => !x.P2PTargetCoords; MyTerminalControlFactory.AddControl(receiversList); ConnectReceiver = new MyTerminalControlButton<MyLaserAntenna>("ConnectReceiver", MySpaceTexts.LaserAntennaConnectButton, MySpaceTexts.Blank, delegate (MyLaserAntenna self) { self.ConnectToId(); }); ConnectReceiver.Enabled = (x) => x.m_selectedEntityId != null; MyTerminalControlFactory.AddControl(ConnectReceiver); }
static void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated<MyTextPanel>()) return; var publicTitleField = new MyTerminalControlTextbox<MyTextPanel>("PublicTitle", MySpaceTexts.BlockPropertyTitle_TextPanelPublicTitle, MySpaceTexts.Blank); publicTitleField.Getter = (x) => x.PublicTitle; publicTitleField.Setter = (x, v) => x.SendChangeTitleMessage(v, true); publicTitleField.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(publicTitleField); var showPublicButton = new MyTerminalControlButton<MyTextPanel>("ShowPublicTextPanel", MySpaceTexts.BlockPropertyTitle_TextPanelShowPublicTextPanel, MySpaceTexts.Blank, (x) => x.OpenWindow(true, true, true)); showPublicButton.Enabled = (x) => !x.IsOpen; showPublicButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(showPublicButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyTextPanel>()); var titleField = new MyTerminalControlTextbox<MyTextPanel>("Title", MySpaceTexts.BlockPropertyTitle_TextPanelTitle, MySpaceTexts.Blank); titleField.Getter = (x) => x.PrivateTitle; titleField.Setter = (x, v) => x.SendChangeTitleMessage(v, false); titleField.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(titleField); var showButton = new MyTerminalControlButton<MyTextPanel>("ShowTextPanel", MySpaceTexts.BlockPropertyTitle_TextPanelShowTextPanel, MySpaceTexts.Blank, (x) => x.OpenWindow(true, true, false)); showButton.Enabled = (x) => !x.IsOpen; showButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(showButton); var comboAccess = new MyTerminalControlCombobox<MyTextPanel>("Access", MySpaceTexts.BlockPropertyTitle_TextPanelAccessType, MySpaceTexts.Blank); comboAccess.ComboBoxContent = (x) => FillComboBoxContent(x); comboAccess.Getter = (x) => (long)x.AccessFlag; comboAccess.Setter = (x, y) => x.AccessFlag = (TextPanelAccessFlag)y; comboAccess.Enabled = (x) => x.OwnerId != 0; comboAccess.SetSerializerRange(0, (int)TextPanelAccessFlag.READ_AND_WRITE_ALL); MyTerminalControlFactory.AddControl(comboAccess); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyTextPanel>()); var showTextOnScreen = new MyTerminalControlCombobox<MyTextPanel>("ShowTextOnScreen", MySpaceTexts.BlockPropertyTitle_ShowTextOnScreen, MySpaceTexts.Blank); showTextOnScreen.ComboBoxContent = (x) => FillShowOnScreenComboBoxContent(x); showTextOnScreen.Getter = (x) => (long)x.ShowTextFlag; showTextOnScreen.Setter = (x, y) => x.ShowTextFlag = (ShowTextOnScreenFlag)y; showTextOnScreen.Enabled = (x) => x.OwnerId != 0; MyTerminalControlFactory.AddControl(showTextOnScreen); var changeFontSlider = new MyTerminalControlSlider<MyTextPanel>("FontSize", MySpaceTexts.BlockPropertyTitle_LCDScreenTextSize, MySpaceTexts.Blank); changeFontSlider.SetLimits(0.1f, 10.0f); changeFontSlider.DefaultValue = 1.0f; changeFontSlider.Getter = (x) => x.FontSize; changeFontSlider.Setter = (x, v) => x.FontSize = v; changeFontSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.FontSize, 1)); changeFontSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeFontSlider); var fontColor = new MyTerminalControlColor<MyTextPanel>("FontColor", MySpaceTexts.BlockPropertyTitle_FontColor); fontColor.Getter = (x) => x.FontColor; fontColor.Setter = (x, v) => x.FontColor = v; MyTerminalControlFactory.AddControl(fontColor); var backgroundColor = new MyTerminalControlColor<MyTextPanel>("BackgroundColor", MySpaceTexts.BlockPropertyTitle_BackgroundColor); backgroundColor.Getter = (x) => x.BackgroundColor; backgroundColor.Setter = (x, v) => x.BackgroundColor = v; MyTerminalControlFactory.AddControl(backgroundColor); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator<MyTextPanel>()); var imagesList = new MyTerminalControlListbox<MyTextPanel>("ImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenDefinitionsTextures, MySpaceTexts.Blank, true); imagesList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); imagesList.ItemSelected = (x, y) => x.SelectImageToDraw(y); MyTerminalControlFactory.AddControl(imagesList); var addToSelectionButton = new MyTerminalControlButton<MyTextPanel>("SelectTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectTextures, MySpaceTexts.Blank, (x) => x.AddImagesToSelection()); MyTerminalControlFactory.AddControl(addToSelectionButton); var changeIntervalSlider = new MyTerminalControlSlider<MyTextPanel>("ChangeIntervalSlider", MySpaceTexts.BlockPropertyTitle_LCDScreenRefreshInterval, MySpaceTexts.Blank); changeIntervalSlider.SetLimits(0, 30.0f); changeIntervalSlider.DefaultValue = 0; changeIntervalSlider.Getter = (x) => x.ChangeInterval; changeIntervalSlider.Setter = (x, v) => x.ChangeInterval = v; changeIntervalSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.ChangeInterval, NUM_DECIMALS)).Append(" s"); changeIntervalSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeIntervalSlider); var selectedImagesList = new MyTerminalControlListbox<MyTextPanel>("SelectedImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectedTextures, MySpaceTexts.Blank, true); selectedImagesList.ListContent = (x, list1, list2) => x.FillSelectedListContent(list1, list2); selectedImagesList.ItemSelected = (x, y) => x.SelectImage(y); MyTerminalControlFactory.AddControl(selectedImagesList); var removeSelectedButton = new MyTerminalControlButton<MyTextPanel>("RemoveSelectedTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenRemoveSelectedTextures, MySpaceTexts.Blank, (x) => x.RemoveImagesFromSelection()); MyTerminalControlFactory.AddControl(removeSelectedButton); }
static MyJumpDrive() { var jumpButton = new MyTerminalControlButton<MyJumpDrive>("Jump", MySpaceTexts.BlockActionTitle_Jump, MySpaceTexts.Blank, (x) => x.RequestJump()); jumpButton.Enabled = (x) => x.CanJump; jumpButton.SupportsMultipleBlocks = false; // Can only be called from toolbar of cockpit jumpButton.Visible = (x) => false; var action = jumpButton.EnableAction(MyTerminalActionIcons.TOGGLE); if (action != null) { action.InvalidToolbarTypes = new List<MyToolbarType> { MyToolbarType.ButtonPanel, MyToolbarType.Character, MyToolbarType.Seat }; action.ValidForGroups = false; } MyTerminalControlFactory.AddControl(jumpButton); var recharging = new MyTerminalControlOnOffSwitch<MyJumpDrive>("Recharge", MySpaceTexts.BlockPropertyTitle_Recharge, MySpaceTexts.Blank); recharging.Getter = (x) => x.m_isRecharging; recharging.Setter = (x, v) => x.m_isRecharging.Value = v; recharging.EnableToggleAction(); recharging.EnableOnOffActions(); MyTerminalControlFactory.AddControl(recharging); var maxDistanceSlider = new MyTerminalControlSlider<MyJumpDrive>("JumpDistance", MySpaceTexts.BlockPropertyTitle_JumpDistance, MySpaceTexts.Blank); maxDistanceSlider.SetLimits(0f, 100f); maxDistanceSlider.DefaultValue = 100f; maxDistanceSlider.Enabled = (x) => x.m_jumpTarget == null; maxDistanceSlider.Getter = (x) => x.m_jumpDistanceRatio; maxDistanceSlider.Setter = (x, v) => { x.m_jumpDistanceRatio.Value = v; }; maxDistanceSlider.Writer = (x, v) => { v.AppendFormatedDecimal((x.m_jumpDistanceRatio / 100f).ToString("P0") + " (", (float)x.ComputeMaxDistance() / 1000f, 0, " km").Append(")"); }; maxDistanceSlider.EnableActions(0.01f); MyTerminalControlFactory.AddControl(maxDistanceSlider); var selectedTarget = new MyTerminalControlListbox<MyJumpDrive>("SelectedTarget", MySpaceTexts.BlockPropertyTitle_DestinationGPS, MySpaceTexts.Blank, false, 1); selectedTarget.ListContent = (x, list1, list2) => x.FillSelectedTarget(list1, list2); MyTerminalControlFactory.AddControl(selectedTarget); var removeBtn = new MyTerminalControlButton<MyJumpDrive>("RemoveBtn", MySpaceTexts.RemoveProjectionButton, MySpaceTexts.Blank, (x) => x.RemoveSelected()); removeBtn.Enabled = (x) => x.CanRemove(); MyTerminalControlFactory.AddControl(removeBtn); var selectBtn = new MyTerminalControlButton<MyJumpDrive>("SelectBtn", MyCommonTexts.SelectBlueprint, MySpaceTexts.Blank, (x) => x.SelectTarget()); selectBtn.Enabled = (x) => x.CanSelect(); MyTerminalControlFactory.AddControl(selectBtn); var gpsList = new MyTerminalControlListbox<MyJumpDrive>("GpsList", MySpaceTexts.BlockPropertyTitle_GpsLocations, MySpaceTexts.Blank, true); gpsList.ListContent = (x, list1, list2) => x.FillGpsList(list1, list2); gpsList.ItemSelected = (x, y) => x.SelectGps(y); MyTerminalControlFactory.AddControl(gpsList); if (!MySandboxGame.IsDedicated) { m_gpsGuiControl = (MyGuiControlListbox)((MyGuiControlBlockProperty)gpsList.GetGuiControl()).PropertyControl; } }
protected override void CreateTerminalControls() { if (MyTerminalControlFactory.AreControlsCreated <MyTextPanel>()) { return; } base.CreateTerminalControls(); var publicTitleField = new MyTerminalControlTextbox <MyTextPanel>("Title", MySpaceTexts.BlockPropertyTitle_TextPanelPublicTitle, MySpaceTexts.Blank); publicTitleField.Getter = (x) => x.PublicTitle; publicTitleField.Setter = (x, v) => x.SendChangeTitleMessage(v, true); publicTitleField.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(publicTitleField); var showPublicButton = new MyTerminalControlButton <MyTextPanel>("ShowTextPanel", MySpaceTexts.BlockPropertyTitle_TextPanelShowPublicTextPanel, MySpaceTexts.Blank, (x) => x.OpenWindow(true, true, true)); showPublicButton.Enabled = (x) => !x.IsOpen; showPublicButton.SupportsMultipleBlocks = false; MyTerminalControlFactory.AddControl(showPublicButton); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var showTextOnScreen = new MyTerminalControlOnOffSwitch <MyTextPanel>("ShowTextOnScreen", MySpaceTexts.BlockPropertyTitle_ShowTextOnScreen, MySpaceTexts.Blank); showTextOnScreen.Getter = (x) => x.ShowTextFlag != ShowTextOnScreenFlag.NONE; showTextOnScreen.Setter = (x, y) => x.ShowTextFlag = y ? ShowTextOnScreenFlag.PUBLIC : ShowTextOnScreenFlag.NONE; MyTerminalControlFactory.AddControl(showTextOnScreen); var comboFont = new MyTerminalControlCombobox <MyTextPanel>("Font", MySpaceTexts.BlockPropertyTitle_Font, MySpaceTexts.Blank); comboFont.ComboBoxContent = (x) => FillFontComboBoxContent(x); comboFont.Getter = (x) => (long)x.Font.SubtypeId; comboFont.Setter = (x, y) => x.Font = new MyDefinitionId(typeof(MyObjectBuilder_FontDefinition), MyStringHash.TryGet((int)y)); MyTerminalControlFactory.AddControl(comboFont); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var changeFontSlider = new MyTerminalControlSlider <MyTextPanel>("FontSize", MySpaceTexts.BlockPropertyTitle_LCDScreenTextSize, MySpaceTexts.Blank); changeFontSlider.SetLimits(0.1f, 10.0f); changeFontSlider.DefaultValue = 1.0f; changeFontSlider.Getter = (x) => x.FontSize; changeFontSlider.Setter = (x, v) => x.FontSize = v; changeFontSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.FontSize, NUM_DECIMALS)); changeFontSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeFontSlider); var fontColor = new MyTerminalControlColor <MyTextPanel>("FontColor", MySpaceTexts.BlockPropertyTitle_FontColor); fontColor.Getter = (x) => x.FontColor; fontColor.Setter = (x, v) => x.FontColor = v; MyTerminalControlFactory.AddControl(fontColor); var backgroundColor = new MyTerminalControlColor <MyTextPanel>("BackgroundColor", MySpaceTexts.BlockPropertyTitle_BackgroundColor); backgroundColor.Getter = (x) => x.BackgroundColor; backgroundColor.Setter = (x, v) => x.BackgroundColor = v; MyTerminalControlFactory.AddControl(backgroundColor); MyTerminalControlFactory.AddControl(new MyTerminalControlSeparator <MyTextPanel>()); var imagesList = new MyTerminalControlListbox <MyTextPanel>("ImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenDefinitionsTextures, MySpaceTexts.Blank, true); imagesList.ListContent = (x, list1, list2) => x.FillListContent(list1, list2); imagesList.ItemSelected = (x, y) => x.SelectImageToDraw(y); MyTerminalControlFactory.AddControl(imagesList); var addToSelectionButton = new MyTerminalControlButton <MyTextPanel>("SelectTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectTextures, MySpaceTexts.Blank, (x) => x.AddImagesToSelection()); MyTerminalControlFactory.AddControl(addToSelectionButton); var changeIntervalSlider = new MyTerminalControlSlider <MyTextPanel>("ChangeIntervalSlider", MySpaceTexts.BlockPropertyTitle_LCDScreenRefreshInterval, MySpaceTexts.Blank); changeIntervalSlider.SetLimits(0, 30.0f); changeIntervalSlider.DefaultValue = 0; changeIntervalSlider.Getter = (x) => x.ChangeInterval; changeIntervalSlider.Setter = (x, v) => x.ChangeInterval = v; changeIntervalSlider.Writer = (x, result) => result.Append(MyValueFormatter.GetFormatedFloat(x.ChangeInterval, NUM_DECIMALS)).Append(" s"); changeIntervalSlider.EnableActions(); MyTerminalControlFactory.AddControl(changeIntervalSlider); var selectedImagesList = new MyTerminalControlListbox <MyTextPanel>("SelectedImageList", MySpaceTexts.BlockPropertyTitle_LCDScreenSelectedTextures, MySpaceTexts.Blank, true); selectedImagesList.ListContent = (x, list1, list2) => x.FillSelectedListContent(list1, list2); selectedImagesList.ItemSelected = (x, y) => x.SelectImage(y); MyTerminalControlFactory.AddControl(selectedImagesList); var removeSelectedButton = new MyTerminalControlButton <MyTextPanel>("RemoveSelectedTextures", MySpaceTexts.BlockPropertyTitle_LCDScreenRemoveSelectedTextures, MySpaceTexts.Blank, (x) => x.RemoveImagesFromSelection()); MyTerminalControlFactory.AddControl(removeSelectedButton); }