MessageWindow.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using UnityEngine;
  3. namespace COM3D2.MeidoPhotoStudio.Plugin
  4. {
  5. public class MessageWindow : BaseWindow
  6. {
  7. TextField nameTextField;
  8. Slider fontSizeSlider;
  9. TextArea messageTextArea;
  10. Button okButton;
  11. private int fontSize = 25;
  12. private bool showingMessage = false;
  13. public MessageWindow() : base()
  14. {
  15. nameTextField = new TextField();
  16. Controls.Add(nameTextField);
  17. fontSizeSlider = new Slider(25, 60);
  18. fontSizeSlider.ControlEvent += ChangeFontSize;
  19. Controls.Add(fontSizeSlider);
  20. messageTextArea = new TextArea();
  21. Controls.Add(messageTextArea);
  22. okButton = new Button("OK");
  23. okButton.ControlEvent += SetMessage;
  24. Controls.Add(okButton);
  25. }
  26. public void SetVisibility()
  27. {
  28. if (showingMessage)
  29. {
  30. GameObject messageGameObject = GameObject.Find("__GameMain__/SystemUI Root").transform.Find("MessageWindowPanel").gameObject;
  31. MessageWindowMgr messageWindowMgr = GameMain.Instance.ScriptMgr.adv_kag.MessageWindowMgr;
  32. messageWindowMgr.CloseMessageWindowPanel();
  33. showingMessage = false;
  34. }
  35. else
  36. {
  37. Visible = !Visible;
  38. }
  39. }
  40. private void ChangeFontSize(object sender, EventArgs args)
  41. {
  42. fontSize = (int)fontSizeSlider.Value;
  43. GameObject gameObject = GameObject.Find("__GameMain__/SystemUI Root").transform.Find("MessageWindowPanel").gameObject;
  44. UILabel uiLabel = UTY.GetChildObject(gameObject, "MessageViewer/MsgParent/Message", false).GetComponent<UILabel>();
  45. Utility.SetFieldValue<UILabel, int>(uiLabel, "mFontSize", fontSize);
  46. }
  47. private void SetMessage(object sender, EventArgs args)
  48. {
  49. Visible = false;
  50. showingMessage = true;
  51. GameObject messageGameObject = GameObject.Find("__GameMain__/SystemUI Root").transform.Find("MessageWindowPanel").gameObject;
  52. MessageWindowMgr messageWindowMgr = GameMain.Instance.ScriptMgr.adv_kag.MessageWindowMgr;
  53. messageWindowMgr.OpenMessageWindowPanel();
  54. UILabel component = UTY.GetChildObject(messageGameObject, "MessageViewer/MsgParent/Message", false).GetComponent<UILabel>();
  55. UILabel nameComponent = UTY.GetChildObject(messageGameObject, "MessageViewer/MsgParent/SpeakerName/Name", false).GetComponent<UILabel>();
  56. MessageClass inst = new MessageClass(messageGameObject, messageWindowMgr);
  57. // Fix for ENG version: reconfigure MessageClass to behave as in JP game
  58. inst.subtitles_manager_.visible = false;
  59. inst.subtitles_manager_ = null;
  60. component.gameObject.SetActive(true);
  61. nameComponent.gameObject.SetActive(true);
  62. UTY.GetChildObject(messageGameObject, "MessageViewer/MsgParent/MessageBox", false).SetActive(true);
  63. Utility.SetFieldValue<MessageClass, UILabel>(inst, "message_label_", component);
  64. Utility.SetFieldValue<MessageClass, UILabel>(inst, "name_label_", nameComponent);
  65. component.ProcessText();
  66. Utility.SetFieldValue<UILabel, int>(component, "mFontSize", fontSize);
  67. inst.SetText(nameTextField.Value, messageTextArea.Value, "", 0, AudioSourceMgr.Type.System);
  68. inst.FinishChAnime();
  69. }
  70. public override void Draw(params GUILayoutOption[] layoutOptions)
  71. {
  72. GUILayout.BeginHorizontal();
  73. GUILayout.Label("Name", GUILayout.ExpandWidth(false));
  74. nameTextField.Draw(GUILayout.Width(120));
  75. GUILayout.Space(30);
  76. GUILayout.Label("Font Size", GUILayout.ExpandWidth(false));
  77. fontSizeSlider.Draw(GUILayout.Width(120), GUILayout.ExpandWidth(false));
  78. GUILayout.Label($"{(int)fontSize}pt");
  79. GUILayout.EndHorizontal();
  80. messageTextArea.Draw(GUILayout.MinHeight(90));
  81. okButton.Draw(GUILayout.ExpandWidth(false), GUILayout.Width(30));
  82. }
  83. }
  84. }