private Control SetupGameGrid(Texture panelTex)
        {
            _gameGrid = new GridContainer
            {
                Columns             = 10,
                HSeparationOverride = 1,
                VSeparationOverride = 1
            };
            UpdateBlocks(new BlockGameBlock[0]);

            var back = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = Color.FromHex("#4a4a51"),
            };

            back.SetPatchMargin(StyleBox.Margin.All, 10);

            var gamePanel = new PanelContainer
            {
                PanelOverride         = back,
                SizeFlagsHorizontal   = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 60
            };
            var backgroundPanel = new PanelContainer
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = Color.FromHex("#86868d")
                }
            };

            backgroundPanel.AddChild(_gameGrid);
            gamePanel.AddChild(backgroundPanel);
            return(gamePanel);
        }
Beispiel #2
0
        public AlertsUI()
        {
            LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.Begin);
            LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.End);
            LayoutContainer.SetAnchorTop(this, 0f);
            LayoutContainer.SetAnchorRight(this, 1f);
            LayoutContainer.SetAnchorBottom(this, 1f);
            LayoutContainer.SetMarginBottom(this, -180);
            LayoutContainer.SetMarginTop(this, 250);
            LayoutContainer.SetMarginRight(this, -10);
            var panelContainer = new PanelContainer
            {
                StyleClasses        = { StyleNano.StyleClassTransparentBorderedWindowPanel },
                SizeFlagsHorizontal = SizeFlags.ShrinkEnd,
                SizeFlagsVertical   = SizeFlags.None
            };

            AddChild(panelContainer);

            Grid = new GridContainer
            {
                MaxHeight       = 64,
                ExpandBackwards = true
            };
            panelContainer.AddChild(Grid);
        }
Beispiel #3
0
        public AlertsUI()
        {
            LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.Begin);
            LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.End);
            LayoutContainer.SetAnchorTop(this, 0f);
            LayoutContainer.SetAnchorRight(this, 1f);
            LayoutContainer.SetAnchorBottom(this, 1f);
            LayoutContainer.SetMarginBottom(this, -180);
            LayoutContainer.SetMarginTop(this, 250);
            LayoutContainer.SetMarginRight(this, -10);
            var panelContainer = new PanelContainer
            {
                StyleClasses        = { StyleNano.StyleClassTransparentBorderedWindowPanel },
                HorizontalAlignment = HAlignment.Right,
                VerticalAlignment   = VAlignment.Top
            };

            AddChild(panelContainer);

            Grid = new GridContainer
            {
                MaxGridHeight   = 64,
                ExpandBackwards = true
            };
            panelContainer.AddChild(Grid);

            MinSize = (64, 64);
        }
Beispiel #4
0
        private void PlayerAttached()
        {
            if (!CurrentlyControlled || _ui != null)
            {
                return;
            }

            _alertOrder = IoCManager.Resolve <IPrototypeManager>().EnumeratePrototypes <AlertOrderPrototype>().FirstOrDefault();
            if (_alertOrder == null)
            {
                Logger.ErrorS("alert", "no alertOrder prototype found, alerts will be in random order");
            }

            _ui = new AlertsUI(IoCManager.Resolve <IClyde>());
            var uiManager = IoCManager.Resolve <IUserInterfaceManager>();

            uiManager.StateRoot.AddChild(_ui);

            _tooltip = new PanelContainer
            {
                Visible      = false,
                StyleClasses = { StyleNano.StyleClassTooltipPanel }
            };
            var tooltipVBox = new VBoxContainer
            {
                RectClipContent = true
            };

            _tooltip.AddChild(tooltipVBox);
            _stateName = new RichTextLabel
            {
                MaxWidth     = TooltipTextMaxWidth,
                StyleClasses = { StyleNano.StyleClassTooltipAlertTitle }
            };
            tooltipVBox.AddChild(_stateName);
            _stateDescription = new RichTextLabel
            {
                MaxWidth     = TooltipTextMaxWidth,
                StyleClasses = { StyleNano.StyleClassTooltipAlertDescription }
            };
            tooltipVBox.AddChild(_stateDescription);
            _stateCooldown = new RichTextLabel
            {
                MaxWidth     = TooltipTextMaxWidth,
                StyleClasses = { StyleNano.StyleClassTooltipAlertCooldown }
            };
            tooltipVBox.AddChild(_stateCooldown);

            uiManager.PopupRoot.AddChild(_tooltip);

            UpdateAlertsControls();
        }
        public void SetScreen(BlockGameMessages.BlockGameScreen screen)
        {
            if (_gameOver)
            {
                return;
            }

            switch (screen)
            {
            case BlockGameMessages.BlockGameScreen.Game:
                GrabKeyboardFocus();
                CloseMenus();
                _pauseButton.Disabled = !_isPlayer;
                break;

            case BlockGameMessages.BlockGameScreen.Pause:
                //ReleaseKeyboardFocus();
                CloseMenus();
                _mainPanel.AddChild(_menuRootContainer);
                _pauseButton.Disabled = true;
                break;

            case BlockGameMessages.BlockGameScreen.Gameover:
                _gameOver             = true;
                _pauseButton.Disabled = true;
                //ReleaseKeyboardFocus();
                CloseMenus();
                _mainPanel.AddChild(_gameOverRootContainer);
                break;

            case BlockGameMessages.BlockGameScreen.Highscores:
                //ReleaseKeyboardFocus();
                CloseMenus();
                _mainPanel.AddChild(_highscoresRootContainer);
                break;
            }
        }
        public CargoProductRow()
        {
            SizeFlagsHorizontal = SizeFlags.FillExpand;

            MainButton = new Button
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand,
                SizeFlagsVertical   = SizeFlags.FillExpand
            };
            AddChild(MainButton);

            var hBox = new HBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand,
                MouseFilter         = MouseFilterMode.Ignore
            };

            Icon = new TextureRect
            {
                CustomMinimumSize = new Vector2(32.0f, 32.0f),
                MouseFilter       = MouseFilterMode.Ignore,
                RectClipContent   = true
            };
            hBox.AddChild(Icon);

            ProductName = new Label
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand
            };
            hBox.AddChild(ProductName);

            var panel = new PanelContainer
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = new Color(37, 37, 42)
                },
                MouseFilter = MouseFilterMode.Ignore
            };

            PointCost = new Label
            {
                CustomMinimumSize = new Vector2(40.0f, 32.0f),
                Align             = Label.AlignMode.Right
            };
            panel.AddChild(PointCost);
            hBox.AddChild(panel);

            AddChild(hBox);
        }
