MessageWindow.cs 3.7 KB

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