using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Controls; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using static Content.Client.Stylesheets.StylesheetHelpers; namespace Content.Client.Stylesheets.Sheetlets; [CommonSheetlet] public sealed class SwitchButtonSheetlet : Sheetlet where T : PalettedStylesheet, ISwitchButtonConfig { public override StyleRule[] GetRules(T sheet, object config) { ISwitchButtonConfig switchButtonCfg = sheet; var trackFillTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonTrackFillPath, NanotrasenStylesheet.TextureRoot); var trackOutlineTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonTrackOutlinePath, NanotrasenStylesheet.TextureRoot); var thumbFillTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonThumbFillPath, NanotrasenStylesheet.TextureRoot); var thumbOutlineTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonThumbOutlinePath, NanotrasenStylesheet.TextureRoot); var symbolOffTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonSymbolOffPath, NanotrasenStylesheet.TextureRoot); var symbolOnTex = sheet.GetTextureOr(switchButtonCfg.SwitchButtonSymbolOnPath, NanotrasenStylesheet.TextureRoot); return [ // SwitchButton E().Prop(SwitchButton.StylePropertySeparation, 10), E() .ParentOf(E().Class(SwitchButton.StyleClassTrackFill)) .Prop(TextureRect.StylePropertyTexture, trackFillTex) .Modulate(sheet.SecondaryPalette.BackgroundDark), E() .ParentOf(E().Class(SwitchButton.StyleClassTrackOutline)) .Prop(TextureRect.StylePropertyTexture, trackOutlineTex) .Modulate(sheet.SecondaryPalette.Text), E() .ParentOf(E().Class(SwitchButton.StyleClassThumbFill)) .Prop(TextureRect.StylePropertyTexture, thumbFillTex) .Modulate(sheet.PrimaryPalette.Element) .HorizontalAlignment(Control.HAlignment.Left), E() .ParentOf(E().Class(SwitchButton.StyleClassThumbOutline)) .Prop(TextureRect.StylePropertyTexture, thumbOutlineTex) .Modulate(sheet.PrimaryPalette.Text) .HorizontalAlignment(Control.HAlignment.Left), E() .ParentOf(E().Class(SwitchButton.StyleClassSymbol)) .Prop(TextureRect.StylePropertyTexture, symbolOffTex) .Modulate(sheet.SecondaryPalette.Text), // Pressed styles E() .PseudoPressed() .ParentOf(E().Class(SwitchButton.StyleClassTrackFill)) .Modulate(sheet.PositivePalette.Text), E() .PseudoPressed() .ParentOf(E().Class(SwitchButton.StyleClassSymbol)) .Prop(TextureRect.StylePropertyTexture, symbolOnTex) .Modulate(Color.White), // Same color as text, not yet in any of the palettes E() .PseudoPressed() .ParentOf(E().Class(SwitchButton.StyleClassThumbFill)) .HorizontalAlignment(Control.HAlignment.Right), E() .PseudoPressed() .ParentOf(E().Class(SwitchButton.StyleClassThumbOutline)) .HorizontalAlignment(Control.HAlignment.Right), // Disabled styles E() .PseudoDisabled() .ParentOf(E().Class(SwitchButton.StyleClassTrackFill)) .Modulate(sheet.SecondaryPalette.DisabledElement), E() .PseudoDisabled() .ParentOf(E().Class(SwitchButton.StyleClassTrackOutline)) .Modulate(sheet.SecondaryPalette.DisabledElement), E() .PseudoDisabled() .ParentOf(E().Class(SwitchButton.StyleClassThumbFill)) .Modulate(sheet.PrimaryPalette.DisabledElement), E() .PseudoDisabled() .ParentOf(E().Class(SwitchButton.StyleClassThumbOutline)) .Modulate(sheet.PrimaryPalette.TextDark), E() .PseudoDisabled() .ParentOf(E().Class(SwitchButton.StyleClassSymbol)) .Modulate(sheet.SecondaryPalette.TextDark), E() .PseudoDisabled() .ParentOf(E