WindowManager.cs 2.2 KB

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