using System.Numerics; using Content.Client.Stylesheets.Fonts; using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Controls; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using static Content.Client.Stylesheets.StylesheetHelpers; namespace Content.Client.Stylesheets.Sheetlets; [CommonSheetlet] public sealed class MenuButtonSheetlet : Sheetlet where T : PalettedStylesheet, IButtonConfig, IIconConfig { private static MutableSelectorElement CButton() { return E(); } public override StyleRule[] GetRules(T sheet, object config) { IButtonConfig cfg = sheet; var buttonTex = sheet.GetTextureOr(cfg.BaseButtonPath, NanotrasenStylesheet.TextureRoot); var topButtonBase = new StyleBoxTexture { Texture = buttonTex, }; topButtonBase.SetPatchMargin(StyleBox.Margin.All, 10); topButtonBase.SetPadding(StyleBox.Margin.All, 0); topButtonBase.SetContentMarginOverride(StyleBox.Margin.All, 0); var topButtonOpenRight = new StyleBoxTexture(topButtonBase) { Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions(new Vector2(0, 0), new Vector2(14, 24))), }; topButtonOpenRight.SetPatchMargin(StyleBox.Margin.Right, 0); var topButtonOpenLeft = new StyleBoxTexture(topButtonBase) { Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions(new Vector2(10, 0), new Vector2(14, 24))), }; topButtonOpenLeft.SetPatchMargin(StyleBox.Margin.Left, 0); var topButtonSquare = new StyleBoxTexture(topButtonBase) { Texture = new AtlasTexture(buttonTex, UIBox2.FromDimensions(new Vector2(10, 0), new Vector2(3, 24))), }; topButtonSquare.SetPatchMargin(StyleBox.Margin.Horizontal, 0); var rules = new List { CButton().Class(StyleClass.ButtonSquare).Box(topButtonSquare), CButton().Class(StyleClass.ButtonOpenLeft).Box(topButtonOpenLeft), CButton().Class(StyleClass.ButtonOpenRight).Box(topButtonOpenRight), CButton().Box(StyleBoxHelpers.BaseStyleBox(sheet)), CButton() .Class(StyleClass.ButtonOpenLeft) .Prop(ContainerButton.StylePropertyStyleBox, StyleBoxHelpers.OpenLeftStyleBox(sheet)), CButton() .Class(StyleClass.ButtonOpenRight) .Prop(ContainerButton.StylePropertyStyleBox, StyleBoxHelpers.OpenRightStyleBox(sheet)), CButton() .Class(StyleClass.ButtonOpenBoth) .Prop(ContainerButton.StylePropertyStyleBox, StyleBoxHelpers.SquareStyleBox(sheet)), CButton() .Class(StyleClass.ButtonSquare) .Prop(ContainerButton.StylePropertyStyleBox, StyleBoxHelpers.SquareStyleBox(sheet)), E