public virtual void RemoveGroup(MyBlockGroup group) { if (this.TerminalSystem != null) { this.TerminalSystem.RemoveGroup(group, false); } }
public virtual void AddGroup(MyBlockGroup group) { if (this.TerminalSystem != null) { this.TerminalSystem.AddUpdateGroup(group, false, false); } }
public static string GetIconForTerminalGroup(MyBlockGroup group) { string output = "Textures\\GUI\\Icons\\GroupIcon.dds"; bool genericType = false; var blocks = group.Blocks; if (blocks == null || blocks.Count == 0) { return(output); } MyDefinitionBase def = blocks[0].BlockDefinition; foreach (var block in blocks) { if (!block.BlockDefinition.Equals(def)) { genericType = true; break; } } if (!genericType) { output = def.Icon; } return(output); }
public void UpdateCubeBlock(MyTerminalBlock block) { if (block == null) { return; } if (m_terminalSystem != null) { m_terminalSystem.BlockAdded -= TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved -= TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded -= TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved -= TerminalSystem_GroupRemoved; } var grid = block.CubeGrid; m_terminalSystem = grid.GridSystems.TerminalSystem; m_tmpGroup = new MyBlockGroup(grid); m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved; SelectBlocks(new MyTerminalBlock[] { block }); }
void previewGrid_OnBlockAdded(MySlimBlock obj) { m_shouldUpdateProjection = true; m_shouldUpdateTexts = true; // Text should always be updated, not only when terminal block is added, armor blocks etc also count! //Update groups if (m_originalGridBuilder == null || !IsProjecting()) { return; } Vector3I transformed = ProjectedGrid.WorldToGridInteger(CubeGrid.GridIntegerToWorld(obj.Position)); var terminalBlock = obj.FatBlock as MyTerminalBlock; if (terminalBlock != null) { foreach (var groupBuilder in m_originalGridBuilder.BlockGroups) { foreach (var block in groupBuilder.Blocks) { if (transformed == block) { //Search if group already exits and add the terminal block to it bool found = false; for (int i = 0; i < CubeGrid.BlockGroups.Count; i++) { var group = CubeGrid.BlockGroups[i]; if (group.Name.ToString() == groupBuilder.Name) { if (!group.Blocks.Contains(terminalBlock)) { MyBlockGroup newGroup = new MyBlockGroup(CubeGrid); newGroup.Name = group.Name; newGroup.Blocks.Add(terminalBlock); newGroup.Blocks.AddList(group.Blocks); CubeGrid.RemoveGroup(group); CubeGrid.AddGroup(newGroup); } found = true; break; } } //Group was not found if (!found) { MyBlockGroup newGroup = new MyBlockGroup(CubeGrid); newGroup.Name = new StringBuilder(groupBuilder.Name); newGroup.Blocks.Add(terminalBlock); CubeGrid.AddGroup(newGroup); } } } } } }
void TerminalSystem_GroupAdded(MyBlockGroup group) { Debug.Assert(m_blockListbox != null); if (m_blockListbox != null) { AddGroupToList(group, 0); } }
public virtual void RemoveGroup(MyBlockGroup group) { if (TerminalSystem != null) { TerminalSystem.GroupRemoved -= m_terminalSystem_GroupRemoved; TerminalSystem.RemoveGroup(group); TerminalSystem.GroupRemoved += m_terminalSystem_GroupRemoved; } }
public virtual void AddGroup(MyBlockGroup group) { if (TerminalSystem != null) { TerminalSystem.GroupAdded -= m_terminalSystem_GroupAdded; TerminalSystem.AddUpdateGroup(group); TerminalSystem.GroupAdded += m_terminalSystem_GroupAdded; } }
private void TerminalSystem_GroupRemoved(MyBlockGroup group) { MyBlockGroup item = this.m_cubeGrid.BlockGroups.Find(x => x.Name.CompareTo(group.Name) == 0); if (item != null) { item.Blocks.Clear(); this.m_cubeGrid.BlockGroups.Remove(item); this.m_cubeGrid.ModifyGroup(item); } }
private void AddGroupToList(MyBlockGroup group, int?position = null) { foreach (var it in m_blockListbox.Items) { if (it.UserData == group) { return; } } var item = new MyGuiControlListbox.Item(userData: group); item.Text.Clear().Append("*").AppendStringBuilder(group.Name).Append("*"); m_blockListbox.Add(item, position); }
void TerminalSystem_GroupRemoved(MyBlockGroup group) { Debug.Assert(m_blockListbox != null); if (m_blockListbox != null) { foreach (var item in m_blockListbox.Items) { if (item.UserData == group) { m_blockListbox.Items.Remove(item); break; } } } }
private void TerminalSystem_GroupRemoved(MyBlockGroup group) { if (group.CubeGrid != null && group.CubeGrid != m_cubeGrid) { return; } foreach (var g in m_cubeGrid.BlockGroups) { if (g.Name.CompareTo(group.Name) == 0) { Debug.Assert(g != group, "TerminalSystem should have own group copy"); g.Blocks.Clear(); m_cubeGrid.BlockGroups.Remove(g); m_cubeGrid.ModifyGroup(g); break; } } }
private void TerminalSystem_GroupAdded(MyBlockGroup group) { foreach (var g in m_cubeGrid.BlockGroups) { if (g.Name.CompareTo(group.Name) == 0) { var oldCount = g.Blocks.Count; g.Blocks.Clear(); foreach (var b in group.Blocks) { if (b.CubeGrid == m_cubeGrid) { g.Blocks.Add(b); } } if (oldCount != g.Blocks.Count) { m_cubeGrid.ModifyGroup(g); } if (g.Blocks.Count == 0) { m_cubeGrid.BlockGroups.Remove(g); } return; } } var gr = new MyBlockGroup(m_cubeGrid); gr.Name.AppendStringBuilder(group.Name); foreach (var b in group.Blocks) { if (b.CubeGrid == m_cubeGrid) { gr.Blocks.Add(b); } } if (gr.Blocks.Count > 0) { m_cubeGrid.BlockGroups.Add(gr); m_cubeGrid.ModifyGroup(gr); } }
public static MyToolbarItem ToItem(ToolbarItem msgItem) { MyToolbarItem item = null; if (msgItem.GunId != null) { MyObjectBuilder_ToolbarItemWeapon data = MyToolbarItemFactory.WeaponObjectBuilder(); data.defId = msgItem.GunId.Value; item = MyToolbarItemFactory.CreateToolbarItem(data); } else if (string.IsNullOrEmpty(msgItem.GroupName)) { MyTerminalBlock block; if (Sandbox.Game.Entities.MyEntities.TryGetEntityById <MyTerminalBlock>(msgItem.EntityID, out block, false)) { MyObjectBuilder_ToolbarItemTerminalBlock data = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block); data._Action = msgItem.Action; data.Parameters = msgItem.Parameters; item = MyToolbarItemFactory.CreateToolbarItem(data); } } else { MyCubeBlock block2; if (Sandbox.Game.Entities.MyEntities.TryGetEntityById <MyCubeBlock>(msgItem.EntityID, out block2, false)) { string groupName = msgItem.GroupName; MyBlockGroup group = block2.CubeGrid.GridSystems.TerminalSystem.BlockGroups.Find(x => x.Name.ToString() == groupName); if (group != null) { MyObjectBuilder_ToolbarItemTerminalGroup data = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(group); data._Action = msgItem.Action; data.Parameters = msgItem.Parameters; data.BlockEntityId = msgItem.EntityID; item = MyToolbarItemFactory.CreateToolbarItem(data); } } } return(item); }
private void TerminalSystem_GroupAdded(MyBlockGroup group) { MyBlockGroup item = this.m_cubeGrid.BlockGroups.Find(x => x.Name.CompareTo(group.Name) == 0); if (group.Blocks.FirstOrDefault <MyTerminalBlock>(x => (this.m_cubeGrid.GetFatBlocks().IndexOf(x) != -1)) != null) { if (item == null) { item = new MyBlockGroup(); item.Name.AppendStringBuilder(group.Name); this.m_cubeGrid.BlockGroups.Add(item); } item.Blocks.Clear(); foreach (MyTerminalBlock block in group.Blocks) { if (ReferenceEquals(block.CubeGrid, this.m_cubeGrid)) { item.Blocks.Add(block); } } this.m_cubeGrid.ModifyGroup(item); } }
void groupSave_ButtonClicked(MyGuiControlButton obj) { bool containsEnemyBlock = false; foreach (var block in m_tmpGroup.Blocks) { if (!block.HasLocalPlayerAccess()) { containsEnemyBlock = true; break; } } if (containsEnemyBlock) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateMessageBox( buttonType: MyMessageBoxButtonsType.OK, messageCaption: MyTexts.Get(MySpaceTexts.MessageBoxCaptionError), messageText: MyTexts.Get(MySpaceTexts.MessageBoxTextCannotCreateGroup) )); } else { Debug.Assert(!string.IsNullOrEmpty(m_groupName.Text)); if (m_groupName.Text != "") { m_currentGroups.Clear(); m_tmpGroup.Name.Clear().Append(m_groupName.Text); m_tmpGroup = m_terminalSystem.AddUpdateGroup(m_tmpGroup); m_currentGroups.Add(m_tmpGroup); m_tmpGroup = new MyBlockGroup(null); CurrentBlocks.AddList(m_currentGroups[0].Blocks); SelectBlocks(); } } }
public int Compare(MyBlockGroup x, MyBlockGroup y) { return(x.Name.CompareTo(y.Name)); }
public void Init(IMyGuiControlsParent controlsParent, MyPlayer controller, MyCubeGrid grid, MyTerminalBlock currentBlock, MyGridColorHelper colorHelper) { m_controlsParent = controlsParent; m_controller = controller; m_colorHelper = colorHelper; if (grid == null) { foreach (var control in controlsParent.Controls) { control.Visible = false; } var label = MyGuiScreenTerminal.CreateErrorLabel(MySpaceTexts.ScreenTerminalError_ShipNotConnected, "ErrorMessage"); controlsParent.Controls.Add(label); return; } m_terminalSystem = grid.GridSystems.TerminalSystem; m_tmpGroup = new MyBlockGroup(grid); m_blockSearch = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearch"); m_blockSearch.TextChanged += blockSearch_TextChanged; m_blockSearchClear = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearchClear"); m_blockSearchClear.ButtonClicked += blockSearchClear_ButtonClicked; m_blockListbox = (MyGuiControlListbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockListbox"); m_blockNameLabel = (MyGuiControlLabel)m_controlsParent.Controls.GetControlByName("BlockNameLabel"); m_blockNameLabel.Text = ""; m_groupName = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("GroupName"); m_groupName.TextChanged += m_groupName_TextChanged; m_showAll = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("ShowAll"); m_showAll.Selected = m_showAllTerminalBlocks; m_showAll.ButtonClicked += showAll_Clicked; m_showAll.SetToolTip(MySpaceTexts.Terminal_ShowAllInTerminal); m_showAll.IconRotation = 0f; m_showAll.Icon = new MyGuiHighlightTexture { Normal = @"Textures\GUI\Controls\button_hide.dds", Highlight = @"Textures\GUI\Controls\button_unhide.dds", SizePx = new Vector2(40f, 40f), }; m_showAll.Size = new Vector2(0, 0); m_showAll.HighlightType = MyGuiControlHighlightType.FORCED; m_showAll.IconOriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP; m_groupSave = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupSave"); m_groupSave.TextEnum = MySpaceTexts.TerminalButton_GroupSave; m_groupSave.TextAlignment = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER; m_groupSave.ButtonClicked += groupSave_ButtonClicked; m_groupDelete = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupDelete"); m_groupDelete.ButtonClicked += groupDelete_ButtonClicked; m_groupDelete.Enabled = false; m_blockListbox.ItemsSelected += blockListbox_ItemSelected; RefreshBlockList(); m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded; m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved; m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded; m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved; if (currentBlock != null) { SelectBlocks(new MyTerminalBlock[] { currentBlock }); } }
public static MyObjectBuilder_ToolbarItemTerminalGroup TerminalGroupObjectBuilderFromGroup(MyBlockGroup group) { MyObjectBuilder_ToolbarItemTerminalGroup output = MyObjectBuilderSerializer.CreateNewObject <MyObjectBuilder_ToolbarItemTerminalGroup>(); output.GroupName = group.Name.ToString(); output.Action = null; return(output); }