MessageWindow.cs 3.2 KB

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