Beispiel #7
0
        public LobbyPlayerList()
        {
            var panel = new PanelContainer()
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = Color.FromHex("#202028")
                },
            };

            _vBox   = new VBoxContainer();
            _scroll = new ScrollContainer();
            _scroll.AddChild(_vBox);
            panel.AddChild(_scroll);
            AddChild(panel);
        }
        private Control SetupHoldBox(Texture panelTex)
        {
            var previewBack = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = Color.FromHex("#4a4a51")
            };

            previewBack.SetPatchMargin(StyleBox.Margin.All, 10);

            var grid = new GridContainer
            {
                Columns               = 1,
                SizeFlagsHorizontal   = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 20
            };

            var holdBlockPanel = new PanelContainer
            {
                PanelOverride       = previewBack,
                CustomMinimumSize   = blockSize * 6.5f,
                SizeFlagsHorizontal = SizeFlags.None,
                SizeFlagsVertical   = SizeFlags.None
            };
            var holdCenterContainer = new CenterContainer();

            _holdBlockGrid = new GridContainer
            {
                HSeparationOverride = 1,
                VSeparationOverride = 1
            };
            holdCenterContainer.AddChild(_holdBlockGrid);
            holdBlockPanel.AddChild(holdCenterContainer);
            grid.AddChild(holdBlockPanel);

            grid.AddChild(new Label {
                Text = "Hold", Align = Label.AlignMode.Center
            });

            return(grid);
        }
Beispiel #9
0
        // Creates the UI control that accepts text input
        private void CreateConsoleControls()
        {
            // ConsoleBox
            {
                ConsoleBox      = new VBoxContainer();
                ConsoleBox.Name = nameof(ConsoleBox);
                ConsoleBox.SetAnchor(0, 0, 1, 1);
                ConsoleBox.Alignment = BoxContainer.AlignMode.End;
                AddChild(ConsoleBox);
            }

            // HistoryHelpContainer
            {
                HistoryHelpContainer      = new PanelContainer();
                HistoryHelpContainer.Name = nameof(HistoryHelpContainer);
                ConsoleBox.AddChild(HistoryHelpContainer);
                HistoryHelpContainer.Visible = false;
            }

            // HistoryHelpBox
            {
                HistoryHelpBox      = new VBoxContainer();
                HistoryHelpBox.Name = nameof(HistoryHelpBox);
                HistoryHelpContainer.AddChild(HistoryHelpBox);
            }

            // ConsoleInput
            {
                ConsoleInput      = new LineEdit();
                ConsoleInput.Name = nameof(ConsoleInput);
                ConsoleBox.AddChild(ConsoleInput);

                ConsoleInput.ContextMenuEnabled = false;
                ConsoleInput.Connect("text_entered", this, nameof(OnCommandEntered));
                ConsoleInput.Connect("text_changed", this, nameof(OnCommandChanged));
                ConsoleInput.GrabFocus();
            }
        }
