WindowManager.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. }
  52. public void DrawWindows()
  53. {
  54. foreach (BaseWindow window in WindowList)
  55. {
  56. DrawWindow(window);
  57. }
  58. }
  59. public void Update()
  60. {
  61. foreach (BaseWindow window in WindowList)
  62. {
  63. window.Update();
  64. }
  65. }
  66. public void Activate()
  67. {
  68. foreach (BaseWindow window in WindowList)
  69. {
  70. window.Activate();
  71. }
  72. }
  73. public void Deactivate()
  74. {
  75. foreach (BaseWindow window in WindowList)
  76. {
  77. window.Deactivate();
  78. }
  79. }
  80. }
  81. }