using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections; using Games.GlobeDefine; using GCGame.Table; using GCGame; using System.Collections.Generic; public class PlayHelpMessageRoot : UIControllerBase<PlayHelpMessageRoot> { #region start public static event UnityAction CloseEvent = null; public static void ShowHelpMessage(int messageID, bool SendServer = false) { UIManager.ShowUI(UIInfo.PlayHelpMessage, ShowMessageFinish, messageID); if (SendServer) CloseEvent = SendToServer; else CloseEvent = null; } public static void SendToServer() { //剧情结束后通知一下服务器 ReqResumeCopy req = new ReqResumeCopy(); req.nilparam = 1; req.SendMsg(); } public static void ShowMessageFinish(bool bSuccess, object param) { int messageID = (int)param; PlayHelpMessageRoot.Instance().ShowMessageInner(messageID); } public UIContainerBase m_Container; public Text Title; public RawImage m_DesTexure; public Text m_DesText; public GameObject m_DescBack; private float Duration = -1; List<string> m_ShowList = new List<string>(); public void Awake() { SetInstance(this); } public void OnDestory() { SetInstance(null); } public void CloseWindow() { UIManager.CloseUI(UIInfo.PlayHelpMessage); if(CloseEvent!=null) { CloseEvent.Invoke(); CloseEvent = null; } } #endregion #region public void Update() { if (Duration <= -1) return; if(Duration-Time.realtimeSinceStartup<=0) { CloseWindow(); Duration = -1; } } public void ShowMessageInner(int messageID) { var tabMessage = TableManager.GetPlayHelpMessageByID(messageID, 0); if (tabMessage == null) return; Title.text = tabMessage.Title; if(tabMessage.Duration>0) { Duration = Time.realtimeSinceStartup + tabMessage.Duration; } else { Duration = -1; } m_ShowList.Clear(); for (var i =0;i<tabMessage.getMessageCount();i++) { string desc = tabMessage.GetMessagebyIndex(i); string raw = tabMessage.GetTexturebyIndex(i); if (raw == "-1" || raw == "" || raw.Contains("ui")==false) continue; m_ShowList.Add(string.Format(desc + "[-]" + raw)); } if (m_ShowList.Count <= 0) { CloseWindow(); return; } m_Index = 0; ShowDesc(); //m_Container.InitContentItem(list); } public void ShowDesc() { if (m_ShowList.Count <= 0) return; if (m_ShowList[m_Index].Contains("[-]") == false) return; string[] lists = m_ShowList[m_Index].Split('-'); if (lists.Length < 2) return; m_DesText.text = lists[0].Remove(lists[0].Length - 1, 1); bool isShow = (m_DesText.text != "" && m_DesText.text != "-1"); m_DesText.gameObject.SetActive(isShow); m_DescBack.SetActive(isShow); string imagePath = lists[1].Remove(0, 1); string name = System.IO.Path.GetFileNameWithoutExtension(imagePath); LoadAssetBundle.Instance.SetRawTexture(m_DesTexure, name, imagePath); } int m_Index = 0; public void Next_Click() { m_Index++; if (m_Index >= m_ShowList.Count) m_Index = 0; ShowDesc(); } public void Last_Click() { m_Index--; if (m_Index < 0) m_Index = m_ShowList.Count - 1; ShowDesc(); } #endregion }