Exemple #1
0
        public ParticleAcceleratorControlMenu(ParticleAcceleratorBoundUserInterface owner)
        {
            _greyScaleShader = IoCManager.Resolve <IPrototypeManager>().Index <ShaderPrototype>("Greyscale").Instance();

            Owner = owner;
            _drawNoiseGenerator = new NoiseGenerator(NoiseGenerator.NoiseType.Fbm);
            _drawNoiseGenerator.SetFrequency(0.5f);

            var resourceCache = IoCManager.Resolve <IResourceCache>();
            var font          = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13);
            var panelTex      = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");

            MouseFilter = MouseFilterMode.Stop;

            _alarmControlAnimation = new Animation
            {
                Length          = TimeSpan.FromSeconds(1),
                AnimationTracks =
                {
                    new AnimationTrackControlProperty
                    {
                        Property  = nameof(Control.Visible),
                        KeyFrames =
                        {
                            new AnimationTrackProperty.KeyFrame(true,      0),
                            new AnimationTrackProperty.KeyFrame(false, 0.75f),
                        }
                    }
                }
            };

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

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

            var back2 = new StyleBoxTexture(back)
            {
                Modulate = Color.FromHex("#202023")
            };

            AddChild(new PanelContainer
            {
                PanelOverride = back,
                MouseFilter   = MouseFilterMode.Pass
            });

            _stateSpinBox = new SpinBox
            {
                Value = 0,
            };
            _stateSpinBox.IsValid = StrengthSpinBoxValid;
            _stateSpinBox.InitDefaultButtons();
            _stateSpinBox.ValueChanged    += PowerStateChanged;
            _stateSpinBox.LineEditDisabled = true;

            _offButton = new Button
            {
                ToggleMode   = false,
                Text         = "Off",
                StyleClasses = { StyleBase.ButtonOpenRight },
            };
            _offButton.OnPressed += args => owner.SendEnableMessage(false);

            _onButton = new Button
            {
                ToggleMode   = false,
                Text         = "On",
                StyleClasses = { StyleBase.ButtonOpenLeft },
            };
            _onButton.OnPressed += args => owner.SendEnableMessage(true);

            var closeButton = new TextureButton
            {
                StyleClasses        = { "windowCloseButton" },
                SizeFlagsHorizontal = SizeFlags.ShrinkEnd
            };

            closeButton.OnPressed += args => Close();

            var serviceManual = new Label
            {
                SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
                StyleClasses        = { StyleBase.StyleClassLabelSubText },
                Text = Loc.GetString("Refer to p.132 of service manual")
            };

            _drawLabel = new Label();
            var imgSize = new Vector2(32, 32);

            AddChild(new VBoxContainer
            {
                Children =
                {
                    new MarginContainer
                    {
                        MarginLeftOverride = 2,
                        MarginTopOverride  = 2,
                        Children           =
                        {
                            new Label
                            {
                                Text              = Loc.GetString("Mark 2 Particle Accelerator"),
                                FontOverride      = font,
                                FontColorOverride = StyleNano.NanoGold,
                            },
                            new MarginContainer
                            {
                                MarginRightOverride = 8,
                                Children            =
                                {
                                    closeButton
                                }
                            }
                        }
                    },
                    new PanelContainer
                    {
                        PanelOverride = new StyleBoxFlat        {
                            BackgroundColor = StyleNano.NanoGold
                        },
                        CustomMinimumSize = (0, 2),
                    },
        public CharacterSetupGui(IEntityManager entityManager,
                                 IResourceCache resourceCache,
                                 IClientPreferencesManager preferencesManager,
                                 IPrototypeManager prototypeManager)
        {
            _entityManager      = entityManager;
            _preferencesManager = preferencesManager;
            var margin = new MarginContainer
            {
                MarginBottomOverride = 20,
                MarginLeftOverride   = 20,
                MarginRightOverride  = 20,
                MarginTopOverride    = 20
            };

            AddChild(margin);

            var panelTex = resourceCache.GetTexture("/Nano/button.svg.96dpi.png");
            var back     = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = new Color(37, 37, 42)
            };

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

            var panel = new PanelContainer
            {
                PanelOverride = back
            };

            margin.AddChild(panel);

            var vBox = new VBoxContainer {
                SeparationOverride = 0
            };

            margin.AddChild(vBox);

            CloseButton = new Button
            {
                SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkEnd,
                Text         = Loc.GetString("Save and close"),
                StyleClasses = { NanoStyle.StyleClassButtonBig }
            };

            var topHBox = new HBoxContainer
            {
                CustomMinimumSize = (0, 40),
                Children          =
                {
                    new MarginContainer
                    {
                        MarginLeftOverride = 8,
                        Children           =
                        {
                            new Label
                            {
                                Text                = Loc.GetString("Character Setup"),
                                StyleClasses        = { NanoStyle.StyleClassLabelHeadingBigger },
                                VAlign              = Label.VAlignMode.Center,
                                SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkCenter
                            }
                        }
                    },
                    CloseButton
                }
            };

            vBox.AddChild(topHBox);

            vBox.AddChild(new PanelContainer
            {
                PanelOverride = new StyleBoxFlat
                {
                    BackgroundColor          = NanoStyle.NanoGold,
                    ContentMarginTopOverride = 2
                }
            });

            var hBox = new HBoxContainer
            {
                SizeFlagsVertical  = SizeFlags.FillExpand,
                SeparationOverride = 0
            };

            vBox.AddChild(hBox);

            _charactersVBox = new VBoxContainer();

            hBox.AddChild(new MarginContainer
            {
                CustomMinimumSize   = (330, 0),
                SizeFlagsHorizontal = SizeFlags.Fill,
                MarginTopOverride   = 5,
                MarginLeftOverride  = 5,
                Children            =
                {
                    new ScrollContainer
                    {
                        SizeFlagsVertical = SizeFlags.FillExpand,
                        Children          =
                        {
                            _charactersVBox
                        }
                    }
                }
            });
Exemple #3
0
        public CharacterSetupGui(IEntityManager entityManager,
                                 IResourceCache resourceCache,
                                 IClientPreferencesManager preferencesManager,
                                 IPrototypeManager prototypeManager)
        {
            _entityManager      = entityManager;
            _preferencesManager = preferencesManager;
            var margin = new Control
            {
                Margin = new Thickness(20),
            };

            AddChild(margin);

            var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
            var back     = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = new Color(37, 37, 42)
            };

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

            var panel = new PanelContainer
            {
                PanelOverride = back
            };

            margin.AddChild(panel);

            var vBox = new VBoxContainer {
                SeparationOverride = 0
            };

            margin.AddChild(vBox);

            var topHBox = new HBoxContainer
            {
                MinSize  = (0, 40),
                Children =
                {
                    new Label
                    {
                        Margin       = new Thickness(8, 0, 0, 0),
                        Text         = Loc.GetString("Character Setup"),
                        StyleClasses ={ StyleNano.StyleClassLabelHeadingBigger                    },
                        VAlign       = Label.VAlignMode.Center,
                    },
                    (SaveButton = new Button
                    {
                        HorizontalExpand = true,
                        HorizontalAlignment = HAlignment.Right,
                        Text = Loc.GetString("Save"),
                        StyleClasses ={ StyleNano.StyleClassButtonBig                             },
                    }),
                    (CloseButton = new Button
                    {
                        Text = Loc.GetString("Close"),
                        StyleClasses ={ StyleNano.StyleClassButtonBig                             },
                    })
                }
            };

            vBox.AddChild(topHBox);

            vBox.AddChild(new PanelContainer
            {
                PanelOverride = new StyleBoxFlat
                {
                    BackgroundColor          = StyleNano.NanoGold,
                    ContentMarginTopOverride = 2
                }
            });

            var hBox = new HBoxContainer
            {
                VerticalExpand     = true,
                SeparationOverride = 0
            };

            vBox.AddChild(hBox);

            _charactersVBox = new VBoxContainer();

            hBox.AddChild(new ScrollContainer
            {
                MinSize  = (325, 0),
                Margin   = new Thickness(5, 5, 0, 0),
                Children =
                {
                    _charactersVBox
                }
            });
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        protected StyleBase(IResourceCache resCache)
        {
            var notoSans12       = resCache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSans12Italic = resCache.GetFont("/Fonts/NotoSans/NotoSans-Italic.ttf", 12);

            // Button styles.
            var buttonTex = resCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");

            BaseButton = new StyleBoxTexture
            {
                Texture = buttonTex,
            };
            BaseButton.SetPatchMargin(StyleBox.Margin.All, 10);
            BaseButton.SetPadding(StyleBox.Margin.All, 1);
            BaseButton.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            BaseButton.SetContentMarginOverride(StyleBox.Margin.Horizontal, 14);

            BaseButtonOpenRight = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((0, 0), (14, 24))),
            };
            BaseButtonOpenRight.SetPatchMargin(StyleBox.Margin.Right, 0);
            BaseButtonOpenRight.SetContentMarginOverride(StyleBox.Margin.Right, 8);
            BaseButtonOpenRight.SetPadding(StyleBox.Margin.Right, 2);

            BaseButtonOpenLeft = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (14, 24))),
            };
            BaseButtonOpenLeft.SetPatchMargin(StyleBox.Margin.Left, 0);
            BaseButtonOpenLeft.SetContentMarginOverride(StyleBox.Margin.Left, 8);
            BaseButtonOpenLeft.SetPadding(StyleBox.Margin.Left, 1);

            BaseButtonOpenBoth = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (3, 24))),
            };
            BaseButtonOpenBoth.SetPatchMargin(StyleBox.Margin.Horizontal, 0);
            BaseButtonOpenBoth.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);
            BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Right, 2);
            BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Left, 1);

            BaseRules = new[]
            {
                // Default font.
                new StyleRule(
                    new SelectorElement(null, null, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12),
                }),

                // Default font.
                new StyleRule(
                    new SelectorElement(null, new[] { StyleClassItalic }, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12Italic),
                }),
            };
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        public GasAnalyzerWindow(GasAnalyzerBoundUserInterface owner)
        {
            var resourceCache = IoCManager.Resolve <IResourceCache>();

            Owner = owner;
            var rootContainer = new LayoutContainer {
                Name = "WireRoot"
            };

            AddChild(rootContainer);

            MouseFilter = MouseFilterMode.Stop;

            var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
            var back     = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = Color.FromHex("#25252A"),
            };

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

            var topPanel = new PanelContainer
            {
                PanelOverride = back,
                MouseFilter   = MouseFilterMode.Pass
            };
            var bottomWrap = new LayoutContainer
            {
                Name = "BottomWrap"
            };

            rootContainer.AddChild(topPanel);
            rootContainer.AddChild(bottomWrap);

            LayoutContainer.SetAnchorPreset(topPanel, LayoutContainer.LayoutPreset.Wide);
            LayoutContainer.SetMarginBottom(topPanel, -80);

            LayoutContainer.SetAnchorPreset(bottomWrap, LayoutContainer.LayoutPreset.VerticalCenterWide);
            LayoutContainer.SetGrowHorizontal(bottomWrap, LayoutContainer.GrowDirection.Both);

            var topContainerWrap = new VBoxContainer
            {
                Children =
                {
                    (_topContainer        = new VBoxContainer()),
                    new Control {
                        CustomMinimumSize = (0, 110)
                    }
                }
            };

            rootContainer.AddChild(topContainerWrap);

            LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide);

            var font      = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13);
            var fontSmall = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 10);

            Button refreshButton;
            var    topRow = new MarginContainer
            {
                MarginLeftOverride   = 4,
                MarginTopOverride    = 2,
                MarginRightOverride  = 12,
                MarginBottomOverride = 2,
                Children             =
                {
                    new HBoxContainer
                    {
                        Children =
                        {
                            (_nameLabel             = new Label
                            {
                                Text                = Loc.GetString("Gas Analyzer"),
                                FontOverride        = font,
                                FontColorOverride   = StyleNano.NanoGold,
                                SizeFlagsVertical   = SizeFlags.ShrinkCenter
                            }),
                            new Control
                            {
                                CustomMinimumSize   = (20,                        0),
                                SizeFlagsHorizontal = SizeFlags.Expand
                            },
        public NanoStyle()
        {
            var resCache           = IoCManager.Resolve <IResourceCache>();
            var notoSans12         = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSansBold16     = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 16);
            var animalSilence40    = resCache.GetFont("/Fonts/Animal Silence.otf", 40);
            var textureCloseButton = resCache.GetTexture("/Nano/cross.svg.png");
            var windowHeaderTex    = resCache.GetTexture("/Nano/window_header.png");
            var windowHeader       = new StyleBoxTexture
            {
                Texture            = windowHeaderTex,
                PatchMarginBottom  = 3,
                ExpandMarginBottom = 3,
            };
            var windowBackgroundTex = resCache.GetTexture("/Nano/window_background.png");
            var windowBackground    = new StyleBoxTexture
            {
                Texture = windowBackgroundTex,
            };

            windowBackground.SetPatchMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);
            windowBackground.SetExpandMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);

            var buttonNormalTex = resCache.GetTexture("/Nano/button_normal.png");
            var buttonNormal    = new StyleBoxTexture
            {
                Texture = buttonNormalTex,
            };

            buttonNormal.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonNormal.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonHoverTex = resCache.GetTexture("/Nano/button_hover.png");
            var buttonHover    = new StyleBoxTexture
            {
                Texture = buttonHoverTex,
            };

            buttonHover.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonHover.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonPressedTex = resCache.GetTexture("/Nano/button_pressed.png");
            var buttonPressed    = new StyleBoxTexture
            {
                Texture = buttonPressedTex,
            };

            buttonPressed.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonPressed.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonDisabledTex = resCache.GetTexture("/Nano/button_disabled.png");
            var buttonDisabled    = new StyleBoxTexture
            {
                Texture = buttonDisabledTex,
            };

            buttonDisabled.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonDisabled.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var lineEditTex = resCache.GetTexture("/Nano/lineedit.png");
            var lineEdit    = new StyleBoxTexture
            {
                Texture = lineEditTex,
            };

            lineEdit.SetPatchMargin(StyleBox.Margin.All, 3);
            lineEdit.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            Stylesheet = new Stylesheet(new[]
            {
                // Default font.
                new StyleRule(
                    new SelectorElement(null, null, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12),
                }),

                // Window title.
                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { SS14Window.StyleClassWindowTitle }, null, null),
                    new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                    new StyleProperty(Label.StylePropertyFont, notoSansBold16),
                }),
                // Window background.
                new StyleRule(
                    new SelectorElement(null, new[] { SS14Window.StyleClassWindowPanel }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowBackground),
                }),
                // Window header.
                new StyleRule(
                    new SelectorElement(typeof(Panel), new[] { SS14Window.StyleClassWindowHeader }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowHeader),
                }),
                // Window close button base texture.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        null),
                    new[]
                {
                    new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
                }),
                // Window close button hover.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        TextureButton.StylePseudoClassHover),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
                }),
                // Window close button pressed.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        TextureButton.StylePseudoClassPressed),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
                }),

                // Regular buttons!
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassNormal),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonNormal),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassHover),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonHover),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassPressed),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonPressed),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassDisabled),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonDisabled),
                    new StyleProperty("font-color", Color.FromHex("#E5E5E581")),
                }),

                // Main menu: Make those buttons bigger.
                new StyleRule(
                    new SelectorChild(
                        new SelectorElement(null, null, "mainMenuVBox", null),
                        new SelectorElement(typeof(Button), null, null, null)),
                    new[]
                {
                    new StyleProperty("font", animalSilence40),
                }),

                // Main menu: also make those buttons slightly more separated.
                new StyleRule(new SelectorElement(typeof(BoxContainer), null, "mainMenuVBox", null),
                              new[]
                {
                    new StyleProperty(BoxContainer.StylePropertySeparation, 2),
                }),

                // Fancy LineEdit
                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, null),
                              new[]
                {
                    new StyleProperty(LineEdit.StylePropertyStyleBox, lineEdit),
                }),
            });
        }
