MessageWindowManager.cs 3.5 KB

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