MessageWindowManager.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. public 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. SetPhotoMessageWindowActive(true);
  26. }
  27. public void Deactivate()
  28. {
  29. this.msgWnd.CloseMessageWindowPanel();
  30. SetPhotoMessageWindowActive(false);
  31. }
  32. private void SetPhotoMessageWindowActive(bool active)
  33. {
  34. UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/MessageBox", false)
  35. .SetActive(active);
  36. UTY.GetChildObject(this.msgGameObject, "MessageViewer/MsgParent/Hitret", false)
  37. .GetComponent<UISprite>().enabled = !active;
  38. this.nameLabel.gameObject.SetActive(active);
  39. this.msgLabel.gameObject.SetActive(active);
  40. Transform transform = sysRoot.transform.Find("MessageWindowPanel/MessageViewer/MsgParent/Buttons");
  41. MessageWindowMgr.MessageWindowUnderButton[] msgButtons = new[]
  42. {
  43. MessageWindowMgr.MessageWindowUnderButton.Skip,
  44. MessageWindowMgr.MessageWindowUnderButton.Auto,
  45. MessageWindowMgr.MessageWindowUnderButton.Voice,
  46. MessageWindowMgr.MessageWindowUnderButton.BackLog,
  47. MessageWindowMgr.MessageWindowUnderButton.Config
  48. };
  49. foreach (var msgButton in msgButtons)
  50. {
  51. transform.Find(msgButton.ToString()).gameObject.SetActive(!active);
  52. }
  53. if (this.msgClass.subtitles_manager_ != null)
  54. {
  55. this.msgClass.subtitles_manager_.visible = false;
  56. this.msgClass.subtitles_manager_ = null;
  57. }
  58. }
  59. public void ShowMessage(string name, string message)
  60. {
  61. ShowingMessage = true;
  62. this.msgWnd.OpenMessageWindowPanel();
  63. this.msgLabel.ProcessText();
  64. this.msgClass.SetText(name, message, "", 0, AudioSourceMgr.Type.System);
  65. this.msgClass.FinishChAnime();
  66. }
  67. public void SetFontSize(int fontSize)
  68. {
  69. Utility.SetFieldValue<UILabel, int>(this.msgLabel, "mFontSize", fontSize);
  70. }
  71. public void CloseMessagePanel()
  72. {
  73. ShowingMessage = false;
  74. this.msgWnd.CloseMessageWindowPanel();
  75. }
  76. }
  77. }