osu/osu.Game/Overlays/Overlay.cs

42 lines
1.0 KiB
C#
Raw Normal View History

2016-10-13 14:57:05 +00:00
using osu.Framework;
using osu.Framework.Graphics.Containers;
namespace osu.Game.Overlays
{
public abstract class Overlay : Container, IStateful<Visibility>
{
private Visibility state;
public Visibility State
{
get { return state; }
set
{
if (value == state) return;
state = value;
switch (value)
{
case Visibility.Hidden:
PopOut();
break;
case Visibility.Visible:
PopIn();
break;
}
}
}
protected abstract void PopIn();
protected abstract void PopOut();
public void ReverseVisibility()
=> State = (State == Visibility.Visible ? Visibility.Hidden : Visibility.Visible);
}
public enum Visibility
{
Hidden,
Visible
}
}