GravityControlPane.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class GravityControlPane : BasePane
  4. {
  5. private readonly MeidoManager meidoManager;
  6. private readonly Toggle hairToggle;
  7. private readonly Toggle skirtToggle;
  8. private readonly Toggle globalToggle;
  9. private string header;
  10. public GravityControlPane(MeidoManager meidoManager)
  11. {
  12. this.meidoManager = meidoManager;
  13. hairToggle = new(Translation.Get("gravityControlPane", "hairToggle"));
  14. hairToggle.ControlEvent += (_, _) =>
  15. ToggleGravity(hairToggle.Value, skirt: false);
  16. skirtToggle = new(Translation.Get("gravityControlPane", "skirtToggle"));
  17. skirtToggle.ControlEvent += (_, _) =>
  18. ToggleGravity(skirtToggle.Value, skirt: true);
  19. globalToggle = new(Translation.Get("gravityControlPane", "globalToggle"));
  20. globalToggle.ControlEvent += (_, _) =>
  21. SetGlobalGravity(globalToggle.Value);
  22. header = Translation.Get("gravityControlPane", "gravityHeader");
  23. }
  24. public override void Draw()
  25. {
  26. var enabled = meidoManager.HasActiveMeido;
  27. GUI.enabled = enabled;
  28. MpsGui.Header(header);
  29. MpsGui.WhiteLine();
  30. var meido = meidoManager.ActiveMeido;
  31. GUILayout.BeginHorizontal();
  32. GUI.enabled = enabled && meido.HairGravityControl.Valid;
  33. hairToggle.Draw();
  34. GUI.enabled = enabled && meido.SkirtGravityControl.Valid;
  35. skirtToggle.Draw();
  36. GUILayout.EndHorizontal();
  37. GUI.enabled = enabled;
  38. globalToggle.Draw();
  39. GUI.enabled = true;
  40. }
  41. public override void UpdatePane()
  42. {
  43. if (!meidoManager.HasActiveMeido)
  44. return;
  45. var meido = meidoManager.ActiveMeido;
  46. updating = true;
  47. hairToggle.Value = meido.HairGravityActive;
  48. skirtToggle.Value = meido.SkirtGravityActive;
  49. updating = false;
  50. }
  51. protected override void ReloadTranslation()
  52. {
  53. hairToggle.Label = Translation.Get("gravityControlPane", "hairToggle");
  54. skirtToggle.Label = Translation.Get("gravityControlPane", "skirtToggle");
  55. globalToggle.Label = Translation.Get("gravityControlPane", "globalToggle");
  56. header = Translation.Get("gravityControlPane", "gravityHeader");
  57. }
  58. private void ToggleGravity(bool value, bool skirt = false)
  59. {
  60. if (updating)
  61. return;
  62. if (meidoManager.GlobalGravity)
  63. {
  64. foreach (var meido in meidoManager.ActiveMeidoList)
  65. {
  66. if (skirt)
  67. meido.SkirtGravityActive = value;
  68. else
  69. meido.HairGravityActive = value;
  70. }
  71. }
  72. else
  73. {
  74. if (skirt)
  75. meidoManager.ActiveMeido.SkirtGravityActive = value;
  76. else
  77. meidoManager.ActiveMeido.HairGravityActive = value;
  78. }
  79. }
  80. private void SetGlobalGravity(bool value) =>
  81. meidoManager.GlobalGravity = value;
  82. }