WindowManager.cs 1.4 KB

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