Exemple #10
0
        public NanoStyle()
        {
            var resCache           = IoCManager.Resolve <IResourceCache>();
            var notoSans12         = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSansBold16     = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 16);
            var animalSilence40    = resCache.GetFont("/Fonts/Animal Silence.otf", 40);
            var textureCloseButton = resCache.GetTexture("/Nano/cross.svg.png");
            var windowHeaderTex    = resCache.GetTexture("/Nano/window_header.png");
            var windowHeader       = new StyleBoxTexture
            {
                Texture            = windowHeaderTex,
                PatchMarginBottom  = 3,
                ExpandMarginBottom = 3,
            };
            var windowBackgroundTex = resCache.GetTexture("/Nano/window_background.png");
            var windowBackground    = new StyleBoxTexture
            {
                Texture = windowBackgroundTex,
            };

            windowBackground.SetPatchMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);
            windowBackground.SetExpandMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);

            var buttonNormalTex = resCache.GetTexture("/Nano/button_normal.png");
            var buttonNormal    = new StyleBoxTexture
            {
                Texture = buttonNormalTex,
            };

            buttonNormal.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonNormal.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonHoverTex = resCache.GetTexture("/Nano/button_hover.png");
            var buttonHover    = new StyleBoxTexture
            {
                Texture = buttonHoverTex,
            };

            buttonHover.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonHover.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonPressedTex = resCache.GetTexture("/Nano/button_pressed.png");
            var buttonPressed    = new StyleBoxTexture
            {
                Texture = buttonPressedTex,
            };

            buttonPressed.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonPressed.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var buttonDisabledTex = resCache.GetTexture("/Nano/button_disabled.png");
            var buttonDisabled    = new StyleBoxTexture
            {
                Texture = buttonDisabledTex,
            };

            buttonDisabled.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonDisabled.SetContentMarginOverride(StyleBox.Margin.Left | StyleBox.Margin.Right, 4);

            var lineEditTex = resCache.GetTexture("/Nano/lineedit.png");
            var lineEdit    = new StyleBoxTexture
            {
                Texture = lineEditTex,
            };

            lineEdit.SetPatchMargin(StyleBox.Margin.All, 3);
            lineEdit.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            var tabContainerPanelTex = resCache.GetTexture("/Nano/tabcontainer_panel.png");
            var tabContainerPanel    = new StyleBoxTexture
            {
                Texture = tabContainerPanelTex,
            };

            tabContainerPanel.SetPatchMargin(StyleBox.Margin.All, 2);

            var tabContainerBoxActive = new StyleBoxFlat {
                BackgroundColor = new Color(64, 64, 64)
            };

            tabContainerBoxActive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 3);
            var tabContainerBoxInactive = new StyleBoxFlat {
                BackgroundColor = new Color(32, 32, 32)
            };

            tabContainerBoxInactive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 3);

            var vScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor = Color.Gray, ContentMarginLeftOverride = 10
            };
            var vScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor = new Color(140, 140, 140), ContentMarginLeftOverride = 10
            };
            var vScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor = new Color(160, 160, 160), ContentMarginLeftOverride = 10
            };

            var hScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor = Color.Gray, ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor = new Color(140, 140, 140), ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor = new Color(160, 160, 160), ContentMarginTopOverride = 10
            };

            var progressBarBackground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.25f, 0.25f)
            };

            progressBarBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            var progressBarForeground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.50f, 0.25f)
            };

            progressBarForeground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            // CheckBox
            var checkBoxTextureChecked   = resCache.GetTexture("/Nano/checkbox_checked.svg.96dpi.png");
            var checkBoxTextureUnchecked = resCache.GetTexture("/Nano/checkbox_unchecked.svg.96dpi.png");

            Stylesheet = new Stylesheet(new[]
            {
                // Default font.
                new StyleRule(
                    new SelectorElement(null, null, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12),
                }),

                // Window title.
                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { SS14Window.StyleClassWindowTitle }, null, null),
                    new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                    new StyleProperty(Label.StylePropertyFont, notoSansBold16),
                }),
                // Window background.
                new StyleRule(
                    new SelectorElement(null, new[] { SS14Window.StyleClassWindowPanel }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowBackground),
                }),
                // Window header.
                new StyleRule(
                    new SelectorElement(typeof(Panel), new[] { SS14Window.StyleClassWindowHeader }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowHeader),
                }),
                // Window close button base texture.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        null),
                    new[]
                {
                    new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
                }),
                // Window close button hover.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        TextureButton.StylePseudoClassHover),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
                }),
                // Window close button pressed.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        TextureButton.StylePseudoClassPressed),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
                }),

                // Regular buttons!
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassNormal),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonNormal),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassHover),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonHover),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassPressed),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonPressed),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, Button.StylePseudoClassDisabled),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonDisabled),
                    new StyleProperty("font-color", Color.FromHex("#E5E5E581")),
                }),

                // Main menu: Make those buttons bigger.
                new StyleRule(
                    new SelectorChild(
                        new SelectorElement(null, null, "mainMenuVBox", null),
                        new SelectorElement(typeof(Button), null, null, null)),
                    new[]
                {
                    new StyleProperty("font", notoSansBold16),
                }),

                // Main menu: also make those buttons slightly more separated.
                new StyleRule(new SelectorElement(typeof(BoxContainer), null, "mainMenuVBox", null),
                              new[]
                {
                    new StyleProperty(BoxContainer.StylePropertySeparation, 2),
                }),

                // Fancy LineEdit
                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, null),
                              new[]
                {
                    new StyleProperty(LineEdit.StylePropertyStyleBox, lineEdit),
                }),

                new StyleRule(
                    new SelectorElement(typeof(LineEdit), new[] { LineEdit.StyleClassLineEditNotEditable }, null, null),
                    new[]
                {
                    new StyleProperty("font-color", new Color(192, 192, 192)),
                }),

                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, LineEdit.StylePseudoClassPlaceholder),
                              new[]
                {
                    new StyleProperty("font-color", Color.Gray),
                }),

                // TabContainer
                new StyleRule(new SelectorElement(typeof(TabContainer), null, null, null),
                              new[]
                {
                    new StyleProperty(TabContainer.StylePropertyPanelStyleBox, tabContainerPanel),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBox, tabContainerBoxActive),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBoxInactive, tabContainerBoxInactive),
                }),

                // Scroll bars
                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberNormal),
                }),

                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, ScrollBar.StylePseudoClassHover),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberHover),
                }),

                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, ScrollBar.StylePseudoClassGrabbed),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberGrabbed),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberNormal),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, ScrollBar.StylePseudoClassHover),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberHover),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, ScrollBar.StylePseudoClassGrabbed),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberGrabbed),
                }),

                // ProgressBar
                new StyleRule(new SelectorElement(typeof(ProgressBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ProgressBar.StylePropertyBackground, progressBarBackground)
                }),

                new StyleRule(new SelectorElement(typeof(ProgressBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ProgressBar.StylePropertyForeground, progressBarForeground)
                }),

                // CheckBox
                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, null), new []
                {
                    new StyleProperty(CheckBox.StylePropertyIcon, checkBoxTextureUnchecked),
                }),

                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, Button.StylePseudoClassPressed), new []
                {
                    new StyleProperty(CheckBox.StylePropertyIcon, checkBoxTextureChecked),
                }),

                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, null), new []
                {
                    new StyleProperty(CheckBox.StylePropertyHSeparation, 3),
                }),

                // Tooltip
                new StyleRule(new SelectorElement(typeof(Tooltip), null, null, null), new []
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, new StyleBoxFlat {
                        BackgroundColor = new Color(21, 21, 26)
                    })
                }),
            });
        }
        public GasAnalyzerWindow(GasAnalyzerBoundUserInterface owner)
        {
            var resourceCache = IoCManager.Resolve <IResourceCache>();

            Owner = owner;
            var rootContainer = new LayoutContainer {
                Name = "WireRoot"
            };

            AddChild(rootContainer);

            MouseFilter = MouseFilterMode.Stop;

            var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
            var back     = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = Color.FromHex("#25252A"),
            };

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

            var topPanel = new PanelContainer
            {
                PanelOverride = back,
                MouseFilter   = MouseFilterMode.Pass
            };
            var bottomWrap = new LayoutContainer
            {
                Name = "BottomWrap"
            };

            rootContainer.AddChild(topPanel);
            rootContainer.AddChild(bottomWrap);

            LayoutContainer.SetAnchorPreset(topPanel, LayoutContainer.LayoutPreset.Wide);
            LayoutContainer.SetMarginBottom(topPanel, -80);

            LayoutContainer.SetAnchorPreset(bottomWrap, LayoutContainer.LayoutPreset.VerticalCenterWide);
            LayoutContainer.SetGrowHorizontal(bottomWrap, LayoutContainer.GrowDirection.Both);

            var topContainerWrap = new BoxContainer
            {
                Orientation = LayoutOrientation.Vertical,
                Children    =
                {
                    (_topContainer  = new BoxContainer
                    {
                        Orientation = LayoutOrientation.Vertical
                    }),
                    new Control {
                        MinSize     = (0, 110)
                    }
                }
            };

            rootContainer.AddChild(topContainerWrap);

            LayoutContainer.SetAnchorPreset(topContainerWrap, LayoutContainer.LayoutPreset.Wide);

            var font      = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 13);
            var fontSmall = resourceCache.GetFont("/Fonts/Boxfont-round/Boxfont Round.ttf", 10);

            Button refreshButton;
            var    topRow = new BoxContainer
            {
                Orientation = LayoutOrientation.Horizontal,
                Margin      = new Thickness(4, 4, 12, 2),
                Children    =
                {
                    (_nameLabel           = new Label
                    {
                        Text              = Loc.GetString("gas-analyzer-window-name"),
                        FontOverride      = font,
                        FontColorOverride = StyleNano.NanoGold,
                        VerticalAlignment = VAlignment.Center
                    }),
                    new Control
                    {
                        MinSize          = (20,                                    0),
                        HorizontalExpand = true,
                    },
        public override void Startup()
        {
            var panelTex = ResC.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
            var back = new StyleBoxTexture
            {
                Texture = panelTex,
                Modulate = new Color(32, 32, 48),
            };
            back.SetPatchMargin(StyleBox.Margin.All, 10);

            Button exitButton;
            Button reconnectButton;
            Button retryButton;

            var address = _gameController.LaunchState.Ss14Address ?? _gameController.LaunchState.ConnectAddress;

            _control = new Control
            {
                Stylesheet = _stylesheetManager.SheetSpace,
                Children =
                {
                    new PanelContainer
                    {
                        PanelOverride = back
                    },
                    new VBoxContainer
                    {
                        SeparationOverride = 0,
                        CustomMinimumSize = (300, 200),
                        Children =
                        {
                            new HBoxContainer
                            {
                                Children =
                                {
                                    new MarginContainer
                                    {
                                        MarginLeftOverride = 8,
                                        Children =
                                        {
                                            new Label
                                            {
                                                Text = Loc.GetString("Space Station 14"),
                                                StyleClasses = {StyleBase.StyleClassLabelHeading},
                                                VAlign = Label.VAlignMode.Center
                                            },
                                        }
                                    },

                                    (exitButton = new Button
                                    {
                                        Text = Loc.GetString("Exit"),
                                        SizeFlagsHorizontal = Control.SizeFlags.ShrinkEnd | Control.SizeFlags.Expand
                                    }),
                                }
                            },

                            // Line
                            new HighDivider(),

                            new MarginContainer
                            {
                                SizeFlagsVertical = Control.SizeFlags.FillExpand,
                                MarginLeftOverride = 4,
                                MarginRightOverride = 4,
                                MarginTopOverride = 4,
                                Children =
                                {
                                    new VBoxContainer
                                    {
                                        SeparationOverride = 0,
                                        Children =
                                        {
                                            new Control
                                            {
                                                SizeFlagsVertical = Control.SizeFlags.FillExpand,
                                                Children =
                                                {
                                                    (_connectingStatus = new VBoxContainer
                                                    {
                                                        SeparationOverride = 0,
                                                        Children =
                                                        {
                                                            new Label
                                                            {
                                                                Text = Loc.GetString("Connecting to server..."),
                                                                Align = Label.AlignMode.Center,
                                                            },

                                                            (_connectStatus = new Label
                                                            {
                                                                StyleClasses = {StyleBase.StyleClassLabelSubText},
                                                                Align = Label.AlignMode.Center,
                                                            }),
                                                        }
                                                    }),
                                                    (_connectFail = new VBoxContainer
                                                    {
                                                        Visible = false,
                                                        SeparationOverride = 0,
                                                        Children =
                                                        {
                                                            (_connectFailReason = new Label
                                                            {
                                                                Align = Label.AlignMode.Center
                                                            }),

                                                            (retryButton = new Button
                                                            {
                                                                Text = "Retry",
                                                                SizeFlagsHorizontal = Control.SizeFlags.ShrinkCenter,
                                                                SizeFlagsVertical =
                                                                    Control.SizeFlags.Expand |
                                                                    Control.SizeFlags.ShrinkEnd
                                                            })
                                                        }
                                                    }),

                                                    (_disconnected = new VBoxContainer
                                                    {
                                                        SeparationOverride = 0,
                                                        Children =
                                                        {
                                                            new Label
                                                            {
                                                                Text = "Disconnected from server:",
                                                                Align = Label.AlignMode.Center
                                                            },
                                                            new Label
                                                            {
                                                                Text = _baseClient.LastDisconnectReason,
                                                                Align = Label.AlignMode.Center
                                                            },
                                                            (reconnectButton = new Button
                                                            {
                                                                Text = "Reconnect",
                                                                SizeFlagsHorizontal = Control.SizeFlags.ShrinkCenter,
                                                                SizeFlagsVertical =
                                                                    Control.SizeFlags.Expand |
                                                                    Control.SizeFlags.ShrinkEnd
                                                            })
                                                        }
                                                    })
                                                }
                                            },

                                            // Padding.
                                            new Control {CustomMinimumSize = (0, 8)},
Exemple #13
0
        public StyleNano(IResourceCache resCache) : base(resCache)
        {
            var notoSans10            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 10);
            var notoSansItalic10      = resCache.GetFont("/Nano/NotoSans/NotoSans-Italic.ttf", 10);
            var notoSans12            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSansItalic12      = resCache.GetFont("/Nano/NotoSans/NotoSans-Italic.ttf", 12);
            var notoSansBold12        = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 12);
            var notoSansDisplayBold14 = resCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 14);
            var notoSans16            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 16);
            var notoSansBold16        = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 16);
            var notoSansBold20        = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 20);
            var textureCloseButton    = resCache.GetTexture("/Nano/cross.svg.png");
            var windowHeaderTex       = resCache.GetTexture("/Nano/window_header.png");
            var windowHeader          = new StyleBoxTexture
            {
                Texture                     = windowHeaderTex,
                PatchMarginBottom           = 3,
                ExpandMarginBottom          = 3,
                ContentMarginBottomOverride = 0
            };
            var windowBackgroundTex = resCache.GetTexture("/Nano/window_background.png");
            var windowBackground    = new StyleBoxTexture
            {
                Texture = windowBackgroundTex,
            };

            windowBackground.SetPatchMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);
            windowBackground.SetExpandMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);

            var textureInvertedTriangle = resCache.GetTexture("/Nano/inverted_triangle.svg.png");

            // Button styles.
            var buttonNormal = new StyleBoxTexture(BaseButton)
            {
                Modulate = ButtonColorDefault
            };

            var buttonHover = new StyleBoxTexture(buttonNormal)
            {
                Modulate = ButtonColorHovered
            };

            var buttonPressed = new StyleBoxTexture(buttonNormal)
            {
                Modulate = ButtonColorPressed
            };

            var buttonDisabled = new StyleBoxTexture(buttonNormal)
            {
                Modulate = ButtonColorDisabled
            };

            var lineEditTex = resCache.GetTexture("/Nano/lineedit.png");
            var lineEdit    = new StyleBoxTexture
            {
                Texture = lineEditTex,
            };

            lineEdit.SetPatchMargin(StyleBox.Margin.All, 3);
            lineEdit.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            var tabContainerPanelTex = resCache.GetTexture("/Nano/tabcontainer_panel.png");
            var tabContainerPanel    = new StyleBoxTexture
            {
                Texture = tabContainerPanelTex,
            };

            tabContainerPanel.SetPatchMargin(StyleBox.Margin.All, 2);

            var tabContainerBoxActive = new StyleBoxFlat {
                BackgroundColor = new Color(64, 64, 64)
            };

            tabContainerBoxActive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);
            var tabContainerBoxInactive = new StyleBoxFlat {
                BackgroundColor = new Color(32, 32, 32)
            };

            tabContainerBoxInactive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            var vScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor          = Color.Gray.WithAlpha(0.35f), ContentMarginLeftOverride = 10,
                ContentMarginTopOverride = 10
            };
            var vScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor          = new Color(140, 140, 140).WithAlpha(0.35f), ContentMarginLeftOverride = 10,
                ContentMarginTopOverride = 10
            };
            var vScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor          = new Color(160, 160, 160).WithAlpha(0.35f), ContentMarginLeftOverride = 10,
                ContentMarginTopOverride = 10
            };

            var hScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor = Color.Gray.WithAlpha(0.35f), ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor = new Color(140, 140, 140).WithAlpha(0.35f), ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor = new Color(160, 160, 160).WithAlpha(0.35f), ContentMarginTopOverride = 10
            };

            var progressBarBackground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.25f, 0.25f)
            };

            progressBarBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            var progressBarForeground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.50f, 0.25f)
            };

            progressBarForeground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            // CheckBox
            var checkBoxTextureChecked   = resCache.GetTexture("/Nano/checkbox_checked.svg.96dpi.png");
            var checkBoxTextureUnchecked = resCache.GetTexture("/Nano/checkbox_unchecked.svg.96dpi.png");

            // Tooltip box
            var tooltipTexture = resCache.GetTexture("/Nano/tooltip.png");
            var tooltipBox     = new StyleBoxTexture
            {
                Texture = tooltipTexture,
            };

            tooltipBox.SetPatchMargin(StyleBox.Margin.All, 2);
            tooltipBox.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            // Placeholder
            var placeholderTexture = resCache.GetTexture("/Nano/placeholder.png");
            var placeholder        = new StyleBoxTexture {
                Texture = placeholderTexture
            };

            placeholder.SetPatchMargin(StyleBox.Margin.All, 19);
            placeholder.SetExpandMargin(StyleBox.Margin.All, -5);
            placeholder.Mode = StyleBoxTexture.StretchMode.Tile;

            var itemListBackgroundSelected = new StyleBoxFlat {
                BackgroundColor = new Color(75, 75, 86)
            };

            itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
            var itemListItemBackgroundDisabled = new StyleBoxFlat {
                BackgroundColor = new Color(10, 10, 12)
            };

            itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
            var itemListItemBackground = new StyleBoxFlat {
                BackgroundColor = new Color(55, 55, 68)
            };

            itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
            var itemListItemBackgroundTransparent = new StyleBoxFlat {
                BackgroundColor = Color.Transparent
            };

            itemListItemBackgroundTransparent.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListItemBackgroundTransparent.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);

            // NanoHeading
            var nanoHeadingTex = resCache.GetTexture("/Nano/nanoheading.svg.96dpi.png");
            var nanoHeadingBox = new StyleBoxTexture
            {
                Texture                   = nanoHeadingTex,
                PatchMarginRight          = 10,
                PatchMarginTop            = 10,
                ContentMarginTopOverride  = 2,
                ContentMarginLeftOverride = 10,
                PaddingTop                = 4
            };

            nanoHeadingBox.SetPatchMargin(StyleBox.Margin.Left | StyleBox.Margin.Bottom, 2);

            // Stripe background
            var stripeBackTex = resCache.GetTexture("/Nano/stripeback.svg.96dpi.png");
            var stripeBack    = new StyleBoxTexture
            {
                Texture = stripeBackTex,
                Mode    = StyleBoxTexture.StretchMode.Tile
            };

            // Slider
            var sliderOutlineTex = resCache.GetTexture("/Nano/slider_outline.svg.96dpi.png");
            var sliderFillTex    = resCache.GetTexture("/Nano/slider_fill.svg.96dpi.png");
            var sliderGrabTex    = resCache.GetTexture("/Nano/slider_grabber.svg.96dpi.png");

            var sliderFillBox = new StyleBoxTexture
            {
                Texture  = sliderFillTex,
                Modulate = Color.FromHex("#3E6C45")
            };

            var sliderBackBox = new StyleBoxTexture
            {
                Texture  = sliderFillTex,
                Modulate = Color.FromHex("#1E1E22")
            };

            var sliderForeBox = new StyleBoxTexture
            {
                Texture  = sliderOutlineTex,
                Modulate = Color.FromHex("#494949")
            };

            var sliderGrabBox = new StyleBoxTexture
            {
                Texture = sliderGrabTex,
            };

            sliderFillBox.SetPatchMargin(StyleBox.Margin.All, 12);
            sliderBackBox.SetPatchMargin(StyleBox.Margin.All, 12);
            sliderForeBox.SetPatchMargin(StyleBox.Margin.All, 12);
            sliderGrabBox.SetPatchMargin(StyleBox.Margin.All, 12);

            var sliderFillGreen = new StyleBoxTexture(sliderFillBox)
            {
                Modulate = Color.Green
            };
            var sliderFillRed = new StyleBoxTexture(sliderFillBox)
            {
                Modulate = Color.Red
            };
            var sliderFillBlue = new StyleBoxTexture(sliderFillBox)
            {
                Modulate = Color.Blue
            };

            Stylesheet = new Stylesheet(BaseRules.Concat(new[]
            {
                // Window title.
                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { SS14Window.StyleClassWindowTitle }, null, null),
                    new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                    new StyleProperty(Label.StylePropertyFont, notoSansDisplayBold14),
                }),
                // Window background.
                new StyleRule(
                    new SelectorElement(null, new[] { SS14Window.StyleClassWindowPanel }, null, null),
                    new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, windowBackground),
                }),
                // Window header.
                new StyleRule(
                    new SelectorElement(typeof(PanelContainer), new[] { SS14Window.StyleClassWindowHeader }, null, null),
                    new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, windowHeader),
                }),
                // Window close button base texture.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        null),
                    new[]
                {
                    new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
                }),
                // Window close button hover.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new[] { TextureButton.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
                }),
                // Window close button pressed.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new[] { TextureButton.StylePseudoClassPressed }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
                }),

                // Regular buttons!
                new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] { ContainerButton.StylePseudoClassNormal }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonNormal),
                }),
                new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] { ContainerButton.StylePseudoClassHover }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonHover),
                }),
                new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] { ContainerButton.StylePseudoClassPressed }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonPressed),
                }),
                new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] { ContainerButton.StylePseudoClassDisabled }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonDisabled),
                }),

                new StyleRule(new SelectorElement(typeof(Label), new[] { Button.StyleClassButton }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyAlignMode, Label.AlignMode.Center),
                }),

                new StyleRule(new SelectorChild(
                                  new SelectorElement(typeof(Button), null, null, new[] { ContainerButton.StylePseudoClassDisabled }),
                                  new SelectorElement(typeof(Label), null, null, null)),
                              new[]
                {
                    new StyleProperty("font-color", Color.FromHex("#E5E5E581")),
                }),

                // Main menu: Make those buttons bigger.
                new StyleRule(new SelectorChild(
                                  new SelectorElement(typeof(Button), null, "mainMenu", null),
                                  new SelectorElement(typeof(Label), null, null, null)),
                              new[]
                {
                    new StyleProperty("font", notoSansBold16),
                }),

                // Main menu: also make those buttons slightly more separated.
                new StyleRule(new SelectorElement(typeof(BoxContainer), null, "mainMenuVBox", null),
                              new[]
                {
                    new StyleProperty(BoxContainer.StylePropertySeparation, 2),
                }),

                // Fancy LineEdit
                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, null),
                              new[]
                {
                    new StyleProperty(LineEdit.StylePropertyStyleBox, lineEdit),
                }),

                new StyleRule(
                    new SelectorElement(typeof(LineEdit), new[] { LineEdit.StyleClassLineEditNotEditable }, null, null),
                    new[]
                {
                    new StyleProperty("font-color", new Color(192, 192, 192)),
                }),

                new StyleRule(
                    new SelectorElement(typeof(LineEdit), null, null, new[] { LineEdit.StylePseudoClassPlaceholder }),
                    new[]
                {
                    new StyleProperty("font-color", Color.Gray),
                }),

                // TabContainer
                new StyleRule(new SelectorElement(typeof(TabContainer), null, null, null),
                              new[]
                {
                    new StyleProperty(TabContainer.StylePropertyPanelStyleBox, tabContainerPanel),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBox, tabContainerBoxActive),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBoxInactive, tabContainerBoxInactive),
                }),

                // Scroll bars
                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberNormal),
                }),

                new StyleRule(
                    new SelectorElement(typeof(VScrollBar), null, null, new[] { ScrollBar.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberHover),
                }),

                new StyleRule(
                    new SelectorElement(typeof(VScrollBar), null, null, new[] { ScrollBar.StylePseudoClassGrabbed }),
                    new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberGrabbed),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberNormal),
                }),

                new StyleRule(
                    new SelectorElement(typeof(HScrollBar), null, null, new[] { ScrollBar.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberHover),
                }),

                new StyleRule(
                    new SelectorElement(typeof(HScrollBar), null, null, new[] { ScrollBar.StylePseudoClassGrabbed }),
                    new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberGrabbed),
                }),

                // ProgressBar
                new StyleRule(new SelectorElement(typeof(ProgressBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ProgressBar.StylePropertyBackground, progressBarBackground),
                    new StyleProperty(ProgressBar.StylePropertyForeground, progressBarForeground)
                }),

                // CheckBox
                new StyleRule(new SelectorElement(typeof(TextureRect), new [] { CheckBox.StyleClassCheckBox }, null, null), new[]
                {
                    new StyleProperty(TextureRect.StylePropertyTexture, checkBoxTextureUnchecked),
                }),

                new StyleRule(new SelectorElement(typeof(TextureRect), new [] { CheckBox.StyleClassCheckBox, CheckBox.StyleClassCheckBoxChecked }, null, null), new[]
                {
                    new StyleProperty(TextureRect.StylePropertyTexture, checkBoxTextureChecked),
                }),

                new StyleRule(new SelectorElement(typeof(HBoxContainer), new [] { CheckBox.StyleClassCheckBox }, null, null), new[]
                {
                    new StyleProperty(BoxContainer.StylePropertySeparation, 10),
                }),

                // Tooltip
                new StyleRule(new SelectorElement(typeof(Tooltip), null, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                new StyleRule(new SelectorElement(typeof(PanelContainer), new[] { "tooltipBox" }, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                new StyleRule(new SelectorElement(typeof(PanelContainer), new[] { "speechBox", "sayBox" }, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                new StyleRule(new SelectorChild(
                                  new SelectorElement(typeof(PanelContainer), new[] { "speechBox", "emoteBox" }, null, null),
                                  new SelectorElement(typeof(RichTextLabel), null, null, null)),
                              new[]
                {
                    new StyleProperty("font", notoSansItalic12),
                }),

                // Entity tooltip
                new StyleRule(
                    new SelectorElement(typeof(PanelContainer), new[] { ExamineSystem.StyleClassEntityTooltip }, null,
                                        null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                // ItemList
                new StyleRule(new SelectorElement(typeof(ItemList), null, null, null), new[]
                {
                    new StyleProperty(ItemList.StylePropertyBackground,
                                      new StyleBoxFlat {
                        BackgroundColor = new Color(32, 32, 40)
                    }),
                    new StyleProperty(ItemList.StylePropertyItemBackground,
                                      itemListItemBackground),
                    new StyleProperty(ItemList.StylePropertyDisabledItemBackground,
                                      itemListItemBackgroundDisabled),
                    new StyleProperty(ItemList.StylePropertySelectedItemBackground,
                                      itemListBackgroundSelected)
                }),

                new StyleRule(new SelectorElement(typeof(ItemList), new[] { "transparentItemList" }, null, null), new[]
                {
                    new StyleProperty(ItemList.StylePropertyBackground,
                                      new StyleBoxFlat {
                        BackgroundColor = Color.Transparent
                    }),
                    new StyleProperty(ItemList.StylePropertyItemBackground,
                                      itemListItemBackgroundTransparent),
                    new StyleProperty(ItemList.StylePropertyDisabledItemBackground,
                                      itemListItemBackgroundDisabled),
                    new StyleProperty(ItemList.StylePropertySelectedItemBackground,
                                      itemListBackgroundSelected)
                }),

                // Tree
                new StyleRule(new SelectorElement(typeof(Tree), null, null, null), new[]
                {
                    new StyleProperty(Tree.StylePropertyBackground,
                                      new StyleBoxFlat {
                        BackgroundColor = new Color(32, 32, 40)
                    }),
                    new StyleProperty(Tree.StylePropertyItemBoxSelected, new StyleBoxFlat
                    {
                        BackgroundColor           = new Color(55, 55, 68),
                        ContentMarginLeftOverride = 4
                    })
                }),

                // Placeholder
                new StyleRule(new SelectorElement(typeof(Placeholder), null, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, placeholder),
                }),

                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { Placeholder.StyleClassPlaceholderText }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans16),
                    new StyleProperty(Label.StylePropertyFontColor, new Color(103, 103, 103, 128)),
                }),

                // Big Label
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassLabelHeading }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansBold16),
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                }),

                // Bigger Label
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassLabelHeadingBigger }, null, null),
                              new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansBold20),
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                }),

                // Small Label
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassLabelSubText }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans10),
                    new StyleProperty(Label.StylePropertyFontColor, Color.DarkGray),
                }),

                // Label Key
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassLabelKeyText }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansBold12),
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold)
                }),

                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassLabelSecondaryColor }, null, null),
                              new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans12),
                    new StyleProperty(Label.StylePropertyFontColor, Color.DarkGray),
                }),

                // Big Button
                new StyleRule(new SelectorChild(
                                  new SelectorElement(typeof(Button), new[] { StyleClassButtonBig }, null, null),
                                  new SelectorElement(typeof(Label), null, null, null)),
                              new[]
                {
                    new StyleProperty("font", notoSans16)
                }),

                // Popup messages
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassPopupMessage }, null, null),
                              new[]
                {
                    new StyleProperty("font", notoSansItalic10),
                    new StyleProperty("font-color", Color.LightGray),
                }),

                //APC and SMES power state label colors
                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassPowerStateNone }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.8f, 0.0f, 0.0f))
                }),

                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassPowerStateLow }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.9f, 0.36f, 0.0f))
                }),

                new StyleRule(new SelectorElement(typeof(Label), new[] { StyleClassPowerStateGood }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.024f, 0.8f, 0.0f))
                }),

                // Those top menu buttons.
                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new[] { Button.StylePseudoClassNormal }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonNormal),
                }),

                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new[] { Button.StylePseudoClassPressed }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonPressed),
                }),

                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new[] { Button.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonHover),
                }),

                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { GameHud.TopButton.StyleClassLabelTopButton }, null, null),
                    new[]
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansDisplayBold14),
                }),

                // Targeting doll

                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { TargetingDoll.StyleClassTargetDollZone }, null,
                                        new[] { TextureButton.StylePseudoClassNormal }), new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDefault),
                }),

                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { TargetingDoll.StyleClassTargetDollZone }, null,
                                        new[] { TextureButton.StylePseudoClassHover }), new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorHovered),
                }),

                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { TargetingDoll.StyleClassTargetDollZone }, null,
                                        new[] { TextureButton.StylePseudoClassPressed }), new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorPressed),
                }),

                // NanoHeading

                new StyleRule(
                    new SelectorChild(
                        SelectorElement.Type(typeof(NanoHeading)),
                        SelectorElement.Type(typeof(PanelContainer))),
                    new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, nanoHeadingBox),
                }),

                // StripeBack
                new StyleRule(
                    SelectorElement.Type(typeof(StripeBack)),
                    new[]
                {
                    new StyleProperty(StripeBack.StylePropertyBackground, stripeBack),
                }),

                // StyleClassLabelBig
                new StyleRule(
                    SelectorElement.Class(StyleClassLabelBig),
                    new[]
                {
                    new StyleProperty("font", notoSans16),
                }),

                // StyleClassItemStatus
                new StyleRule(SelectorElement.Class(StyleClassItemStatus), new[]
                {
                    new StyleProperty("font", notoSans10),
                }),

                // Slider
                new StyleRule(SelectorElement.Type(typeof(Slider)), new []
                {
                    new StyleProperty(Slider.StylePropertyBackground, sliderBackBox),
                    new StyleProperty(Slider.StylePropertyForeground, sliderForeBox),
                    new StyleProperty(Slider.StylePropertyGrabber, sliderGrabBox),
                    new StyleProperty(Slider.StylePropertyFill, sliderFillBox),
                }),

                new StyleRule(new SelectorElement(typeof(Slider), new [] { StyleClassSliderRed }, null, null), new []
                {
                    new StyleProperty(Slider.StylePropertyFill, sliderFillRed),
                }),

                new StyleRule(new SelectorElement(typeof(Slider), new [] { StyleClassSliderGreen }, null, null), new []
                {
                    new StyleProperty(Slider.StylePropertyFill, sliderFillGreen),
                }),

                new StyleRule(new SelectorElement(typeof(Slider), new [] { StyleClassSliderBlue }, null, null), new []
                {
                    new StyleProperty(Slider.StylePropertyFill, sliderFillBlue),
                }),

                // OptionButton
                new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] { ContainerButton.StylePseudoClassNormal }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonNormal),
                }),
                new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] { ContainerButton.StylePseudoClassHover }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonHover),
                }),
                new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] { ContainerButton.StylePseudoClassPressed }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonPressed),
                }),
                new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] { ContainerButton.StylePseudoClassDisabled }), new[]
                {
                    new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonDisabled),
                }),

                new StyleRule(new SelectorElement(typeof(TextureRect), new[] { OptionButton.StyleClassOptionTriangle }, null, null), new[]
                {
                    new StyleProperty(TextureRect.StylePropertyTexture, textureInvertedTriangle),
                    //new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#FFFFFF")),
                }),

                new StyleRule(new SelectorElement(typeof(Label), new[] { OptionButton.StyleClassOptionButton }, null, null), new[]
                {
                    new StyleProperty(Label.StylePropertyAlignMode, Label.AlignMode.Center),
                }),

                new StyleRule(new SelectorElement(typeof(PanelContainer), new [] { ClassHighDivider }, null, null), new []
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, new StyleBoxFlat {
                        BackgroundColor = NanoGold, ContentMarginBottomOverride = 2, ContentMarginLeftOverride = 2
                    }),
                })
            }).ToList());
        }
