//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Sunday, April 08, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using vnxbqy.UI; public class BossAreaMark { static bool ableToShowMark = true; static int lastShowBoss = 0; static Dictionary lastShowTimeRecorders = new Dictionary(); public static void Init() { GA_Hero.OnEnterOrExitArea += OnExitOrEnterArea; GA_NpcFightBoss.s_OnSelect += OnSelectedBoss; GA_NpcClientFightBoss.s_OnSelect += OnSelectedBoss; } private static void OnExitOrEnterArea(MapArea.E_Type _type, bool _enter) { if (_type == MapArea.E_Type.Boss) { ableToShowMark = true; } } private static void OnSelectedBoss(uint _instanceId, int _npcId, bool _show) { var dataMapId = MapUtility.GetDataMapId(); var lineId = MapUtility.GetLineId(); var mapResConfig = MapResourcesConfig.GetConfig(dataMapId, lineId); if (mapResConfig == null || mapResConfig.ShowBOSSTime <= 0)//如果这个值为0,不显示boss出现 { return; } if (lastShowBoss == _npcId) { if (lastShowTimeRecorders.ContainsKey(_npcId) && (Time.time - lastShowTimeRecorders[_npcId]) < mapResConfig.ShowBOSSTime) { return; } } if (PreFightMission.Instance.IsFinished() && _show && ableToShowMark) { ableToShowMark = false; lastShowBoss = _npcId; lastShowTimeRecorders[_npcId] = Time.time; WindowCenter.Instance.Close(); WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); } } } namespace vnxbqy.UI { public class BossAreaMarkWin : Window { [SerializeField] UIAlphaTween m_AlphaTween; [SerializeField] Text m_Team; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { } protected override void OnAfterOpen() { m_Team.SetActive(false); var mapList = new List { 31020, 21070, 21100, 21110, 21310, 31150 }; if (mapList.Contains(PlayerDatas.Instance.baseData.MapID)) { m_Team.SetActive(true); } } protected override void OnPreClose() { } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); m_AlphaTween.SetStartState(); m_AlphaTween.Play(CloseClick); } #endregion } }