1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-16 18:53:12 +01:00
MLEM/MLEM.Ui/Elements/Button.cs

48 lines
1.8 KiB
C#
Raw Normal View History

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using MLEM.Extensions;
using MLEM.Textures;
2019-08-10 21:37:10 +02:00
using MLEM.Ui.Style;
namespace MLEM.Ui.Elements {
public class Button : Element {
2019-08-10 21:37:10 +02:00
public NinePatch Texture;
public NinePatch HoveredTexture;
public Color HoveredColor;
public Paragraph Text;
2019-08-13 23:54:29 +02:00
public Tooltip Tooltip;
2019-08-13 23:54:29 +02:00
public Button(Anchor anchor, Vector2 size, string text = null, string tooltipText = null, float tooltipWidth = 50) : base(anchor, size) {
if (text != null) {
this.Text = new Paragraph(Anchor.Center, 1, text, true);
this.AddChild(this.Text);
}
2019-08-13 23:54:29 +02:00
if (tooltipText != null) {
this.Tooltip = new Tooltip(tooltipWidth, tooltipText);
this.OnMouseEnter += element => this.System.Add("ButtonTooltip", this.Tooltip);
this.OnMouseExit += element => this.System.Remove("ButtonTooltip");
}
}
public override void Draw(GameTime time, SpriteBatch batch, float alpha, Point offset) {
var tex = this.Texture;
2019-08-10 13:42:18 +02:00
var color = Color.White * alpha;
if (this.IsMouseOver) {
if (this.HoveredTexture != null)
tex = this.HoveredTexture;
2019-08-10 13:42:18 +02:00
color = this.HoveredColor * alpha;
}
batch.Draw(tex, this.DisplayArea.OffsetCopy(offset), color, this.Scale);
base.Draw(time, batch, alpha, offset);
}
2019-08-10 21:37:10 +02:00
protected override void InitStyle(UiStyle style) {
base.InitStyle(style);
this.Texture = style.ButtonTexture;
this.HoveredTexture = style.ButtonHoveredTexture;
this.HoveredColor = style.ButtonHoveredColor;
}
}
}