1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-05-31 12:23:38 +02:00

make next elements into delegates rather than a method

This commit is contained in:
Ellpeck 2019-09-11 10:49:51 +02:00
parent 39be76fbbf
commit e38d95c665
2 changed files with 13 additions and 14 deletions

View file

@ -79,6 +79,8 @@ namespace MLEM.Ui.Elements {
public GenericCallback OnAreaUpdated;
public OtherElementCallback OnMousedElementChanged;
public OtherElementCallback OnSelectedElementChanged;
public TabNextElementCallback GetTabNextElement;
public GamepadNextElementCallback GetGamepadNextElement;
private UiSystem system;
public UiSystem System {
@ -145,6 +147,8 @@ namespace MLEM.Ui.Elements {
this.OnMouseExit += element => this.IsMouseOver = false;
this.OnSelected += element => this.IsSelected = true;
this.OnDeselected += element => this.IsSelected = false;
this.GetTabNextElement = (backward, next) => next;
this.GetGamepadNextElement = (dir, next) => next;
this.SetAreaDirty();
}
@ -434,14 +438,6 @@ namespace MLEM.Ui.Elements {
return this.CanBeMoused && this.Area.Contains(position) ? this : null;
}
public virtual Element GetTabNextElement(bool backward, Element usualNext) {
return usualNext;
}
public virtual Element GetGamepadNextElement(Direction2 dir, Element usualNext) {
return usualNext;
}
public void AndChildren(Action<Element> action) {
action(this);
foreach (var child in this.Children)
@ -460,5 +456,9 @@ namespace MLEM.Ui.Elements {
public delegate void DrawCallback(Element element, GameTime time, SpriteBatch batch, float alpha);
public delegate Element TabNextElementCallback(bool backward, Element usualNext);
public delegate Element GamepadNextElementCallback(Direction2 dir, Element usualNext);
}
}

View file

@ -8,6 +8,11 @@ namespace MLEM.Ui.Elements {
public Slider(Anchor anchor, Vector2 size, int scrollerSize, float maxValue) :
base(anchor, size, scrollerSize, maxValue, true) {
this.CanBeSelected = true;
this.GetGamepadNextElement = (dir, next) => {
if (dir == Direction2.Left || dir == Direction2.Right)
return null;
return next;
};
}
public override void Update(GameTime time) {
@ -22,11 +27,5 @@ namespace MLEM.Ui.Elements {
}
}
public override Element GetGamepadNextElement(Direction2 dir, Element usualNext) {
if (dir == Direction2.Left || dir == Direction2.Right)
return null;
return base.GetGamepadNextElement(dir, usualNext);
}
}
}