MessageWindowManager.cs 3.4 KB

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