void inventoryGrid_ItemClicked(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
        {
            Debug.Assert(control == m_inventoryGrid);

            if (CurrentAssemblerMode == AssemblerMode.Assembling)
            {
                return;
            }

            var gridItem = control.GetItemAt(args.ItemIndex);

            if (gridItem == null)
            {
                return;
            }
            var item = (MyPhysicalInventoryItem)gridItem.UserData;

            var blueprint = MyDefinitionManager.Static.TryGetBlueprintDefinitionByResultId(item.Content.GetId());

            if (blueprint != null)
            {
                var amount = MyInput.Static.IsAnyShiftKeyPressed() ? 100 :
                             MyInput.Static.IsAnyCtrlKeyPressed() ? 10 : 1;
                EnqueueBlueprint(blueprint, amount);
            }
        }
        private void RecreateControls(bool contructor)
        {
            m_toolbarItemsGrid = new MyGuiControlGrid()
            {
                OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM,
                VisualStyle  = MyGuiControlGridStyleEnum.Toolbar,
                ColumnsCount = MyToolbarComponent.CurrentToolbar.SlotCount + 1,
                RowsCount    = 1
            };
            m_toolbarItemsGrid.ItemDoubleClicked             += grid_ItemDoubleClicked;
            m_toolbarItemsGrid.ItemClickedWithoutDoubleClick += grid_ItemClicked;

            m_selectedItemLabel = new MyGuiControlLabel();
            m_colorVariantPanel = new MyGuiControlPanel(size: new Vector2(0.1f, 0.025f));
            m_colorVariantPanel.BackgroundTexture = MyGuiConstants.TEXTURE_GUI_BLANK;

            m_contextMenu             = new MyGuiControlContextMenu();
            m_contextMenu.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM;
            m_contextMenu.Deactivate();
            m_contextMenu.ItemClicked += contextMenu_ItemClicked;

            Elements.Add(m_colorVariantPanel);
            Elements.Add(m_selectedItemLabel);
            Elements.Add(m_toolbarItemsGrid);
            Elements.Add(m_contextMenu);

            m_colorVariantPanel.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_selectedItemLabel.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_toolbarItemsGrid.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_contextMenu.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM;

            RefreshInternals();
        }
示例#3
0
        private void grid_ItemDoubleClicked(MyGuiControlGrid sender, MyGuiControlGrid.EventArgs eventArgs)
        {
            RemoveToolbarItem(eventArgs.ColumnIndex);

            if (m_shownToolbar.IsValidIndex(eventArgs.ColumnIndex))
            {
                m_shownToolbar.ActivateItemAtSlot(eventArgs.ColumnIndex);
            }
        }
示例#4
0
        private void StartDragging(MyDropHandleType dropHandlingType, MyGuiControlGrid gridControl, ref MyGuiControlGrid.EventArgs args)
        {
            m_dragAndDropInfo           = new MyDragAndDropInfo();
            m_dragAndDropInfo.Grid      = gridControl;
            m_dragAndDropInfo.ItemIndex = args.ItemIndex;

            var draggingItem = m_dragAndDropInfo.Grid.GetItemAt(m_dragAndDropInfo.ItemIndex);

            m_dragAndDrop.StartDragging(dropHandlingType, args.Button, draggingItem, m_dragAndDropInfo, includeTooltip: false);
        }
示例#5
0
        private void OnGridMouseOverIndexChanged(MyGuiControlGrid myGuiControlGrid, MyGuiControlGrid.EventArgs eventArgs)
        {
            if (m_gridBlocks.Visible)
            {
                MyGuiControlGrid.Item gridItem = m_gridBlocks.MouseOverItem ?? m_gridBlocks.SelectedItem;

                if (gridItem == null)
                {
                    m_blockInfoList.InitControls(new MyGuiControlBase[] { });
                    return;
                }

                GridItemUserData userData = gridItem.UserData as GridItemUserData;
                if (userData == null)
                {
                    return;
                }

                MyObjectBuilder_ToolbarItemCubeBlock itemData = userData.ItemData as MyObjectBuilder_ToolbarItemCubeBlock;
                if (itemData == null)
                {
                    return;
                }

                MyDefinitionBase definition;
                if (MyDefinitionManager.Static.TryGetDefinition(itemData.DefinitionId, out definition))
                {
                    var group = MyDefinitionManager.Static.GetDefinitionGroup((definition as MyCubeBlockDefinition).BlockPairName);

                    if (MyCubeBuilder.Static.CubeBuilderState.CubeSizeMode == MyCubeSize.Small &&
                        MyCubeBuilder.Static.IsCubeSizeAvailable(group.Small))
                    {
                        m_blockInfoList.InitControls(GenerateBlockInfos(group.Small, ref m_blockInfoStyle));
                    }
                    else if (MyCubeBuilder.Static.CubeBuilderState.CubeSizeMode == MyCubeSize.Large &&
                             MyCubeBuilder.Static.IsCubeSizeAvailable(group.Large))
                    {
                        m_blockInfoList.InitControls(GenerateBlockInfos(group.Large, ref m_blockInfoStyle));
                    }
                    else
                    {
                        bool blockSizeLarge = MyCubeBuilder.Static.CubeBuilderState.CubeSizeMode == MyCubeSize.Large;
                        m_blockInfoList.InitControls(new MyGuiControlBase[]
                        {
                            GenerateSizeInfoLabel(blockSizeLarge),
                            GenerateSizeNotAvailableText(blockSizeLarge)
                        });
                    }
                }
            }
            else
            {
                m_blockInfoList.InitControls(new MyGuiControlBase[] { });
            }
        }
示例#6
0
        void inventoryGrid_MouseOverIndexChanged(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
        {
            Debug.Assert(control == m_inventoryGrid);

            if (CurrentAssemblerMode == AssemblerMode.Assembling)
            {
                return;
            }

            RefreshMaterialsPreview();
        }
        private MyGuiControlGrid MakeInventoryGrid(MyInventory inventory)
        {
            var grid = new MyGuiControlGrid();

            grid.Name                    = "InventoryGrid";
            grid.VisualStyle             = MyGuiControlGridStyleEnum.Inventory;
            grid.OriginAlign             = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            grid.ColumnsCount            = 7;
            grid.RowsCount               = 1;
            grid.ShowTooltipWhenDisabled = true;
            grid.UserData                = inventory;
            return(grid);
        }
示例#8
0
        private void RecreateControls(bool contructor)
        {
            m_toolbarItemsGrid = new MyGuiControlGrid()
            {
                OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM,
                VisualStyle  = MyGuiControlGridStyleEnum.Toolbar,
                ColumnsCount = MyToolbarComponent.CurrentToolbar.SlotCount + 1,
                RowsCount    = 1
            };
            m_toolbarItemsGrid.ItemDoubleClicked             += grid_ItemDoubleClicked;
            m_toolbarItemsGrid.ItemClickedWithoutDoubleClick += grid_ItemClicked;

            m_selectedItemLabel = new MyGuiControlLabel();
            m_colorVariantPanel = new MyGuiControlPanel(size: new Vector2(0.1f, 0.025f));
            m_colorVariantPanel.BackgroundTexture = MyGuiConstants.TEXTURE_GUI_BLANK;

            //grid size image (left from toolbar)
            m_gridSize             = new MyGuiControlImage(size: m_toolbarItemsGrid.ItemSize * 0.6f);
            m_gridSize.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_gridSize.SetTexture(MyGuiConstants.TEXTURE_ICON_LARGE_BLOCK);
            m_gridSize.Visible           = false;
            m_gridSize.BackgroundTexture = MyGuiConstants.TEXTURE_GUI_BLANK;
            Elements.Add(m_gridSize);

            //grid size label (above grid size image)
            m_gridSizeLabel                   = new MyGuiControlLabel();
            m_gridSizeLabel.Text              = "";
            m_gridSizeLabel.Visible           = false;
            m_gridSizeLabel.Size              = new Vector2(m_toolbarItemsGrid.ItemSize.X * 3f, m_toolbarItemsGrid.ItemSize.Y / 2f);
            m_gridSizeLabel.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_gridSizeLabel.BackgroundTexture = null;
            m_gridSizeLabel.TextScale         = 0.75f;
            Elements.Add(m_gridSizeLabel);

            m_contextMenu             = new MyGuiControlContextMenu();
            m_contextMenu.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM;
            m_contextMenu.Deactivate();
            m_contextMenu.ItemClicked += contextMenu_ItemClicked;

            Elements.Add(m_colorVariantPanel);
            Elements.Add(m_selectedItemLabel);
            Elements.Add(m_toolbarItemsGrid);
            Elements.Add(m_contextMenu);

            m_colorVariantPanel.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_selectedItemLabel.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_toolbarItemsGrid.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_contextMenu.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM;

            RefreshInternals();
        }
示例#9
0
        void queueGrid_ItemClicked(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
        {
            Debug.Assert(control == m_queueGrid);

            // Changing queue in auto-disassembling mode is forbidden.
            if (CurrentAssemblerMode == AssemblerMode.Disassembling && m_selectedAssembler.RepeatEnabled)
            {
                return;
            }

            if (args.Button == MySharedButtonsEnum.Secondary)
            {
                m_selectedAssembler.RemoveQueueItemRequest(args.ItemIndex);
            }
        }
示例#10
0
        void blueprintsGrid_ItemClicked(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
        {
            Debug.Assert(control == m_blueprintsGrid);

            //if(CurrentAssemblerMode == AssemblerMode.Assembling)
            {
                var item = control.GetItemAt(args.ItemIndex);
                if (item == null)
                {
                    return;
                }

                var blueprint = (MyBlueprintDefinitionBase)item.UserData;
                var amount    = MyInput.Static.IsAnyShiftKeyPressed() ? 100 :
                                MyInput.Static.IsAnyCtrlKeyPressed() ? 10 : 1;
                EnqueueBlueprint(blueprint, amount);
            }
        }
示例#11
0
        private void grid_ItemClicked(MyGuiControlGrid sender, MyGuiControlGrid.EventArgs eventArgs)
        {
            if (eventArgs.Button == MySharedButtonsEnum.Secondary)
            {
                int           slot    = eventArgs.ColumnIndex;
                var           toolbar = MyToolbarComponent.CurrentToolbar;
                MyToolbarItem item    = toolbar.GetSlotItem(slot);
                if (item == null)
                {
                    return;
                }

                //right clicks in multifunctional items should trigger their menus (if they have more than 0 options)
                if (item is MyToolbarItemActions)
                {
                    var actionList = (item as MyToolbarItemActions).PossibleActions(ShownToolbar.ToolbarType);
                    if (UseContextMenu && actionList.Count > 0)
                    {
                        m_contextMenu.CreateNewContextMenu();
                        foreach (var action in actionList)
                        {
                            m_contextMenu.AddItem(action.Name, icon: action.Icon, userData: action.Id);
                        }

                        m_contextMenu.AddItem(MyTexts.Get(MySpaceTexts.BlockAction_RemoveFromToolbar));
                        m_contextMenu.Enabled  = true;
                        m_contextMenuItemIndex = toolbar.SlotToIndex(slot);
                    }
                    else
                    {
                        RemoveToolbarItem(eventArgs.ColumnIndex);
                    }
                }
                else
                {
                    RemoveToolbarItem(eventArgs.ColumnIndex);
                }
            }

            if (m_shownToolbar.IsValidIndex(eventArgs.ColumnIndex))
            {
                m_shownToolbar.ActivateItemAtSlot(eventArgs.ColumnIndex, true);
            }
        }
示例#12
0
        private static void MakeScreenWithIconGrid()
        {
            var screen = new TmpScreen();
            var grid   = new MyGuiControlGrid();

            screen.Controls.Add(grid);
            grid.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;
            grid.VisualStyle  = MyGuiControlGridStyleEnum.Inventory;
            grid.RowsCount    = 12;
            grid.ColumnsCount = 18;
            foreach (var definition in MyDefinitionManager.Static.GetAllDefinitions())
            {
                grid.Add(new MyGuiControlGrid.Item(
                             icon: definition.Icon,
                             toolTip: definition.DisplayNameText));
            }

            MyGuiSandbox.AddScreen(screen);
        }
示例#13
0
 void queueGrid_ItemDragged(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
 {
     StartDragging(MyDropHandleType.MouseRelease, control, ref args);
 }
示例#14
0
        public void Init(IMyGuiControlsParent controlsParent, MyCubeGrid grid)
        {
            if (grid == null)
            {
                ShowError(MySpaceTexts.ScreenTerminalError_ShipNotConnected, controlsParent);
                return;
            }

            grid.RaiseGridChanged();
            m_assemblerKeyCounter = 0;
            m_assemblersByKey.Clear();
            foreach (var block in grid.GridSystems.TerminalSystem.Blocks)
            {
                var assembler = block as MyAssembler;
                if (assembler == null)
                {
                    continue;
                }
                if (!assembler.HasLocalPlayerAccess())
                {
                    continue;
                }

                m_assemblersByKey.Add(m_assemblerKeyCounter++, assembler);
            }

            m_controlsParent = controlsParent;
            m_terminalSystem = grid.GridSystems.TerminalSystem;

            m_blueprintsArea       = (MyGuiControlScrollablePanel)controlsParent.Controls.GetControlByName("BlueprintsScrollableArea");
            m_queueArea            = (MyGuiControlScrollablePanel)controlsParent.Controls.GetControlByName("QueueScrollableArea");
            m_inventoryArea        = (MyGuiControlScrollablePanel)controlsParent.Controls.GetControlByName("InventoryScrollableArea");
            m_blueprintsBgPanel    = controlsParent.Controls.GetControlByName("BlueprintsBackgroundPanel");
            m_blueprintsLabel      = controlsParent.Controls.GetControlByName("BlueprintsLabel");
            m_comboboxAssemblers   = (MyGuiControlCombobox)controlsParent.Controls.GetControlByName("AssemblersCombobox");
            m_blueprintsGrid       = (MyGuiControlGrid)m_blueprintsArea.ScrolledControl;
            m_queueGrid            = (MyGuiControlGrid)m_queueArea.ScrolledControl;
            m_inventoryGrid        = (MyGuiControlGrid)m_inventoryArea.ScrolledControl;
            m_materialsList        = (MyGuiControlComponentList)controlsParent.Controls.GetControlByName("MaterialsList");
            m_repeatCheckbox       = (MyGuiControlCheckbox)controlsParent.Controls.GetControlByName("RepeatCheckbox");
            m_slaveCheckbox        = (MyGuiControlCheckbox)controlsParent.Controls.GetControlByName("SlaveCheckbox");
            m_disassembleAllButton = (MyGuiControlButton)controlsParent.Controls.GetControlByName("DisassembleAllButton");
            m_controlPanelButton   = (MyGuiControlButton)controlsParent.Controls.GetControlByName("ControlPanelButton");
            m_inventoryButton      = (MyGuiControlButton)controlsParent.Controls.GetControlByName("InventoryButton");

            {
                var assemblingButton    = (MyGuiControlRadioButton)controlsParent.Controls.GetControlByName("AssemblingButton");
                var disassemblingButton = (MyGuiControlRadioButton)controlsParent.Controls.GetControlByName("DisassemblingButton");
                assemblingButton.Key    = (int)AssemblerMode.Assembling;
                disassemblingButton.Key = (int)AssemblerMode.Disassembling;
                m_modeButtonGroup.Add(assemblingButton);
                m_modeButtonGroup.Add(disassemblingButton);
            }

            foreach (var entry in m_assemblersByKey)
            {
                if (entry.Value.IsFunctional == false)
                {
                    m_incompleteAssemblerName.Clear();
                    m_incompleteAssemblerName.AppendStringBuilder(entry.Value.CustomName);
                    m_incompleteAssemblerName.AppendStringBuilder(MyTexts.Get(MySpaceTexts.Terminal_BlockIncomplete));
                    m_comboboxAssemblers.AddItem(entry.Key, m_incompleteAssemblerName);
                }
                else
                {
                    m_comboboxAssemblers.AddItem(entry.Key, entry.Value.CustomName);
                }
            }
            m_comboboxAssemblers.ItemSelected += Assemblers_ItemSelected;

            m_comboboxAssemblers.SelectItemByIndex(0);

            m_dragAndDrop = new MyGuiControlGridDragAndDrop(MyGuiConstants.DRAG_AND_DROP_BACKGROUND_COLOR,
                                                            MyGuiConstants.DRAG_AND_DROP_TEXT_COLOR,
                                                            0.7f,
                                                            MyGuiConstants.DRAG_AND_DROP_TEXT_OFFSET, true);
            controlsParent.Controls.Add(m_dragAndDrop);
            m_dragAndDrop.DrawBackgroundTexture = false;
            m_dragAndDrop.ItemDropped          += dragDrop_OnItemDropped;

            RefreshBlueprints();
            Assemblers_ItemSelected();

            RegisterEvents();

            if (m_assemblersByKey.Count == 0)
            {
                ShowError(MySpaceTexts.ScreenTerminalError_NoAssemblers, controlsParent);
            }
        }
 public static void DoubleClickItem(this MyGuiControlGrid grid)
 {
     grid.CallMethod <object>("DoubleClickItem");
 }
        private void OnGridMouseOverIndexChanged(MyGuiControlGrid myGuiControlGrid, MyGuiControlGrid.EventArgs eventArgs)
        {
            if (m_gridBlocks.Visible)
            {
                MyGuiControlGrid.Item gridItem = m_gridBlocks.MouseOverItem ?? m_gridBlocks.SelectedItem;

                if (gridItem == null)
                {
                    m_blockInfoList.InitControls(new MyGuiControlBase[] { });
                    return;
                }

                GridItemUserData userData = gridItem.UserData as GridItemUserData;
                if (userData == null)
                {
                    return;
                }

                MyObjectBuilder_ToolbarItemCubeBlock itemData = userData.ItemData as MyObjectBuilder_ToolbarItemCubeBlock;
                if (itemData == null)
                {
                    return;
                }

                MyDefinitionBase definition;
                if (MyDefinitionManager.Static.TryGetDefinition(itemData.DefinitionId, out definition))
                {
                    var group = MyDefinitionManager.Static.GetDefinitionGroup((definition as MyCubeBlockDefinition).BlockPairName);

                    List <MyGuiControlBase> blockInfos = null;

                    if (group.Small != null)
                    {
                        var blockInfosSmall = GenerateBlockInfos(group.Small, ref m_blockInfoStyle);
                        if (blockInfosSmall != null)
                        {
                            if (blockInfos == null)
                            {
                                blockInfos = new List <MyGuiControlBase>();
                            }
                            blockInfos.AddArray(blockInfosSmall);
                        }
                    }

                    if (group.Large != null)
                    {
                        var blockInfosLarge = GenerateBlockInfos(group.Large, ref m_blockInfoStyle);
                        if (blockInfosLarge != null)
                        {
                            if (blockInfos == null)
                            {
                                blockInfos = new List <MyGuiControlBase>();
                            }
                            blockInfos.AddArray(blockInfosLarge);
                        }
                    }

                    if (blockInfos != null)
                    {
                        m_blockInfoList.InitControls(blockInfos);
                    }
                    else
                    {
                        m_blockInfoList.InitControls(new MyGuiControlBase[] { });
                    }

                    //else
                    //{
                    //    bool blockSizeLarge = MyCubeBuilder.Static.CubeBuilderState.CubeSizeMode == MyCubeSize.Large;
                    //    m_blockInfoList.InitControls(new MyGuiControlBase[]
                    //    {
                    //        GenerateSizeInfoLabel(blockSizeLarge),
                    //        GenerateSizeNotAvailableText(blockSizeLarge)
                    //    });
                    //}
                }
            }
            else
            {
                m_blockInfoList.InitControls(new MyGuiControlBase[] { });
            }
        }
示例#17
0
 public bool IsToolbarGrid(MyGuiControlGrid grid)
 {
     return(m_toolbarItemsGrid == grid);
 }
 public static void ClickItem(this MyGuiControlGrid grid)
 {
     grid.CallMethod <object>("TryTriggerSingleClickEvent");
 }
示例#19
0
 private void OnSelectedItemChanged(MyGuiControlGrid arg1, MyGuiControlGrid.EventArgs arg2)
 {
     OnGridMouseOverIndexChanged(arg1, arg2);
 }
示例#20
0
 void queueGrid_MouseOverIndexChanged(MyGuiControlGrid control, MyGuiControlGrid.EventArgs args)
 {
     Debug.Assert(control == m_queueGrid);
     RefreshMaterialsPreview();
 }
 public static IEnumerable <TResult> GridItemUserDataOfType <TResult>(this MyGuiControlGrid source)
 {
     return(source.Items.OfType <MyGuiGridItem>().Select(i => i.UserData).OfType <TResult>());
 }