using UnityEngine; using UnityEngine.UI; using GCGame.Table; using Games.ImpactModle; using System.Collections; using System; using System.Collections.Generic; using UnityEngine.EventSystems; using Games.Events; using Games.LogicObj; public class ImpactInfoItem : UIItemBase { public Text Name; public Text LeaveTime; public Image Icon; public Text Miaoshu; public Text Num; ClientImpactInfo m_ImpactInfo = null; IEnumerator UpdateOnePre() { while(true) { yield return new WaitForSeconds(1); if (m_ImpactInfo == null) yield break; if(m_ImpactInfo.RemainTime - Time.realtimeSinceStartup<0) { Hide(); break; } LeaveTime.text = GetTimeStr(m_ImpactInfo.RemainTime - Time.realtimeSinceStartup); } } public override void Show(Hashtable hash) { base.Show(); m_ImpactInfo = (ClientImpactInfo)hash["InitObj"]; ShowItem(m_ImpactInfo); } public void ShowItem(ClientImpactInfo impactInfo ) { Tab_Impact _tabImpact = TableManager.GetImpactByID(impactInfo.ImpactId, 0); if(_tabImpact==null) { Hide(); return; } StopCoroutine(UpdateOnePre()); Name.text = _tabImpact.Name; if (impactInfo.m_BuffDescribe != "") { Miaoshu.text = impactInfo.m_BuffDescribe; } else { Miaoshu.text = _tabImpact.Instruction; } if (_tabImpact.IsForever == 1 || impactInfo.IsForever == true) { LeaveTime.text = StrDictionary.GetClientDictionaryString("#{2890}"); } else { // 解决在紫禁之巅中 隐身 Buff 倒计时的问题,其它场景先不管 if (GameManager.gameManager.m_RunningScene == 658 && impactInfo.ImpactId == 4308) { LeaveTime.text = GetTimeStr(impactInfo.RemainTime - Time.realtimeSinceStartup); } else { LeaveTime.text = GetTimeStr(impactInfo.RemainTime - Time.realtimeSinceStartup - 1); } StartCoroutine(UpdateOnePre()); } LoadAssetBundle.Instance.SetImageSprite(Icon, _tabImpact.BuffIcon); if (_tabImpact.MaxOverlayCount != -1) { Num.gameObject.SetActive(true); Num.text = impactInfo.AddNum.ToString(); } else Num.gameObject.SetActive(false); } public string GetTimeStr(float timeSeconds) { int day = 0; int hour = 0; int minute = 0; int second = 0; if (timeSeconds <= 0) { return StrDictionary.GetClientDictionaryString("#{1648}", 0, 0); } day = Mathf.FloorToInt(timeSeconds / (3600 * 24)); hour = Mathf.FloorToInt((timeSeconds - day * 3600 * 24) / 3600); minute = Mathf.FloorToInt((timeSeconds - day * 3600 * 24 - hour * 3600) / 60); second = Mathf.FloorToInt(timeSeconds - day * 3600 * 24 - hour * 3600 - minute * 60); string result = ""; if (day > 0) result = string.Format("{0}{1}" + StrDictionary.GetClientDictionaryString("#{9906}"), result, day); if (hour > 0) result = string.Format("{0}{1}" + StrDictionary.GetClientDictionaryString("#{9903}"), result, hour); result = string.Format("{0}{1}" + StrDictionary.GetClientDictionaryString("#{9904}"), result, minute); result = string.Format("{0}{1}" + StrDictionary.GetClientDictionaryString("#{9905}"), result, second); return result; } }