WindowManager.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace COM3D2.MeidoPhotoStudio.Plugin
  5. {
  6. using static Constants;
  7. internal class WindowManager
  8. {
  9. private Dictionary<Window, BaseWindow> Windows = new Dictionary<Window, BaseWindow>();
  10. private List<BaseWindow> WindowList = new List<BaseWindow>();
  11. public BaseWindow this[Window id]
  12. {
  13. get => Windows[id];
  14. set
  15. {
  16. Windows[id] = value;
  17. WindowList.Add(Windows[id]);
  18. }
  19. }
  20. public bool AddWindow(Window id, BaseWindow window)
  21. {
  22. if (!this.Windows.ContainsKey(id))
  23. {
  24. this.Windows[id] = window;
  25. this.WindowList.Add(window);
  26. return true;
  27. }
  28. return false;
  29. }
  30. public bool RemoveWindow(Window id)
  31. {
  32. if (Windows.ContainsKey(id))
  33. {
  34. WindowList.Remove(Windows[id]);
  35. Windows.Remove(id);
  36. return true;
  37. }
  38. return false;
  39. }
  40. public void DrawWindow(Window id)
  41. {
  42. DrawWindow(Windows[id]);
  43. }
  44. public void DrawWindow(BaseWindow window)
  45. {
  46. if (window.Visible)
  47. {
  48. GUIStyle windowStyle = new GUIStyle(GUI.skin.box);
  49. window.WindowRect = GUI.Window(window.windowID, window.WindowRect, window.GUIFunc, "", windowStyle);
  50. }
  51. if (DropdownHelper.Visible) DropdownHelper.HandleDropdown();
  52. }
  53. public void DrawWindows()
  54. {
  55. foreach (BaseWindow window in WindowList)
  56. {
  57. DrawWindow(window);
  58. }
  59. }
  60. public void Update()
  61. {
  62. foreach (BaseWindow window in WindowList)
  63. {
  64. window.Update();
  65. }
  66. }
  67. public void Activate()
  68. {
  69. foreach (BaseWindow window in WindowList)
  70. {
  71. window.Activate();
  72. }
  73. }
  74. public void Deactivate()
  75. {
  76. foreach (BaseWindow window in WindowList)
  77. {
  78. window.Deactivate();
  79. }
  80. }
  81. }
  82. }