2020-05-15 19:55:59 +02:00
using System ;
2019-08-10 21:37:10 +02:00
using Microsoft.Xna.Framework ;
2020-01-14 22:39:40 +01:00
using Microsoft.Xna.Framework.Audio ;
2019-08-10 21:37:10 +02:00
using MLEM.Font ;
2019-12-26 19:30:17 +01:00
using MLEM.Formatting ;
2020-03-21 00:49:43 +01:00
using MLEM.Misc ;
2019-08-10 21:37:10 +02:00
using MLEM.Textures ;
2020-05-22 17:02:24 +02:00
using MLEM.Ui.Elements ;
2019-08-10 21:37:10 +02:00
namespace MLEM.Ui.Style {
2020-05-22 17:02:24 +02:00
/// <summary>
/// The style settings for a <see cref="UiSystem"/>.
/// Each <see cref="Element"/> 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 <see cref="GenericDataHolder"/>, meaning additional styles for custom components can easily be added using <see cref="GenericDataHolder.SetData"/>
/// </summary>
2020-03-21 00:49:43 +01:00
public class UiStyle : GenericDataHolder {
2019-08-10 21:37:10 +02:00
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that is rendered on top of the <see cref="UiControls.SelectedElement"/>
/// </summary>
2019-08-28 18:27:17 +02:00
public NinePatch SelectionIndicator ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Button"/> element uses
/// </summary>
2019-08-10 21:37:10 +02:00
public NinePatch ButtonTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Button"/> element uses when it is moused over (<see cref="Element.IsMouseOver"/>)
/// Note that, if you just want to change the button's color when hovered, use <see cref="ButtonHoveredColor"/>.
/// </summary>
2019-08-10 21:37:10 +02:00
public NinePatch ButtonHoveredTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="Button"/> element renders with when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-10 21:37:10 +02:00
public Color ButtonHoveredColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Button"/> element uses when it <see cref="Button.IsDisabled"/>
/// </summary>
2020-01-15 17:05:28 +01:00
public NinePatch ButtonDisabledTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="Button"/> element uses when it <see cref="Button.IsDisabled"/>
/// </summary>
2020-01-15 17:05:28 +01:00
public Color ButtonDisabledColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Panel"/> element uses
/// </summary>
2019-08-10 21:37:10 +02:00
public NinePatch PanelTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="TextField"/> element uses
/// </summary>
2019-08-10 21:37:10 +02:00
public NinePatch TextFieldTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="TextField"/> element uses when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-10 21:37:10 +02:00
public NinePatch TextFieldHoveredTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="TextField"/> renders with when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-10 21:37:10 +02:00
public Color TextFieldHoveredColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The background texture that the <see cref="ScrollBar"/> element uses
/// </summary>
2019-08-12 19:44:16 +02:00
public NinePatch ScrollBarBackground ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the scroll indicator of the <see cref="ScrollBar"/> element uses
/// </summary>
2019-08-12 19:44:16 +02:00
public NinePatch ScrollBarScrollerTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Checkbox"/> element uses
/// </summary>
2019-08-13 21:23:20 +02:00
public NinePatch CheckboxTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Checkbox"/> element uses when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-13 21:23:20 +02:00
public NinePatch CheckboxHoveredTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="Checkbox"/> element renders with when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-13 21:23:20 +02:00
public Color CheckboxHoveredColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Checkbox"/> element renders on top of its regular texture when it is <see cref="Checkbox.Checked"/>
/// </summary>
2019-08-13 21:23:20 +02:00
public TextureRegion CheckboxCheckmark ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="RadioButton"/> element uses
/// </summary>
2019-08-13 21:23:20 +02:00
public NinePatch RadioTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="RadioButton"/> element uses when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-13 21:23:20 +02:00
public NinePatch RadioHoveredTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="RadioButton"/> element renders with when it is moused over (<see cref="Element.IsMouseOver"/>)
/// </summary>
2019-08-13 21:23:20 +02:00
public Color RadioHoveredColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="RadioButton"/> renders on top of its regular texture when it is <see cref="RadioButton.Checked"/>
/// </summary>
2019-08-13 21:23:20 +02:00
public TextureRegion RadioCheckmark ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="Tooltip"/> uses for its background
/// </summary>
2019-08-13 23:54:29 +02:00
public NinePatch TooltipBackground ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The offset of the <see cref="Tooltip"/> element's top left corner from the mouse position
/// </summary>
2019-12-31 14:08:13 +01:00
public Vector2 TooltipOffset ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="ProgressBar"/> element uses for its background
/// </summary>
2019-09-10 23:28:25 +02:00
public NinePatch ProgressBarTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="ProgressBar"/> element renders with
/// </summary>
2019-09-10 23:28:25 +02:00
public Color ProgressBarColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The padding that the <see cref="ProgressBar"/> uses for its progress texture (<see cref="ProgressBarProgressTexture"/>)
/// </summary>
2019-11-02 14:53:59 +01:00
public Vector2 ProgressBarProgressPadding ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The texture that the <see cref="ProgressBar"/> uses for displaying its progress
/// </summary>
2019-09-10 23:28:25 +02:00
public NinePatch ProgressBarProgressTexture ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The color that the <see cref="ProgressBar"/> renders its progress texture with
/// </summary>
2019-09-10 23:28:25 +02:00
public Color ProgressBarProgressColor ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The font that <see cref="Paragraph"/> and other elements should use for rendering.
/// Note that, to specify a bold and italic font for <see cref="TextFormatter"/>, you should use <see cref="GenericFont.Bold"/> and <see cref="GenericFont.Italic"/>.
/// </summary>
2020-03-28 22:25:06 +01:00
public GenericFont Font ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The scale that text should be rendered with in <see cref="Paragraph"/> and other elements
/// </summary>
2019-08-10 21:37:10 +02:00
public float TextScale = 1 ;
2020-05-22 17:02:24 +02:00
/// <summary>
/// The <see cref="SoundEffect"/> that should be played when an element's <see cref="Element.OnPressed"/> and <see cref="Element.OnSecondaryPressed"/> events are called.
/// Note that this sound is only played if the callbacks have any subscribers.
/// </summary>
2020-01-14 22:41:52 +01:00
public SoundEffect ActionSound ;
2019-08-28 18:27:17 +02:00
2019-08-10 21:37:10 +02:00
}
}