Exemplo n.º 1
0
 public virtual void RemoveGroup(MyBlockGroup group)
 {
     if (this.TerminalSystem != null)
     {
         this.TerminalSystem.RemoveGroup(group, false);
     }
 }
Exemplo n.º 2
0
 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);
        }
Exemplo n.º 4
0
        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 });
        }
Exemplo n.º 5
0
        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);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
 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;
     }
 }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
 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;
             }
         }
     }
 }
Exemplo n.º 12
0
 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;
         }
     }
 }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
            }
        }
Exemplo n.º 16
0
        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();
                }
            }
        }
Exemplo n.º 17
0
 public int Compare(MyBlockGroup x, MyBlockGroup y)
 {
     return(x.Name.CompareTo(y.Name));
 }
Exemplo n.º 18
0
        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 });
            }
        }
Exemplo n.º 19
0
        public static MyObjectBuilder_ToolbarItemTerminalGroup TerminalGroupObjectBuilderFromGroup(MyBlockGroup group)
        {
            MyObjectBuilder_ToolbarItemTerminalGroup output = MyObjectBuilderSerializer.CreateNewObject <MyObjectBuilder_ToolbarItemTerminalGroup>();

            output.GroupName = group.Name.ToString();
            output.Action    = null;
            return(output);
        }