WindowManager.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using static MeidoPhotoStudio.Plugin.Constants;
  4. namespace MeidoPhotoStudio.Plugin;
  5. public class WindowManager : IManager
  6. {
  7. private readonly Dictionary<Window, BaseWindow> windows = new();
  8. public WindowManager() =>
  9. InputManager.Register(MpsKey.ToggleUI, KeyCode.Tab, "Show/hide all UI");
  10. public BaseWindow this[Window id]
  11. {
  12. get => windows[id];
  13. set
  14. {
  15. windows[id] = value;
  16. windows[id].Activate();
  17. }
  18. }
  19. public void DrawWindow(BaseWindow window)
  20. {
  21. if (!window.Visible)
  22. return;
  23. var windowStyle = new GUIStyle(GUI.skin.box);
  24. window.WindowRect = GUI.Window(window.WindowID, window.WindowRect, window.GUIFunc, string.Empty, windowStyle);
  25. }
  26. public void DrawWindows()
  27. {
  28. foreach (var window in windows.Values)
  29. DrawWindow(window);
  30. }
  31. public void Update()
  32. {
  33. foreach (var window in windows.Values)
  34. window.Update();
  35. }
  36. public void Activate()
  37. {
  38. foreach (var window in windows.Values)
  39. window.Activate();
  40. }
  41. public void Deactivate()
  42. {
  43. foreach (var window in windows.Values)
  44. window.Deactivate();
  45. }
  46. }