Exemple #14
0
        public NanoStyle()
        {
            var resCache              = IoCManager.Resolve <IResourceCache>();
            var notoSans10            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 10);
            var notoSans12            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSansDisplayBold14 = resCache.GetFont("/Fonts/NotoSansDisplay/NotoSansDisplay-Bold.ttf", 14);
            var notoSans16            = resCache.GetFont("/Nano/NotoSans/NotoSans-Regular.ttf", 16);
            var notoSansBold16        = resCache.GetFont("/Nano/NotoSans/NotoSans-Bold.ttf", 16);
            var textureCloseButton    = resCache.GetTexture("/Nano/cross.svg.png");
            var windowHeaderTex       = resCache.GetTexture("/Nano/window_header.png");
            var windowHeader          = new StyleBoxTexture
            {
                Texture            = windowHeaderTex,
                PatchMarginBottom  = 3,
                ExpandMarginBottom = 3,
            };
            var windowBackgroundTex = resCache.GetTexture("/Nano/window_background.png");
            var windowBackground    = new StyleBoxTexture
            {
                Texture = windowBackgroundTex,
            };

            windowBackground.SetPatchMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);
            windowBackground.SetExpandMargin(StyleBox.Margin.Horizontal | StyleBox.Margin.Bottom, 2);

            var buttonNormalTex = resCache.GetTexture("/Nano/button_normal.png");
            var buttonNormal    = new StyleBoxTexture
            {
                Texture = buttonNormalTex,
            };

            buttonNormal.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonNormal.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);

            var buttonHoverTex = resCache.GetTexture("/Nano/button_hover.png");
            var buttonHover    = new StyleBoxTexture
            {
                Texture = buttonHoverTex,
            };

            buttonHover.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonHover.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);

            var buttonPressedTex = resCache.GetTexture("/Nano/button_pressed.png");
            var buttonPressed    = new StyleBoxTexture
            {
                Texture = buttonPressedTex,
            };

            buttonPressed.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonPressed.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);

            var buttonDisabledTex = resCache.GetTexture("/Nano/button_disabled.png");
            var buttonDisabled    = new StyleBoxTexture
            {
                Texture = buttonDisabledTex,
            };

            buttonDisabled.SetPatchMargin(StyleBox.Margin.All, 2);
            buttonDisabled.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);

            var lineEditTex = resCache.GetTexture("/Nano/lineedit.png");
            var lineEdit    = new StyleBoxTexture
            {
                Texture = lineEditTex,
            };

            lineEdit.SetPatchMargin(StyleBox.Margin.All, 3);
            lineEdit.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            var tabContainerPanelTex = resCache.GetTexture("/Nano/tabcontainer_panel.png");
            var tabContainerPanel    = new StyleBoxTexture
            {
                Texture = tabContainerPanelTex,
            };

            tabContainerPanel.SetPatchMargin(StyleBox.Margin.All, 2);

            var tabContainerBoxActive = new StyleBoxFlat {
                BackgroundColor = new Color(64, 64, 64)
            };

            tabContainerBoxActive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);
            var tabContainerBoxInactive = new StyleBoxFlat {
                BackgroundColor = new Color(32, 32, 32)
            };

            tabContainerBoxInactive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            var vScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor = Color.Gray.WithAlpha(0.35f), ContentMarginLeftOverride = 10
            };
            var vScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor = new Color(140, 140, 140).WithAlpha(0.35f), ContentMarginLeftOverride = 10
            };
            var vScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor = new Color(160, 160, 160).WithAlpha(0.35f), ContentMarginLeftOverride = 10
            };

            var hScrollBarGrabberNormal = new StyleBoxFlat
            {
                BackgroundColor = Color.Gray.WithAlpha(0.35f), ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberHover = new StyleBoxFlat
            {
                BackgroundColor = new Color(140, 140, 140).WithAlpha(0.35f), ContentMarginTopOverride = 10
            };
            var hScrollBarGrabberGrabbed = new StyleBoxFlat
            {
                BackgroundColor = new Color(160, 160, 160).WithAlpha(0.35f), ContentMarginTopOverride = 10
            };

            var progressBarBackground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.25f, 0.25f)
            };

            progressBarBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            var progressBarForeground = new StyleBoxFlat
            {
                BackgroundColor = new Color(0.25f, 0.50f, 0.25f)
            };

            progressBarForeground.SetContentMarginOverride(StyleBox.Margin.Vertical, 5);

            // CheckBox
            var checkBoxTextureChecked   = resCache.GetTexture("/Nano/checkbox_checked.svg.96dpi.png");
            var checkBoxTextureUnchecked = resCache.GetTexture("/Nano/checkbox_unchecked.svg.96dpi.png");

            // Tooltip box
            var tooltipTexture = resCache.GetTexture("/Nano/tooltip.png");
            var tooltipBox     = new StyleBoxTexture
            {
                Texture = tooltipTexture,
            };

            tooltipBox.SetPatchMargin(StyleBox.Margin.All, 2);
            tooltipBox.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5);

            // Placeholder
            var placeholderTexture = resCache.GetTexture("/Nano/placeholder.png");
            var placeholder        = new StyleBoxTexture {
                Texture = placeholderTexture
            };

            placeholder.SetPatchMargin(StyleBox.Margin.All, 24);
            placeholder.SetExpandMargin(StyleBox.Margin.All, -5);

            var itemListBackgroundSelected = new StyleBoxFlat {
                BackgroundColor = new Color(75, 75, 86)
            };

            itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListBackgroundSelected.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
            var itemListItemBackgroundDisabled = new StyleBoxFlat {
                BackgroundColor = new Color(10, 10, 12)
            };

            itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListItemBackgroundDisabled.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);
            var itemListItemBackground = new StyleBoxFlat {
                BackgroundColor = new Color(55, 55, 68)
            };

            itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            itemListItemBackground.SetContentMarginOverride(StyleBox.Margin.Horizontal, 4);

            Stylesheet = new Stylesheet(new[]
            {
                // Default font.
                new StyleRule(
                    new SelectorElement(null, null, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12),
                }),

                // Window title.
                new StyleRule(
                    new SelectorElement(typeof(Label), new[] { SS14Window.StyleClassWindowTitle }, null, null),
                    new[]
                {
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                    new StyleProperty(Label.StylePropertyFont, notoSansDisplayBold14),
                }),
                // Window background.
                new StyleRule(
                    new SelectorElement(null, new[] { SS14Window.StyleClassWindowPanel }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowBackground),
                }),
                // Window header.
                new StyleRule(
                    new SelectorElement(typeof(Panel), new[] { SS14Window.StyleClassWindowHeader }, null, null),
                    new[]
                {
                    new StyleProperty(Panel.StylePropertyPanel, windowHeader),
                }),
                // Window close button base texture.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        null),
                    new[]
                {
                    new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
                }),
                // Window close button hover.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new [] { TextureButton.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
                }),
                // Window close button pressed.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new [] { TextureButton.StylePseudoClassPressed }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
                }),

                // Regular buttons!
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, new [] { Button.StylePseudoClassNormal }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonNormal),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, new [] { Button.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonHover),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, new [] { Button.StylePseudoClassPressed }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonPressed),
                }),
                new StyleRule(
                    new SelectorElement(typeof(Button), null, null, new [] { Button.StylePseudoClassDisabled }),
                    new[]
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonDisabled),
                    new StyleProperty("font-color", Color.FromHex("#E5E5E581")),
                }),

                // Main menu: Make those buttons bigger.
                new StyleRule(
                    new SelectorChild(
                        new SelectorElement(null, null, "mainMenuVBox", null),
                        new SelectorElement(typeof(Button), null, null, null)),
                    new[]
                {
                    new StyleProperty("font", notoSansBold16),
                }),

                // Main menu: also make those buttons slightly more separated.
                new StyleRule(new SelectorElement(typeof(BoxContainer), null, "mainMenuVBox", null),
                              new[]
                {
                    new StyleProperty(BoxContainer.StylePropertySeparation, 2),
                }),

                // Fancy LineEdit
                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, null),
                              new[]
                {
                    new StyleProperty(LineEdit.StylePropertyStyleBox, lineEdit),
                }),

                new StyleRule(
                    new SelectorElement(typeof(LineEdit), new[] { LineEdit.StyleClassLineEditNotEditable }, null, null),
                    new[]
                {
                    new StyleProperty("font-color", new Color(192, 192, 192)),
                }),

                new StyleRule(new SelectorElement(typeof(LineEdit), null, null, new [] { LineEdit.StylePseudoClassPlaceholder }),
                              new[]
                {
                    new StyleProperty("font-color", Color.Gray),
                }),

                // TabContainer
                new StyleRule(new SelectorElement(typeof(TabContainer), null, null, null),
                              new[]
                {
                    new StyleProperty(TabContainer.StylePropertyPanelStyleBox, tabContainerPanel),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBox, tabContainerBoxActive),
                    new StyleProperty(TabContainer.StylePropertyTabStyleBoxInactive, tabContainerBoxInactive),
                }),

                // Scroll bars
                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberNormal),
                }),

                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, new [] { ScrollBar.StylePseudoClassHover }),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberHover),
                }),

                new StyleRule(new SelectorElement(typeof(VScrollBar), null, null, new [] { ScrollBar.StylePseudoClassGrabbed }),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      vScrollBarGrabberGrabbed),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberNormal),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, new [] { ScrollBar.StylePseudoClassHover }),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberHover),
                }),

                new StyleRule(new SelectorElement(typeof(HScrollBar), null, null, new [] { ScrollBar.StylePseudoClassGrabbed }),
                              new[]
                {
                    new StyleProperty(ScrollBar.StylePropertyGrabber,
                                      hScrollBarGrabberGrabbed),
                }),

                // ProgressBar
                new StyleRule(new SelectorElement(typeof(ProgressBar), null, null, null),
                              new[]
                {
                    new StyleProperty(ProgressBar.StylePropertyBackground, progressBarBackground),
                    new StyleProperty(ProgressBar.StylePropertyForeground, progressBarForeground)
                }),

                // CheckBox
                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, null), new[]
                {
                    new StyleProperty(CheckBox.StylePropertyIcon, checkBoxTextureUnchecked),
                }),

                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, new [] { Button.StylePseudoClassPressed }), new[]
                {
                    new StyleProperty(CheckBox.StylePropertyIcon, checkBoxTextureChecked),
                }),

                new StyleRule(new SelectorElement(typeof(CheckBox), null, null, null), new[]
                {
                    new StyleProperty(CheckBox.StylePropertyHSeparation, 3),
                }),

                // Tooltip
                new StyleRule(new SelectorElement(typeof(Tooltip), null, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                new StyleRule(new SelectorElement(typeof(PanelContainer), new [] { "tooltipBox" }, null, null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                // Entity tooltip
                new StyleRule(
                    new SelectorElement(typeof(PanelContainer), new[] { ExamineSystem.StyleClassEntityTooltip }, null,
                                        null), new[]
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, tooltipBox)
                }),

                // ItemList
                new StyleRule(new SelectorElement(typeof(ItemList), null, null, null), new[]
                {
                    new StyleProperty(ItemList.StylePropertyBackground,
                                      new StyleBoxFlat {
                        BackgroundColor = new Color(32, 32, 40)
                    }),
                    new StyleProperty(ItemList.StylePropertyItemBackground,
                                      itemListItemBackground),
                    new StyleProperty(ItemList.StylePropertyDisabledItemBackground,
                                      itemListItemBackgroundDisabled),
                    new StyleProperty(ItemList.StylePropertySelectedItemBackground,
                                      itemListBackgroundSelected)
                }),

                // Tree
                new StyleRule(new SelectorElement(typeof(Tree), null, null, null), new[]
                {
                    new StyleProperty(Tree.StylePropertyBackground,
                                      new StyleBoxFlat {
                        BackgroundColor = new Color(32, 32, 40)
                    }),
                    new StyleProperty(Tree.StylePropertyItemBoxSelected, new StyleBoxFlat
                    {
                        BackgroundColor           = new Color(55, 55, 68),
                        ContentMarginLeftOverride = 4
                    })
                }),

                // Placeholder
                new StyleRule(new SelectorElement(typeof(Placeholder), null, null, null), new []
                {
                    new StyleProperty(PanelContainer.StylePropertyPanel, placeholder),
                }),

                new StyleRule(new SelectorElement(typeof(Label), new [] { Placeholder.StyleClassPlaceholderText }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans16),
                    new StyleProperty(Label.StylePropertyFontColor, new Color(103, 103, 103, 128)),
                }),

                // Big Label
                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassLabelHeading }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansBold16),
                    new StyleProperty(Label.StylePropertyFontColor, NanoGold),
                }),

                // Small Label
                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassLabelSubText }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans10),
                    new StyleProperty(Label.StylePropertyFontColor, Color.DarkGray),
                }),

                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassLabelSecondaryColor }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFont, notoSans12),
                    new StyleProperty(Label.StylePropertyFontColor, Color.DarkGray),
                }),

                // Big Button
                new StyleRule(new SelectorElement(typeof(Button), new [] { StyleClassButtonBig }, null, null), new []
                {
                    new StyleProperty("font", notoSans16)
                }),

                //APC and SMES power state label colors
                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassPowerStateNone }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.8f, 0.0f, 0.0f))
                }),

                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassPowerStateLow }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.9f, 0.36f, 0.0f))
                }),

                new StyleRule(new SelectorElement(typeof(Label), new [] { StyleClassPowerStateGood }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFontColor, new Color(0.024f, 0.8f, 0.0f))
                }),

                // Those top menu buttons.
                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new [] { Button.StylePseudoClassNormal }), new []
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonNormal),
                }),

                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new [] { Button.StylePseudoClassPressed }), new []
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonPressed),
                }),

                new StyleRule(
                    new SelectorElement(typeof(GameHud.TopButton), null, null, new [] { Button.StylePseudoClassHover }), new []
                {
                    new StyleProperty(Button.StylePropertyStyleBox, buttonHover),
                }),

                new StyleRule(
                    new SelectorElement(typeof(Label), new [] { GameHud.TopButton.StyleClassLabelTopButton }, null, null), new []
                {
                    new StyleProperty(Label.StylePropertyFont, notoSansDisplayBold14),
                }),

                // Targeting doll

                new StyleRule(new SelectorElement(typeof(TextureButton), new [] { TargetingDoll.StyleClassTargetDollZone }, null, new [] { TextureButton.StylePseudoClassNormal }), new []
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#F00")),
                }),

                new StyleRule(new SelectorElement(typeof(TextureButton), new [] { TargetingDoll.StyleClassTargetDollZone }, null, new [] { TextureButton.StylePseudoClassHover }), new []
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#0F0")),
                }),

                new StyleRule(new SelectorElement(typeof(TextureButton), new [] { TargetingDoll.StyleClassTargetDollZone }, null, new [] { TextureButton.StylePseudoClassPressed }), new []
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#00F")),
                }),
            });
        }
        protected StyleBase(IResourceCache resCache)
        {
            var notoSans12         = resCache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12);
            var notoSans12Italic   = resCache.GetFont("/Fonts/NotoSans/NotoSans-Italic.ttf", 12);
            var textureCloseButton = resCache.GetTexture("/Textures/Interface/Nano/cross.svg.png");

            // Button styles.
            var buttonTex = resCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");

            BaseButton = new StyleBoxTexture
            {
                Texture = buttonTex,
            };
            BaseButton.SetPatchMargin(StyleBox.Margin.All, 10);
            BaseButton.SetPadding(StyleBox.Margin.All, 1);
            BaseButton.SetContentMarginOverride(StyleBox.Margin.Vertical, 2);
            BaseButton.SetContentMarginOverride(StyleBox.Margin.Horizontal, 14);

            BaseButtonOpenRight = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((0, 0), (14, 24))),
            };
            BaseButtonOpenRight.SetPatchMargin(StyleBox.Margin.Right, 0);
            BaseButtonOpenRight.SetContentMarginOverride(StyleBox.Margin.Right, 8);
            BaseButtonOpenRight.SetPadding(StyleBox.Margin.Right, 2);

            BaseButtonOpenLeft = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (14, 24))),
            };
            BaseButtonOpenLeft.SetPatchMargin(StyleBox.Margin.Left, 0);
            BaseButtonOpenLeft.SetContentMarginOverride(StyleBox.Margin.Left, 8);
            BaseButtonOpenLeft.SetPadding(StyleBox.Margin.Left, 1);

            BaseButtonOpenBoth = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (3, 24))),
            };
            BaseButtonOpenBoth.SetPatchMargin(StyleBox.Margin.Horizontal, 0);
            BaseButtonOpenBoth.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);
            BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Right, 2);
            BaseButtonOpenBoth.SetPadding(StyleBox.Margin.Left, 1);

            BaseButtonSquare = new StyleBoxTexture(BaseButton)
            {
                Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions((10, 0), (3, 24))),
            };
            BaseButtonSquare.SetPatchMargin(StyleBox.Margin.Horizontal, 0);
            BaseButtonSquare.SetContentMarginOverride(StyleBox.Margin.Horizontal, 8);
            BaseButtonSquare.SetPadding(StyleBox.Margin.Right, 2);
            BaseButtonSquare.SetPadding(StyleBox.Margin.Left, 1);

            BaseAngleRect = new StyleBoxTexture
            {
                Texture = buttonTex,
            };
            BaseAngleRect.SetPatchMargin(StyleBox.Margin.All, 10);

            BaseRules = new[]
            {
                // Default font.
                new StyleRule(
                    new SelectorElement(null, null, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12),
                }),

                // Default font.
                new StyleRule(
                    new SelectorElement(null, new[] { StyleClassItalic }, null, null),
                    new[]
                {
                    new StyleProperty("font", notoSans12Italic),
                }),

                // Window close button base texture.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        null),
                    new[]
                {
                    new StyleProperty(TextureButton.StylePropertyTexture, textureCloseButton),
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
                }),
                // Window close button hover.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new[] { TextureButton.StylePseudoClassHover }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
                }),
                // Window close button pressed.
                new StyleRule(
                    new SelectorElement(typeof(TextureButton), new[] { SS14Window.StyleClassWindowCloseButton }, null,
                                        new[] { TextureButton.StylePseudoClassPressed }),
                    new[]
                {
                    new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
                }),
            };
        }
