UI/BaseCanvas.Static.cs
namespace HC3;
partial class BaseCanvas
{
private static Dictionary<string, BaseCanvas> canvases = new();
public static string OpenedCanvas { get; private set; } = string.Empty;
public static void RegisterCanvas( string name, BaseCanvas canvas )
{
canvases[name] = canvas;
}
public static void OpenCanvas( string name )
{
foreach ( var canvas in canvases )
{
if ( canvas.Key == name )
{
canvas.Value.IsVisible = true;
canvas.Value.OnOpen();
}
else
{
canvas.Value.IsVisible = false;
canvas.Value.OnClose();
}
}
OpenedCanvas = name;
}
public static void CloseCanvas( string name )
{
canvases[name].IsVisible = false;
OpenedCanvas = string.Empty;
}
public static void ToggleCanvas( string name )
{
if ( !canvases.ContainsKey( name ) )
{
Log.Warning( $"Canvas {name} not found." );
return;
}
if ( canvases[name].IsVisible )
{
CloseCanvas( name );
}
else
{
OpenCanvas( name );
}
}
public static void CloseAllCanvases()
{
foreach ( var canvas in canvases )
{
canvas.Value.IsVisible = false;
canvas.Value.OnClose();
}
OpenedCanvas = string.Empty;
}
}