MessageWindowManager.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. internal class MessageWindowManager
  5. {
  6. public static readonly SliderProp fontBounds = new SliderProp(25f, 60f);
  7. private static GameObject sysRoot;
  8. private MessageClass msgClass;
  9. private MessageWindowMgr msgWnd;
  10. private UILabel msgLabel;
  11. private UILabel nameLabel;
  12. private GameObject msgGameObject;
  13. public bool ShowingMessage { get; private set; }
  14. public MessageWindowManager()
  15. {
  16. sysRoot = GameObject.Find("__GameMain__/SystemUI Root");
  17. this.msgWnd = GameMain.Instance.MsgWnd;
  18. this.msgGameObject = sysRoot.transform.Find("MessageWindowPanel").gameObject;
  19. this.msgClass = new MessageClass(this.msgGameObject, this.msgWnd);
  20. this.nameLabel = UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/SpeakerName/Name", false)
  21. .GetComponent<UILabel>();
  22. this.msgLabel = UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/Message", false)
  23. .GetComponent<UILabel>();
  24. Utility.SetFieldValue<MessageClass, UILabel>(this.msgClass, "message_label_", this.msgLabel);
  25. Utility.SetFieldValue<MessageClass, UILabel>(this.msgClass, "name_label_", this.nameLabel);
  26. }
  27. public void Activate()
  28. {
  29. SetPhotoMessageWindowActive(true);
  30. }
  31. public void Deactivate()
  32. {
  33. this.msgWnd.CloseMessageWindowPanel();
  34. SetPhotoMessageWindowActive(false);
  35. }
  36. private void SetPhotoMessageWindowActive(bool active)
  37. {
  38. UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/MessageBox", false)
  39. .SetActive(active);
  40. UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/Hitret", false)
  41. .GetComponent<UISprite>().enabled = !active;
  42. this.nameLabel.gameObject.SetActive(active);
  43. this.msgLabel.gameObject.SetActive(active);
  44. Transform transform = sysRoot.transform.Find("MessageWindowPanel/MessageViewer/MsgParent/Buttons");
  45. MessageWindowMgr.MessageWindowUnderButton[] msgButtons = new[]
  46. {
  47. MessageWindowMgr.MessageWindowUnderButton.Skip,
  48. MessageWindowMgr.MessageWindowUnderButton.Auto,
  49. MessageWindowMgr.MessageWindowUnderButton.Voice,
  50. MessageWindowMgr.MessageWindowUnderButton.BackLog,
  51. MessageWindowMgr.MessageWindowUnderButton.Config
  52. };
  53. foreach (var msgButton in msgButtons)
  54. {
  55. transform.Find(msgButton.ToString()).gameObject.SetActive(!active);
  56. }
  57. if (this.msgClass.subtitles_manager_ != null)
  58. {
  59. this.msgClass.subtitles_manager_.visible = false;
  60. this.msgClass.subtitles_manager_ = null;
  61. }
  62. }
  63. public void ShowMessage(string name, string message)
  64. {
  65. ShowingMessage = true;
  66. this.msgWnd.OpenMessageWindowPanel();
  67. this.msgLabel.ProcessText();
  68. this.msgClass.SetText(name, message, "", 0, AudioSourceMgr.Type.System);
  69. this.msgClass.FinishChAnime();
  70. }
  71. public void SetFontSize(int fontSize)
  72. {
  73. this.msgLabel.fontSize = fontSize;
  74. }
  75. public void CloseMessagePanel()
  76. {
  77. ShowingMessage = false;
  78. this.msgWnd.CloseMessageWindowPanel();
  79. }
  80. }
  81. }