Beispiel #10
0
        public AlertsUI(IClyde clyde)
        {
            _clyde = clyde;
            var panelContainer = new PanelContainer
            {
                StyleClasses      = { StyleNano.StyleClassTransparentBorderedWindowPanel },
                SizeFlagsVertical = SizeFlags.FillExpand,
            };

            AddChild(panelContainer);

            Grid = new GridContainer
            {
                MaxHeight       = CalcMaxHeight(clyde.ScreenSize),
                ExpandBackwards = true
            };
            panelContainer.AddChild(Grid);
            clyde.OnWindowResized += ClydeOnOnWindowResized;

            LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.Begin);
            LayoutContainer.SetAnchorAndMarginPreset(this, LayoutContainer.LayoutPreset.TopRight, margin: 10);
            LayoutContainer.SetMarginTop(this, 250);
        }
        public BlockGameMenu(BlockGameBoundUserInterface owner)
        {
            Title  = "Nanotrasen Block Game";
            _owner = owner;

            var resourceCache     = IoCManager.Resolve <IResourceCache>();
            var backgroundTexture = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");

            _mainPanel = new PanelContainer();

            SetupGameMenu(backgroundTexture);
            _mainPanel.AddChild(_gameRootContainer);

            SetupPauseMenu(backgroundTexture);

            SetupGameoverScreen(backgroundTexture);

            SetupHighScoreScreen(backgroundTexture);

            Contents.AddChild(_mainPanel);

            CanKeyboardFocus = true;
        }
        public async void DoExamine(IEntity entity)
        {
            CloseTooltip();

            var popupPos = _inputManager.MouseScreenPosition;



            // Actually open the tooltip.
            _examineTooltipOpen = new Popup();
            _userInterfaceManager.StateRoot.AddChild(_examineTooltipOpen);
            var panel = new PanelContainer();

            panel.AddStyleClass(StyleClassEntityTooltip);
            panel.ModulateSelfOverride = Color.LightGray.WithAlpha(0.90f);
            _examineTooltipOpen.AddChild(panel);
            //panel.SetAnchorAndMarginPreset(Control.LayoutPreset.Wide);
            var vBox = new VBoxContainer();

            panel.AddChild(vBox);
            var hBox = new HBoxContainer {
                SeparationOverride = 5
            };

            vBox.AddChild(hBox);
            if (entity.TryGetComponent(out ISpriteComponent sprite))
            {
                hBox.AddChild(new SpriteView {
                    Sprite = sprite
                });
            }

            hBox.AddChild(new Label
            {
                Text = entity.Name,
                SizeFlagsHorizontal = Control.SizeFlags.FillExpand,
            });

            const float minWidth = 300;
            var         size     = Vector2.ComponentMax((minWidth, 0), panel.CombinedMinimumSize);

            popupPos += Vector2.ComponentMin(Vector2.Zero, _userInterfaceManager.StateRoot.Size - (size + popupPos));

            _examineTooltipOpen.Open(UIBox2.FromDimensions(popupPos, size));

            if (entity.Uid.IsClientSide())
            {
                return;
            }

            // Ask server for extra examine info.
            RaiseNetworkEvent(new ExamineSystemMessages.RequestExamineInfoMessage(entity.Uid));

            ExamineSystemMessages.ExamineInfoResponseMessage response;
            try
            {
                _requestCancelTokenSource = new CancellationTokenSource();
                response =
                    await AwaitNetMessage <ExamineSystemMessages.ExamineInfoResponseMessage>(_requestCancelTokenSource
                                                                                             .Token);
            }
            catch (TaskCanceledException)
            {
                return;
            }
            finally
            {
                _requestCancelTokenSource = null;
            }

            foreach (var msg in response.Message.Tags.OfType <FormattedMessage.TagText>())
            {
                if (!string.IsNullOrWhiteSpace(msg.Text))
                {
                    var richLabel = new RichTextLabel();
                    richLabel.SetMessage(response.Message);
                    vBox.AddChild(richLabel);
                    break;
                }
            }

            //_examineTooltipOpen.Position += Vector2.ComponentMin(Vector2.Zero,_userInterfaceManager.StateRoot.Size - (panel.Size + _examineTooltipOpen.Position));
        }
        public CargoConsoleMenu(CargoConsoleBoundUserInterface owner)
        {
            IoCManager.InjectDependencies(this);
            Owner = owner;

            if (Owner.RequestOnly)
            {
                Title = _loc.GetString("Cargo Request Console");
            }
            else
            {
                Title = _loc.GetString("Cargo Shuttle Console");
            }

            var rows = new VBoxContainer();

            var accountName      = new HBoxContainer();
            var accountNameLabel = new Label {
                Text         = _loc.GetString("Account Name: "),
                StyleClasses = { NanoStyle.StyleClassLabelKeyText }
            };

            _accountNameLabel = new Label {
                Text = "None" //Owner.Bank.Account.Name
            };
            accountName.AddChild(accountNameLabel);
            accountName.AddChild(_accountNameLabel);
            rows.AddChild(accountName);

            var points      = new HBoxContainer();
            var pointsLabel = new Label
            {
                Text         = _loc.GetString("Points: "),
                StyleClasses = { NanoStyle.StyleClassLabelKeyText }
            };

            _pointsLabel = new Label
            {
                Text = "0" //Owner.Bank.Account.Balance.ToString()
            };
            points.AddChild(pointsLabel);
            points.AddChild(_pointsLabel);
            rows.AddChild(points);

            var shuttleStatus      = new HBoxContainer();
            var shuttleStatusLabel = new Label
            {
                Text         = _loc.GetString("Shuttle Status: "),
                StyleClasses = { NanoStyle.StyleClassLabelKeyText }
            };

            _shuttleStatusLabel = new Label
            {
                Text = _loc.GetString("Away") // Shuttle.Status
            };
            shuttleStatus.AddChild(shuttleStatusLabel);
            shuttleStatus.AddChild(_shuttleStatusLabel);
            rows.AddChild(shuttleStatus);

            var buttons = new HBoxContainer();

            CallShuttleButton = new Button()
            {
                Text                = _loc.GetString("Call Shuttle"),
                TextAlign           = Button.AlignMode.Center,
                SizeFlagsHorizontal = SizeFlags.FillExpand
            };
            PermissionsButton = new Button()
            {
                Text      = _loc.GetString("Permissions"),
                TextAlign = Button.AlignMode.Center
            };
            buttons.AddChild(CallShuttleButton);
            buttons.AddChild(PermissionsButton);
            rows.AddChild(buttons);

            var category = new HBoxContainer();

            _categories = new OptionButton
            {
                Prefix = _loc.GetString("Categories: "),
                SizeFlagsHorizontal   = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 1
            };
            _searchBar = new LineEdit
            {
                PlaceHolder           = _loc.GetString("Search"),
                SizeFlagsHorizontal   = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 1
            };
            category.AddChild(_categories);
            category.AddChild(_searchBar);
            rows.AddChild(category);

            var products = new ScrollContainer()
            {
                SizeFlagsHorizontal   = SizeFlags.FillExpand,
                SizeFlagsVertical     = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 6
            };

            Products = new VBoxContainer()
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand,
                SizeFlagsVertical   = SizeFlags.FillExpand
            };
            products.AddChild(Products);
            rows.AddChild(products);

            var requestsAndOrders = new PanelContainer
            {
                SizeFlagsVertical     = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 6,
                PanelOverride         = new StyleBoxFlat {
                    BackgroundColor = Color.Black
                }
            };
            var orderScrollBox = new ScrollContainer
            {
                SizeFlagsVertical = SizeFlags.FillExpand
            };
            var rAndOVBox     = new VBoxContainer();
            var requestsLabel = new Label {
                Text = _loc.GetString("Requests")
            };

            _requests = new VBoxContainer // replace with scroll box so that approval buttons can be added
            {
                StyleClasses          = { "transparentItemList" },
                SizeFlagsVertical     = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 1,
            };
            var ordersLabel = new Label {
                Text = _loc.GetString("Orders")
            };

            _orders = new VBoxContainer
            {
                StyleClasses          = { "transparentItemList" },
                SizeFlagsVertical     = SizeFlags.FillExpand,
                SizeFlagsStretchRatio = 1,
            };
            rAndOVBox.AddChild(requestsLabel);
            rAndOVBox.AddChild(_requests);
            rAndOVBox.AddChild(ordersLabel);
            rAndOVBox.AddChild(_orders);
            orderScrollBox.AddChild(rAndOVBox);
            requestsAndOrders.AddChild(orderScrollBox);
            rows.AddChild(requestsAndOrders);

            rows.AddChild(new TextureButton
            {
                SizeFlagsVertical = SizeFlags.FillExpand,
            });
            Contents.AddChild(rows);

            CallShuttleButton.OnPressed += OnCallShuttleButtonPressed;
            _searchBar.OnTextChanged    += OnSearchBarTextChanged;
            _categories.OnItemSelected  += OnCategoryItemSelected;
        }
