osu/osu.Game/Overlays/Overlay.cs
2016-10-14 05:02:13 +08:00

42 lines
1.0 KiB
C#

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 ToggleVisibility()
=> State = (State == Visibility.Visible ? Visibility.Hidden : Visibility.Visible);
}
public enum Visibility
{
Hidden,
Visible
}
}