Files
JJBB/Assets/Project/Script/GUI/Message/PlayHelpMessageRoot.cs
2024-08-23 15:49:34 +08:00

156 lines
3.8 KiB
C#

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
}