using System;
namespace Uigenx
{
/// Presentation layers, ordered from the world outwards.
public enum UgxLayer
{
Scene = 0,
Hud = 1,
Overlay = 2,
Modal = 3,
System = 4,
}
public static class UgxLayers
{
public const int Count = 5;
/// PanelSettings sort order for a layer. Layers are 100 apart so games can slot panels between them.
public static float SortOrder(UgxLayer layer) => (int)layer * 100f;
public static string ToWireName(this UgxLayer layer)
{
switch (layer)
{
case UgxLayer.Scene: return "scene";
case UgxLayer.Hud: return "hud";
case UgxLayer.Overlay: return "overlay";
case UgxLayer.Modal: return "modal";
case UgxLayer.System: return "system";
default: throw new ArgumentOutOfRangeException(nameof(layer));
}
}
public static bool TryParse(string wireName, out UgxLayer layer)
{
switch (wireName)
{
case "scene": layer = UgxLayer.Scene; return true;
case "hud": layer = UgxLayer.Hud; return true;
case "overlay": layer = UgxLayer.Overlay; return true;
case "modal": layer = UgxLayer.Modal; return true;
case "system": layer = UgxLayer.System; return true;
default: layer = UgxLayer.Hud; return false;
}
}
}
}