MessageWindow.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System;
  2. using UnityEngine;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class MessageWindow : BaseWindow
  5. {
  6. private readonly MessageWindowManager messageWindowManager;
  7. private readonly TextField nameTextField;
  8. private readonly Slider fontSizeSlider;
  9. private readonly TextArea messageTextArea;
  10. private readonly Button okButton;
  11. private int fontSize = 25;
  12. public MessageWindow(MessageWindowManager messageWindowManager)
  13. {
  14. this.messageWindowManager = messageWindowManager;
  15. WindowRect = WindowRect;
  16. windowRect.x = MiddlePosition.x;
  17. windowRect.y = Screen.height - WindowRect.height;
  18. nameTextField = new();
  19. fontSizeSlider = new(MessageWindowManager.FontBounds);
  20. fontSizeSlider.ControlEvent += ChangeFontSize;
  21. messageTextArea = new();
  22. okButton = new("OK");
  23. okButton.ControlEvent += ShowMessage;
  24. }
  25. public override Rect WindowRect
  26. {
  27. set
  28. {
  29. value.width = Mathf.Clamp(Screen.width * 0.4f, 440, Mathf.Infinity);
  30. value.height = Mathf.Clamp(Screen.height * 0.15f, 150, Mathf.Infinity);
  31. base.WindowRect = value;
  32. }
  33. }
  34. public override void Update()
  35. {
  36. base.Update();
  37. if (InputManager.GetKeyDown(MpsKey.ToggleMessage))
  38. ToggleVisibility();
  39. }
  40. public override void Draw()
  41. {
  42. GUILayout.BeginHorizontal();
  43. GUILayout.Label("Name", GUILayout.ExpandWidth(false));
  44. nameTextField.Draw(GUILayout.Width(120));
  45. GUILayout.Space(30);
  46. GUILayout.Label("Font Size", GUILayout.ExpandWidth(false));
  47. fontSizeSlider.Draw(GUILayout.Width(120), GUILayout.ExpandWidth(false));
  48. GUILayout.Label($"{fontSize}pt");
  49. GUILayout.EndHorizontal();
  50. messageTextArea.Draw(GUILayout.MinHeight(90));
  51. okButton.Draw(GUILayout.ExpandWidth(false), GUILayout.Width(30));
  52. }
  53. public override void Deactivate()
  54. {
  55. messageWindowManager.CloseMessagePanel();
  56. Visible = false;
  57. ResetUI();
  58. }
  59. public override void Activate() =>
  60. ResetUI();
  61. private void ToggleVisibility()
  62. {
  63. if (messageWindowManager.ShowingMessage)
  64. messageWindowManager.CloseMessagePanel();
  65. else
  66. Visible = !Visible;
  67. }
  68. private void ChangeFontSize(object sender, EventArgs args)
  69. {
  70. fontSize = (int)fontSizeSlider.Value;
  71. if (updating)
  72. return;
  73. messageWindowManager.FontSize = fontSize;
  74. }
  75. private void ShowMessage(object sender, EventArgs args)
  76. {
  77. Visible = false;
  78. messageWindowManager.ShowMessage(nameTextField.Value, messageTextArea.Value);
  79. }
  80. private void ResetUI()
  81. {
  82. updating = true;
  83. fontSizeSlider.Value = MessageWindowManager.FontBounds.Left;
  84. nameTextField.Value = string.Empty;
  85. messageTextArea.Value = string.Empty;
  86. updating = false;
  87. }
  88. }