Editor/YaaiManager.cs
using System.Collections.Generic;
using System.Threading.Tasks;
using Editor;
using Sandbox;

namespace YAAI;

public static class YaaiManager
{
	public static EditorMainWindow MainWindow;
	public static bool hasBegun { get; private set; } = false;
	public static readonly int MaxWindows = 16;
	public static readonly int SpawnRate = 3;
	public static List<YaaiWindow> Windows = new(MaxWindows);

	[Event( "editor.created" )]
	public static async void OnEditorCreated(EditorMainWindow mainWindow)
	{
		if ( hasBegun ) return;
		hasBegun = true;
		
		MainWindow = mainWindow;
		await Task.Delay( 5000 );
		mainWindow.Title = "YAAI";
		var MainWidget = new YaaiWidget( SceneOverlayWidget.Active );
		MainWidget.OnPaintOverride = () =>
		{
			if ( !MainWidget.colorchange ) return false;
			var color = MainWidget.color == 0 ? "black" : "white";
			MainWindow.SetStyles( $"background: {color}; color: {color};" );
			
			return false;
		};
		
		MainWidget.Show();
		await Task.Delay( 8000 );
		SpawnWindows();
		
	}
	
	[Event("hotloaded")]
	public static async void OnHotloaded()
	{
		OnEditorCreated(MainWindow);
	}

	static void SpawnWindows()
	{
		for ( int i = 0; i < SpawnRate; i++ )
		{
			if ( Windows.Count >= MaxWindows ) break;
		
			var window = new YaaiWindow();
			Windows.Add( window );
		}
	}

	public static void OnWindowClose( YaaiWindow window )
	{
		Windows.Remove( window );
		
		if (EditorWindow.IsWindow)
			SpawnWindows();
	}
}