Beispiel #14
0
        public ChatBox()
        {
            /*MarginLeft = -475.0f;
             * MarginTop = 10.0f;
             * MarginRight = -10.0f;
             * MarginBottom = 235.0f;
             *
             * AnchorLeft = 1.0f;
             * AnchorRight = 1.0f;*/
            MouseFilter = MouseFilterMode.Stop;

            var outerVBox = new VBoxContainer();

            var panelContainer = new PanelContainer
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = Color.FromHex("#25252aaa")
                },
                SizeFlagsVertical = SizeFlags.FillExpand
            };
            var vBox = new VBoxContainer();

            panelContainer.AddChild(vBox);
            var hBox = new HBoxContainer();

            outerVBox.AddChild(panelContainer);
            outerVBox.AddChild(hBox);


            var contentMargin = new MarginContainer
            {
                MarginLeftOverride = 4, MarginRightOverride = 4,
                SizeFlagsVertical  = SizeFlags.FillExpand
            };

            Contents = new OutputPanel();
            contentMargin.AddChild(Contents);
            vBox.AddChild(contentMargin);

            Input = new HistoryLineEdit();
            Input.OnKeyBindDown += InputKeyBindDown;
            Input.OnTextEntered += Input_OnTextEntered;
            vBox.AddChild(Input);

            AllButton = new Button
            {
                Text = Loc.GetString("All"),
                Name = "ALL",
                SizeFlagsHorizontal = SizeFlags.ShrinkEnd | SizeFlags.Expand,
                ToggleMode          = true,
            };

            LocalButton = new Button
            {
                Text       = Loc.GetString("Local"),
                Name       = "Local",
                ToggleMode = true,
            };

            OOCButton = new Button
            {
                Text       = Loc.GetString("OOC"),
                Name       = "OOC",
                ToggleMode = true,
            };

            AdminButton = new Button
            {
                Text       = Loc.GetString("Admin"),
                Name       = "Admin",
                ToggleMode = true,
                Visible    = false
            };

            AllButton.OnToggled   += OnFilterToggled;
            LocalButton.OnToggled += OnFilterToggled;
            OOCButton.OnToggled   += OnFilterToggled;
            AdminButton.OnToggled += OnFilterToggled;

            hBox.AddChild(AllButton);
            hBox.AddChild(LocalButton);
            hBox.AddChild(OOCButton);
            hBox.AddChild(AdminButton);

            AddChild(outerVBox);
        }
