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.Sound;
using MLEM.Textures;
using MLEM.Ui.Elements;
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 = Color.CornflowerBlue;
///
/// A set of additional fonts that can be used for the <f FontName> formatting code
///
public Dictionary AdditionalFonts = new Dictionary();
}
}