using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using MLEM.Font; using MLEM.Formatting; using MLEM.Formatting.Codes; using MLEM.Misc; using MLEM.Textures; using MLEM.Ui.Elements; using SoundEffectInfo = MLEM.Sound.SoundEffectInfo; namespace MLEM.Ui.Style { /// /// The style settings for a . /// Each uses these style settings by default, however you can also change these settings per element using the elements' individual style settings. /// Note that this class is a , meaning additional styles for custom components can easily be added using /// public class UiStyle : GenericDataHolder { /// /// The texture that is rendered on top of the /// public NinePatch SelectionIndicator; /// /// The texture that the element uses /// public NinePatch ButtonTexture; /// /// The texture that the element uses when it is moused over () /// Note that, if you just want to change the button's color when hovered, use . /// public NinePatch ButtonHoveredTexture; /// /// The color that the element renders with when it is moused over () /// public Color ButtonHoveredColor = Color.LightGray; /// /// The texture that the element uses when it /// public NinePatch ButtonDisabledTexture; /// /// The color that the element uses when it /// public Color ButtonDisabledColor = Color.Gray; /// /// The texture that the element uses /// public NinePatch PanelTexture; /// /// The to apply to a by default /// public Padding PanelChildPadding = new Vector2(5); /// /// The amount that a 's scrollable area is moved per single movement of the scroll wheel /// public float PanelStepPerScroll = 10; /// /// The size of the scroller of a 's scroll bar /// public Vector2 PanelScrollerSize = new Vector2(5, 10); /// /// The amount of pixels of room there should be between a 's scroll bar and the rest of its content /// public float PanelScrollBarOffset = 1; /// /// The texture that the element uses /// public NinePatch TextFieldTexture; /// /// The texture that the element uses when it is moused over () /// public NinePatch TextFieldHoveredTexture; /// /// The color that the renders with when it is moused over () /// public Color TextFieldHoveredColor = Color.LightGray; /// /// The x position that a 's text should start rendering at, based on the x position of the text field /// public float TextFieldTextOffsetX = 4; /// /// The width that a 's caret should render with /// public float TextFieldCaretWidth = 0.5F; /// /// The background texture that the element uses /// public NinePatch ScrollBarBackground; /// /// The texture that the scroll indicator of the element uses /// public NinePatch ScrollBarScrollerTexture; /// /// Whether or not a should use smooth scrolling /// public bool ScrollBarSmoothScrolling; /// /// The factor with which a 's smooth scrolling happens /// public float ScrollBarSmoothScrollFactor = 0.75F; /// /// The texture that the element uses /// public NinePatch CheckboxTexture; /// /// The texture that the element uses when it is moused over () /// public NinePatch CheckboxHoveredTexture; /// /// The color that the element renders with when it is moused over () /// public Color CheckboxHoveredColor = Color.LightGray; /// /// The texture that the element uses when it . /// public NinePatch CheckboxDisabledTexture; /// /// The color that the element uses when it . /// public Color CheckboxDisabledColor = Color.Gray; /// /// The texture that the element renders on top of its regular texture when it is /// public TextureRegion CheckboxCheckmark; /// /// The width of the space between a and its /// public float CheckboxTextOffsetX = 2; /// /// The texture that the element uses /// public NinePatch RadioTexture; /// /// The texture that the element uses when it is moused over () /// public NinePatch RadioHoveredTexture; /// /// The color that the element renders with when it is moused over () /// public Color RadioHoveredColor = Color.LightGray; /// /// The texture that the renders on top of its regular texture when it is /// public TextureRegion RadioCheckmark; /// /// The texture that the uses for its background /// public NinePatch TooltipBackground; /// /// The offset of the element's top left corner from the mouse position /// public Vector2 TooltipOffset = new Vector2(8, 16); /// /// The offset of the element's top center coordinate from the bottom center of the element snapped to when is true. /// public Vector2 TooltipAutoNavOffset = new Vector2(0, 8); /// /// The color that the text of a should have /// public Color TooltipTextColor = Color.White; /// /// The amount of time that the mouse has to be over an element with a for the tooltip to appear /// public TimeSpan TooltipDelay = TimeSpan.Zero; /// /// The width of a 's default text /// public float TooltipTextWidth = 50; /// /// The to apply to a by default /// public Padding TooltipChildPadding = new Vector2(2); /// /// The texture that the element uses for its background /// public NinePatch ProgressBarTexture; /// /// The color that the element renders with /// public Color ProgressBarColor = Color.White; /// /// The padding that the uses for its progress texture () /// public Vector2 ProgressBarProgressPadding = new Vector2(1); /// /// The texture that the uses for displaying its progress /// public NinePatch ProgressBarProgressTexture; /// /// The color that the renders its progress texture with /// public Color ProgressBarProgressColor = Color.Red; /// /// The font that and other elements should use for rendering. /// Note that, to specify a bold and italic font for , you should use and . /// public GenericFont Font; /// /// The scale that text should be rendered with in and other elements /// public float TextScale = 1; /// /// The color that the text of a should have /// public Color TextColor = Color.White; /// /// The that a should use by default. /// public TextAlignment TextAlignment; /// /// The that should be played when an element's and events are called. /// Note that this sound is only played if the callbacks have any subscribers. /// public SoundEffectInfo ActionSound; /// /// The color that a 's codes should have. /// This value is passed to . /// public Color? LinkColor; /// /// A set of additional fonts that can be used for the <f FontName> formatting code /// public Dictionary AdditionalFonts = new Dictionary(); } }