using System.Collections.Generic; using UnityEngine; using static MeidoPhotoStudio.Plugin.Constants; namespace MeidoPhotoStudio.Plugin { public class WindowManager : IManager { private readonly Dictionary Windows = new(); public BaseWindow this[Window id] { get => Windows[id]; set { Windows[id] = value; Windows[id].Activate(); } } public WindowManager() => InputManager.Register(MpsKey.ToggleUI, KeyCode.Tab, "Show/hide all UI"); public void DrawWindow(BaseWindow window) { if (!window.Visible) return; var windowStyle = new GUIStyle(GUI.skin.box); window.WindowRect = GUI.Window(window.windowID, window.WindowRect, window.GUIFunc, "", windowStyle); } public void DrawWindows() { foreach (var window in Windows.Values) DrawWindow(window); } public void Update() { foreach (var window in Windows.Values) window.Update(); } public void Activate() { foreach (var window in Windows.Values) window.Activate(); } public void Deactivate() { foreach (var window in Windows.Values) window.Deactivate(); } } }