Exemple #16
0
        public LobbyGui(IEntityManager entityManager,
                        IResourceCache resourceCache,
                        IClientPreferencesManager preferencesManager)
        {
            var margin = new MarginContainer
            {
                MarginBottomOverride = 20,
                MarginLeftOverride   = 20,
                MarginRightOverride  = 20,
                MarginTopOverride    = 20,
            };

            AddChild(margin);

            var panelTex = resourceCache.GetTexture("/Textures/Interface/Nano/button.svg.96dpi.png");
            var back     = new StyleBoxTexture
            {
                Texture  = panelTex,
                Modulate = new Color(37, 37, 42),
            };

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

            var panel = new PanelContainer
            {
                PanelOverride = back
            };

            margin.AddChild(panel);

            var vBox = new VBoxContainer {
                SeparationOverride = 0
            };

            margin.AddChild(vBox);

            var topHBox = new HBoxContainer
            {
                CustomMinimumSize = (0, 40),
                Children          =
                {
                    new MarginContainer
                    {
                        MarginLeftOverride = 8,
                        Children           =
                        {
                            new Label
                            {
                                Text         = Loc.GetString("Lobby"),
                                StyleClasses ={ StyleNano.StyleClassLabelHeadingBigger                    },
                                VAlign       = Label.VAlignMode.Center
                            }
                        }
                    },
                    (ServerName = new Label
                    {
                        StyleClasses ={ StyleNano.StyleClassLabelHeadingBigger                    },
                        VAlign = Label.VAlignMode.Center,
                        SizeFlagsHorizontal = SizeFlags.Expand | SizeFlags.ShrinkCenter
                    }),
                    (OptionsButton = new Button
                    {
                        SizeFlagsHorizontal = SizeFlags.ShrinkEnd,
                        Text = Loc.GetString("Options"),
                        StyleClasses ={ StyleNano.StyleClassButtonBig                             },
                    }),
                    (LeaveButton = new Button
                    {
                        SizeFlagsHorizontal = SizeFlags.ShrinkEnd,
                        Text = Loc.GetString("Leave"),
                        StyleClasses ={ StyleNano.StyleClassButtonBig                             },
                    })
                }
            };

            vBox.AddChild(topHBox);

            vBox.AddChild(new PanelContainer
            {
                PanelOverride = new StyleBoxFlat
                {
                    BackgroundColor          = StyleNano.NanoGold,
                    ContentMarginTopOverride = 2
                },
            });

            var hBox = new HBoxContainer
            {
                SizeFlagsVertical  = SizeFlags.FillExpand,
                SeparationOverride = 0
            };

            vBox.AddChild(hBox);

            CharacterPreview = new LobbyCharacterPreviewPanel(
                entityManager,
                preferencesManager)
            {
                SizeFlagsHorizontal = SizeFlags.None
            };
            hBox.AddChild(new VBoxContainer
            {
                SizeFlagsHorizontal = SizeFlags.FillExpand,
                SeparationOverride  = 0,
                Children            =
                {
                    CharacterPreview,

                    new StripeBack
                    {
                        Children =
                        {
                            new MarginContainer
                            {
                                MarginRightOverride  = 3,
                                MarginLeftOverride   = 3,
                                MarginTopOverride    = 3,
                                MarginBottomOverride = 3,
                                Children             =
                                {
                                    new HBoxContainer
                                    {
                                        SeparationOverride = 6,
                                        Children           =
                                        {
                                            (ObserveButton          = new Button
                                            {
                                                Text                = Loc.GetString("Observe"),
                                                StyleClasses        = { StyleNano.StyleClassButtonBig }
                                            }),
                                            (StartTime              = new Label
                                            {
                                                SizeFlagsHorizontal = SizeFlags.FillExpand,
                                                Align               = Label.AlignMode.Right,
                                                FontColorOverride   = Color.DarkGray,
                                                StyleClasses        = { StyleNano.StyleClassLabelBig  }
                                            }),
                                            (ReadyButton            = new Button
                                            {
                                                ToggleMode          = true,
                                                Text                = Loc.GetString("Ready Up"),
                                                StyleClasses        = { StyleNano.StyleClassButtonBig }
                                            }),
                                        }
                                    }
                                }
                            }
                        }
                    },

                    new MarginContainer
                    {
                        MarginRightOverride  = 3,
                        MarginLeftOverride   = 3,
                        MarginTopOverride    = 3,
                        MarginBottomOverride = 3,
                        SizeFlagsVertical    = SizeFlags.FillExpand,
                        Children             =
                        {
                            (Chat     = new ChatBox
                            {
                                Input = { PlaceHolder = Loc.GetString("Say something!") }
                            })
                        }
                    },
                }
            });

            hBox.AddChild(new PanelContainer
            {
                PanelOverride = new StyleBoxFlat {
                    BackgroundColor = StyleNano.NanoGold
                }, CustomMinimumSize = (2, 0)
            });