Beispiel #15
0
        public ActionsUI(ClientActionsComponent actionsComponent)
        {
            _actionsComponent = actionsComponent;
            _actionManager    = IoCManager.Resolve <ActionManager>();
            _entityManager    = IoCManager.Resolve <IEntityManager>();
            _gameTiming       = IoCManager.Resolve <IGameTiming>();
            _gameHud          = IoCManager.Resolve <IGameHud>();
            _menu             = new ActionMenu(_actionsComponent, this);

            LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.End);
            LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.End);
            LayoutContainer.SetAnchorTop(this, 0f);
            LayoutContainer.SetAnchorBottom(this, 0.8f);
            LayoutContainer.SetMarginLeft(this, 13);
            LayoutContainer.SetMarginTop(this, 110);

            SizeFlagsHorizontal = SizeFlags.None;
            SizeFlagsVertical   = SizeFlags.FillExpand;

            var resourceCache = IoCManager.Resolve <IResourceCache>();

            // everything needs to go within an inner panel container so the panel resizes to fit the elements.
            // Because ActionsUI is being anchored by layoutcontainer, the hotbar backing would appear too tall
            // if ActionsUI was the panel container

            var panelContainer = new PanelContainer()
            {
                StyleClasses        = { StyleNano.StyleClassHotbarPanel },
                SizeFlagsHorizontal = SizeFlags.None,
                SizeFlagsVertical   = SizeFlags.None
            };

            AddChild(panelContainer);

            var hotbarContainer = new VBoxContainer
            {
                SeparationOverride  = 3,
                SizeFlagsHorizontal = SizeFlags.None
            };

            panelContainer.AddChild(hotbarContainer);

            var settingsContainer = new HBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand
            };

            hotbarContainer.AddChild(settingsContainer);

            settingsContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 1
            });
            _lockTexture   = resourceCache.GetTexture("/Textures/Interface/Nano/lock.svg.192dpi.png");
            _unlockTexture = resourceCache.GetTexture("/Textures/Interface/Nano/lock_open.svg.192dpi.png");
            _lockButton    = new TextureButton
            {
                TextureNormal         = _unlockTexture,
                SizeFlagsHorizontal   = SizeFlags.ShrinkCenter,
                SizeFlagsVertical     = SizeFlags.ShrinkCenter,
                SizeFlagsStretchRatio = 1,
                Scale = (0.5f, 0.5f)
            };
            settingsContainer.AddChild(_lockButton);
            settingsContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 2
            });
            _settingsButton = new TextureButton
            {
                TextureNormal         = resourceCache.GetTexture("/Textures/Interface/Nano/gear.svg.192dpi.png"),
                SizeFlagsHorizontal   = SizeFlags.ShrinkCenter,
                SizeFlagsVertical     = SizeFlags.ShrinkCenter,
                SizeFlagsStretchRatio = 1,
                Scale = (0.5f, 0.5f)
            };
            settingsContainer.AddChild(_settingsButton);
            settingsContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 1
            });

            // this allows a 2 column layout if window gets too small
            _slotContainer = new GridContainer
            {
                MaxHeight = CalcMaxHeight()
            };
            hotbarContainer.AddChild(_slotContainer);

            _loadoutContainer = new HBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand,
                MouseFilter         = MouseFilterMode.Stop
            };
            hotbarContainer.AddChild(_loadoutContainer);

            _loadoutContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 1
            });
            var previousHotbarIcon = new TextureRect()
            {
                Texture               = resourceCache.GetTexture("/Textures/Interface/Nano/left_arrow.svg.192dpi.png"),
                SizeFlagsHorizontal   = SizeFlags.ShrinkCenter,
                SizeFlagsVertical     = SizeFlags.ShrinkCenter,
                SizeFlagsStretchRatio = 1,
                TextureScale          = (0.5f, 0.5f)
            };

            _loadoutContainer.AddChild(previousHotbarIcon);
            _loadoutContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 2
            });
            _loadoutNumber = new Label
            {
                Text = "1",
                SizeFlagsStretchRatio = 1
            };
            _loadoutContainer.AddChild(_loadoutNumber);
            _loadoutContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 2
            });
            var nextHotbarIcon = new TextureRect
            {
                Texture               = resourceCache.GetTexture("/Textures/Interface/Nano/right_arrow.svg.192dpi.png"),
                SizeFlagsHorizontal   = SizeFlags.ShrinkCenter,
                SizeFlagsVertical     = SizeFlags.ShrinkCenter,
                SizeFlagsStretchRatio = 1,
                TextureScale          = (0.5f, 0.5f)
            };

            _loadoutContainer.AddChild(nextHotbarIcon);
            _loadoutContainer.AddChild(new Control {
                SizeFlagsHorizontal = SizeFlags.FillExpand, SizeFlagsStretchRatio = 1
            });

            _slots = new ActionSlot[ClientActionsComponent.Slots];

            _dragShadow = new TextureRect
            {
                CustomMinimumSize = (64, 64),
                Stretch           = TextureRect.StretchMode.Scale,
                Visible           = false
            };
            UserInterfaceManager.PopupRoot.AddChild(_dragShadow);
            LayoutContainer.SetSize(_dragShadow, (64, 64));

            for (byte i = 0; i < ClientActionsComponent.Slots; i++)
            {
                var slot = new ActionSlot(this, _menu, actionsComponent, i);
                _slotContainer.AddChild(slot);
                _slots[i] = slot;
            }

            DragDropHelper = new DragDropHelper <ActionSlot>(OnBeginActionDrag, OnContinueActionDrag, OnEndActionDrag);
        }
        private void SetupHighScoreScreen(Texture backgroundTexture)
        {
            var rootBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = overlayShadowColor
            };

            rootBack.SetPatchMargin(StyleBox.Margin.All, 10);
            _highscoresRootContainer = new PanelContainer
            {
                PanelOverride       = rootBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            var c         = new Color(overlayBackgroundColor.R, overlayBackgroundColor.G, overlayBackgroundColor.B, 220);
            var innerBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = c
            };

            innerBack.SetPatchMargin(StyleBox.Margin.All, 10);
            var menuInnerPanel = new PanelContainer
            {
                PanelOverride       = innerBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            _highscoresRootContainer.AddChild(menuInnerPanel);

            var menuContainer = new VBoxContainer()
            {
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter
            };

            menuContainer.AddChild(new Label {
                Text = "Highscores"
            });
            menuContainer.AddChild(new Control {
                CustomMinimumSize = new Vector2(1, 10)
            });

            var highScoreBox = new HBoxContainer();

            _localHighscoresLabel = new Label
            {
                Align = Label.AlignMode.Center
            };
            highScoreBox.AddChild(_localHighscoresLabel);
            highScoreBox.AddChild(new Control {
                CustomMinimumSize = new Vector2(40, 1)
            });
            _globalHighscoresLabel = new Label
            {
                Align = Label.AlignMode.Center
            };
            highScoreBox.AddChild(_globalHighscoresLabel);
            menuContainer.AddChild(highScoreBox);
            menuContainer.AddChild(new Control {
                CustomMinimumSize = new Vector2(1, 10)
            });
            _highscoreBackButton = new Button
            {
                Text      = "Back",
                TextAlign = Label.AlignMode.Center
            };
            _highscoreBackButton.OnPressed += (e) => _owner.SendAction(BlockGamePlayerAction.Pause);
            menuContainer.AddChild(_highscoreBackButton);

            menuInnerPanel.AddChild(menuContainer);
        }
