1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-06-28 07:19:09 +02:00
MLEM/MLEM.Ui/Elements/ElementHelper.cs
2019-08-24 12:56:58 +02:00

44 lines
1.8 KiB
C#

using Microsoft.Xna.Framework;
using MLEM.Input;
namespace MLEM.Ui.Elements {
public static class ElementHelper {
public static Group NumberField(Anchor anchor, Vector2 size, int defaultValue = 0, int stepPerClick = 1, TextField.Rule rule = null, TextField.TextChanged onTextChange = null) {
var group = new Group(anchor, size, false);
var field = new TextField(Anchor.TopLeft, Vector2.One, rule ?? TextField.OnlyNumbers);
field.OnTextChange = onTextChange;
field.AppendText(defaultValue.ToString());
group.AddChild(field);
group.OnAreaUpdated += e => field.Size = new Vector2((e.Area.Width - e.Area.Height / 2) / e.Scale, 1);
var upButton = new Button(Anchor.TopRight, Vector2.One, "+") {
OnClicked = (element, button) => {
if (button == MouseButton.Left) {
var text = field.Text.ToString();
if (int.TryParse(text, out var val))
field.SetText(val + stepPerClick);
}
}
};
group.AddChild(upButton);
group.OnAreaUpdated += e => upButton.Size = new Vector2(e.Area.Height / 2 / e.Scale);
var downButton = new Button(Anchor.BottomRight, Vector2.One, "-") {
OnClicked = (element, button) => {
if (button == MouseButton.Left) {
var text = field.Text.ToString();
if (int.TryParse(text, out var val))
field.SetText(val - stepPerClick);
}
}
};
group.AddChild(downButton);
group.OnAreaUpdated += e => downButton.Size = new Vector2(e.Area.Height / 2 / e.Scale);
return group;
}
}
}