using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
public class ScrollTip
|
{
|
public static List<SystemHintData> m_Hints = new List<SystemHintData>();
|
public static List<ScrollTipDetail> m_ActiveTips = new List<ScrollTipDetail>();
|
|
private static GameObjectPoolManager.GameObjectPool pool = null;
|
|
private static bool inited = false;
|
|
public static float tipMoveTime = 0.2f;
|
|
public static event Action OnTipReceiveEvent;
|
|
|
public static void ShowTip(string tip, ArrayList infoList = null, int _order = 0)
|
{
|
int range = Math.Min(m_Hints.Count, 10);
|
int findCnt = 0;
|
for (int i = 1; i <= range; i++)
|
{
|
if (m_Hints[m_Hints.Count - i].message == tip)
|
{
|
findCnt++;
|
if (findCnt == 3)
|
{
|
//列表内重复提示最多3次
|
return;
|
}
|
}
|
}
|
|
m_Hints.Add(new SystemHintData()
|
{
|
message = tip,
|
extentionData = infoList == null ? infoList : new ArrayList(infoList),
|
appendTime = DateTime.Now,
|
order = _order
|
});
|
|
//m_Hints.Sort(SysNotifyMgr.Instance.Compare);
|
|
if (OnTipReceiveEvent != null)
|
{
|
OnTipReceiveEvent();
|
}
|
|
if (!UIManager.Instance.IsOpened<ScrollTipWin>())
|
{
|
UIManager.Instance.OpenWindow<ScrollTipWin>();
|
}
|
}
|
|
public static ScrollTipDetail Request()
|
{
|
ScrollTipDetail tip = null;
|
if (pool == null)
|
{
|
var _prefab = ResManager.Instance.LoadAsset<GameObject>("UIComp", "Tip");// UILoader.LoadPrefab("Tip");
|
pool = GameObjectPoolManager.Instance.RequestPool(_prefab);
|
}
|
if (pool != null)
|
{
|
tip = pool.Request().AddMissingComponent<ScrollTipDetail>();
|
}
|
return tip;
|
}
|
|
public static void Release(ScrollTipDetail tip, bool next = true)
|
{
|
if (m_ActiveTips.Contains(tip))
|
{
|
tip.presentState = ScrollTipState.None;
|
m_ActiveTips.Remove(tip);
|
}
|
if (tip.gameObject != null && pool != null)
|
{
|
pool.Release(tip.gameObject);
|
}
|
if (m_ActiveTips.Count > 0 && next)
|
{
|
m_ActiveTips[0].Play(ScrollTipState.Hide);
|
}
|
}
|
|
public static void ReleaseAll()
|
{
|
for (int i = 0; i < m_ActiveTips.Count; i++)
|
{
|
Release(m_ActiveTips[i]);
|
i--;
|
}
|
}
|
|
public static void OnTipComplete()
|
{
|
if (OnTipReceiveEvent != null) OnTipReceiveEvent();
|
}
|
|
public static void Close()
|
{
|
m_Hints.Clear();
|
}
|
|
public enum ScrollTipState
|
{
|
None,
|
Idle,
|
Move,
|
Hide
|
}
|
}
|