Beispiel #17
0
        public ChatBox()
        {
            MouseFilter = MouseFilterMode.Stop;

            var outerVBox = new VBoxContainer();

            var panelContainer = new PanelContainer
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = Color.FromHex("#25252aaa")
                },
                VerticalExpand = true
            };
            var vBox = new VBoxContainer();

            panelContainer.AddChild(vBox);
            var hBox = new HBoxContainer();

            outerVBox.AddChild(panelContainer);
            outerVBox.AddChild(hBox);

            Contents = new OutputPanel {
                Margin = new Thickness(4, 0), VerticalExpand = true
            };
            vBox.AddChild(Contents);

            Input = new HistoryLineEdit();
            Input.OnKeyBindDown += InputKeyBindDown;
            Input.OnTextEntered += Input_OnTextEntered;
            vBox.AddChild(Input);

            AllButton = new Button
            {
                Text                = Loc.GetString("All"),
                Name                = "ALL",
                HorizontalExpand    = true,
                HorizontalAlignment = HAlignment.Right,
                ToggleMode          = true,
            };

            LocalButton = new Button
            {
                Text       = Loc.GetString("Local"),
                Name       = "Local",
                ToggleMode = true,
            };

            OOCButton = new Button
            {
                Text       = Loc.GetString("OOC"),
                Name       = "OOC",
                ToggleMode = true,
            };

            AdminButton = new Button
            {
                Text       = Loc.GetString("Admin"),
                Name       = "Admin",
                ToggleMode = true,
                Visible    = false
            };

            DeadButton = new Button
            {
                Text       = Loc.GetString("Dead"),
                Name       = "Dead",
                ToggleMode = true,
                Visible    = false
            };

            AllButton.OnToggled   += OnFilterToggled;
            LocalButton.OnToggled += OnFilterToggled;
            OOCButton.OnToggled   += OnFilterToggled;
            AdminButton.OnToggled += OnFilterToggled;
            DeadButton.OnToggled  += OnFilterToggled;

            hBox.AddChild(AllButton);
            hBox.AddChild(LocalButton);
            hBox.AddChild(DeadButton);
            hBox.AddChild(OOCButton);
            hBox.AddChild(AdminButton);

            AddChild(outerVBox);
        }
        public async void DoExamine(IEntity entity)
        {
            const float minWidth = 300;

            CloseTooltip();

            var popupPos = _userInterfaceManager.MousePositionScaled;

            // Actually open the tooltip.
            _examineTooltipOpen = new Popup();
            _userInterfaceManager.ModalRoot.AddChild(_examineTooltipOpen);
            var panel = new PanelContainer();

            panel.AddStyleClass(StyleClassEntityTooltip);
            panel.ModulateSelfOverride = Color.LightGray.WithAlpha(0.90f);
            _examineTooltipOpen.AddChild(panel);
            //panel.SetAnchorAndMarginPreset(Control.LayoutPreset.Wide);
            var vBox = new VBoxContainer();

            panel.AddChild(vBox);
            var hBox = new HBoxContainer {
                SeparationOverride = 5
            };

            vBox.AddChild(hBox);
            if (entity.TryGetComponent(out ISpriteComponent sprite))
            {
                hBox.AddChild(new SpriteView {
                    Sprite = sprite
                });
            }

            hBox.AddChild(new Label
            {
                Text             = entity.Name,
                HorizontalExpand = true,
            });

            panel.Measure(Vector2.Infinity);
            var size = Vector2.ComponentMax((minWidth, 0), panel.DesiredSize);

            _examineTooltipOpen.Open(UIBox2.FromDimensions(popupPos, size));

            FormattedMessage message;

            if (entity.Uid.IsClientSide())
            {
                message = GetExamineText(entity, _playerManager.LocalPlayer.ControlledEntity);
            }
            else
            {
                // Ask server for extra examine info.
                RaiseNetworkEvent(new ExamineSystemMessages.RequestExamineInfoMessage(entity.Uid));

                ExamineSystemMessages.ExamineInfoResponseMessage response;
                try
                {
                    _requestCancelTokenSource = new CancellationTokenSource();
                    response =
                        await AwaitNetworkEvent <ExamineSystemMessages.ExamineInfoResponseMessage>(_requestCancelTokenSource
                                                                                                   .Token);
                }
                catch (TaskCanceledException)
                {
                    return;
                }
                finally
                {
                    _requestCancelTokenSource = null;
                }

                message = response.Message;
            }

            foreach (var msg in message.Tags.OfType <FormattedMessage.TagText>())
            {
                if (!string.IsNullOrWhiteSpace(msg.Text))
                {
                    var richLabel = new RichTextLabel();
                    richLabel.SetMessage(message);
                    vBox.AddChild(richLabel);
                    break;
                }
            }
        }
Beispiel #19
0
        public ActionsUI(ClientActionsComponent actionsComponent)
        {
            SetValue(LayoutContainer.DebugProperty, true);
            _actionsComponent = actionsComponent;
            _actionManager    = IoCManager.Resolve <ActionManager>();
            _entityManager    = IoCManager.Resolve <IEntityManager>();
            _gameTiming       = IoCManager.Resolve <IGameTiming>();
            _gameHud          = IoCManager.Resolve <IGameHud>();
            _menu             = new ActionMenu(_actionsComponent, this);

            LayoutContainer.SetGrowHorizontal(this, LayoutContainer.GrowDirection.End);
            LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.Constrain);
            LayoutContainer.SetAnchorTop(this, 0f);
            LayoutContainer.SetAnchorBottom(this, 0.8f);
            LayoutContainer.SetMarginLeft(this, 13);
            LayoutContainer.SetMarginTop(this, 110);

            HorizontalAlignment = HAlignment.Left;
            VerticalExpand      = true;

            var resourceCache = IoCManager.Resolve <IResourceCache>();

            // everything needs to go within an inner panel container so the panel resizes to fit the elements.
            // Because ActionsUI is being anchored by layoutcontainer, the hotbar backing would appear too tall
            // if ActionsUI was the panel container

            var panelContainer = new PanelContainer()
            {
                StyleClasses        = { StyleNano.StyleClassHotbarPanel },
                HorizontalAlignment = HAlignment.Left,
                VerticalAlignment   = VAlignment.Top
            };

            AddChild(panelContainer);

            var hotbarContainer = new BoxContainer
            {
                Orientation         = LayoutOrientation.Vertical,
                SeparationOverride  = 3,
                HorizontalAlignment = HAlignment.Left
            };

            panelContainer.AddChild(hotbarContainer);

            var settingsContainer = new BoxContainer
            {
                Orientation      = LayoutOrientation.Horizontal,
                HorizontalExpand = true
            };

            hotbarContainer.AddChild(settingsContainer);

            settingsContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 1
            });
            _lockTexture   = resourceCache.GetTexture("/Textures/Interface/Nano/lock.svg.192dpi.png");
            _unlockTexture = resourceCache.GetTexture("/Textures/Interface/Nano/lock_open.svg.192dpi.png");
            _lockButton    = new TextureButton
            {
                TextureNormal         = _unlockTexture,
                HorizontalAlignment   = HAlignment.Center,
                VerticalAlignment     = VAlignment.Center,
                SizeFlagsStretchRatio = 1,
                Scale        = (0.5f, 0.5f),
                ToolTip      = Loc.GetString("ui-actionsui-function-lock-action-slots"),
                TooltipDelay = CustomTooltipDelay
            };
            settingsContainer.AddChild(_lockButton);
            settingsContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 2
            });
            _settingsButton = new TextureButton
            {
                TextureNormal         = resourceCache.GetTexture("/Textures/Interface/Nano/gear.svg.192dpi.png"),
                HorizontalAlignment   = HAlignment.Center,
                VerticalAlignment     = VAlignment.Center,
                SizeFlagsStretchRatio = 1,
                Scale        = (0.5f, 0.5f),
                ToolTip      = Loc.GetString("ui-actionsui-function-open-abilities-menu"),
                TooltipDelay = CustomTooltipDelay
            };
            settingsContainer.AddChild(_settingsButton);
            settingsContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 1
            });

            // this allows a 2 column layout if window gets too small
            _slotContainer = new GridContainer
            {
                MaxGridHeight = CalcMaxHeight()
            };
            hotbarContainer.AddChild(_slotContainer);

            _loadoutContainer = new BoxContainer
            {
                Orientation      = LayoutOrientation.Horizontal,
                HorizontalExpand = true,
                MouseFilter      = MouseFilterMode.Stop
            };
            hotbarContainer.AddChild(_loadoutContainer);

            _loadoutContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 1
            });
            var previousHotbarIcon = new TextureRect()
            {
                Texture               = resourceCache.GetTexture("/Textures/Interface/Nano/left_arrow.svg.192dpi.png"),
                HorizontalAlignment   = HAlignment.Center,
                VerticalAlignment     = VAlignment.Center,
                SizeFlagsStretchRatio = 1,
                TextureScale          = (0.5f, 0.5f)
            };

            _loadoutContainer.AddChild(previousHotbarIcon);
            _loadoutContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 2
            });
            _loadoutNumber = new Label
            {
                Text = "1",
                SizeFlagsStretchRatio = 1
            };
            _loadoutContainer.AddChild(_loadoutNumber);
            _loadoutContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 2
            });
            var nextHotbarIcon = new TextureRect
            {
                Texture               = resourceCache.GetTexture("/Textures/Interface/Nano/right_arrow.svg.192dpi.png"),
                HorizontalAlignment   = HAlignment.Center,
                VerticalAlignment     = VAlignment.Center,
                SizeFlagsStretchRatio = 1,
                TextureScale          = (0.5f, 0.5f)
            };

            _loadoutContainer.AddChild(nextHotbarIcon);
            _loadoutContainer.AddChild(new Control {
                HorizontalExpand = true, SizeFlagsStretchRatio = 1
            });

            _slots = new ActionSlot[ClientActionsComponent.Slots];

            _dragShadow = new TextureRect
            {
                MinSize = (64, 64),
                Stretch = TextureRect.StretchMode.Scale,
                Visible = false,
                SetSize = (64, 64)
            };
            UserInterfaceManager.PopupRoot.AddChild(_dragShadow);

            for (byte i = 0; i < ClientActionsComponent.Slots; i++)
            {
                var slot = new ActionSlot(this, _menu, actionsComponent, i);
                _slotContainer.AddChild(slot);
                _slots[i] = slot;
            }

            DragDropHelper = new DragDropHelper <ActionSlot>(OnBeginActionDrag, OnContinueActionDrag, OnEndActionDrag);

            MinSize = (10, 400);
        }
        private void SetupPauseMenu(Texture backgroundTexture)
        {
            var rootBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = overlayShadowColor
            };

            rootBack.SetPatchMargin(StyleBox.Margin.All, 10);
            _menuRootContainer = new PanelContainer
            {
                PanelOverride       = rootBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            var innerBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = overlayBackgroundColor
            };

            innerBack.SetPatchMargin(StyleBox.Margin.All, 10);
            var menuInnerPanel = new PanelContainer
            {
                PanelOverride       = innerBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            _menuRootContainer.AddChild(menuInnerPanel);


            var menuContainer = new VBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter
            };

            _newGameButton = new Button
            {
                Text      = "New Game",
                TextAlign = Label.AlignMode.Center
            };
            _newGameButton.OnPressed += (e) =>
            {
                _owner.SendAction(BlockGamePlayerAction.NewGame);
            };
            menuContainer.AddChild(_newGameButton);
            menuContainer.AddChild(new Control {
                CustomMinimumSize = new Vector2(1, 10)
            });

            _scoreBoardButton = new Button
            {
                Text      = "Scoreboard",
                TextAlign = Label.AlignMode.Center
            };
            _scoreBoardButton.OnPressed += (e) => _owner.SendAction(BlockGamePlayerAction.ShowHighscores);
            menuContainer.AddChild(_scoreBoardButton);
            _unpauseButtonMargin = new Control {
                CustomMinimumSize = new Vector2(1, 10), Visible = false
            };
            menuContainer.AddChild(_unpauseButtonMargin);

            _unpauseButton = new Button
            {
                Text      = "Unpause",
                TextAlign = Label.AlignMode.Center,
                Visible   = false
            };
            _unpauseButton.OnPressed += (e) =>
            {
                _owner.SendAction(BlockGamePlayerAction.Unpause);
            };
            menuContainer.AddChild(_unpauseButton);

            menuInnerPanel.AddChild(menuContainer);
        }
        private void SetupGameoverScreen(Texture backgroundTexture)
        {
            var rootBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = overlayShadowColor
            };

            rootBack.SetPatchMargin(StyleBox.Margin.All, 10);
            _gameOverRootContainer = new PanelContainer
            {
                PanelOverride       = rootBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            var innerBack = new StyleBoxTexture
            {
                Texture  = backgroundTexture,
                Modulate = overlayBackgroundColor
            };

            innerBack.SetPatchMargin(StyleBox.Margin.All, 10);
            var menuInnerPanel = new PanelContainer
            {
                PanelOverride       = innerBack,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter,
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter
            };

            _gameOverRootContainer.AddChild(menuInnerPanel);

            var menuContainer = new VBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
                SizeFlagsVertical   = SizeFlags.ShrinkCenter
            };

            menuContainer.AddChild(new Label {
                Text = "Gameover!", Align = Label.AlignMode.Center
            });
            menuContainer.AddChild(new Control {
                CustomMinimumSize = new Vector2(1, 10)
            });


            _finalScoreLabel = new Label {
                Align = Label.AlignMode.Center
            };
            menuContainer.AddChild(_finalScoreLabel);
            menuContainer.AddChild(new Control {
                CustomMinimumSize = new Vector2(1, 10)
            });

            _finalNewGameButton = new Button
            {
                Text      = "New Game",
                TextAlign = Label.AlignMode.Center
            };
            _finalNewGameButton.OnPressed += (e) =>
            {
                _owner.SendAction(BlockGamePlayerAction.NewGame);
            };
            menuContainer.AddChild(_finalNewGameButton);

            menuInnerPanel.AddChild(menuContainer);
        }