//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, July 28, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using Snxxz.UI; using TableConfig; namespace Snxxz.UI { public class NewBieTrigger : MonoBehaviour { [SerializeField] int[] guides; [SerializeField] TriggerType m_TriggerType = TriggerType.OnWindow; [SerializeField] bool m_AllowInDungeon = false; Window m_Parent; public Window parent { get { return m_Parent ?? (m_Parent = this.transform.GetComponentInParent()); } } PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel(); } } BetterEquipGetModel betterItemGetModel { get { return ModelCenter.Instance.GetModel(); } } PreciousItemGetModel preciousItemGetModel { get { return ModelCenter.Instance.GetModel(); } } TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel(); } } AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel(); } } PrayerModel prayerModel { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { if (m_TriggerType == TriggerType.OnWindow) { WindowCenter.Instance.windowAfterOpenEvent += OnWindowOpen; WindowCenter.Instance.windowBeforeCloseEvent += OnWindowPreClose; } NewBieCenter.Instance.RegisterTrigger(guides, parent); } private void OnEnable() { if (m_TriggerType == TriggerType.OnEnable) { CheckNewBieGuide(); FuncOpen.Instance.OnFuncStateChangeEvent += OnFunctionOpen; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += OnLevelChange; PlayerTaskDatas.Event_MainlineTask += OnMainLineTaskChange; PlayerTaskDatas.CardLevelChange += OnTaskLimitStateChange; betterItemGetModel.showEquipRefreshEvent += OnGetBetterEquip; preciousItemGetModel.showItemRefreshEvent += OnShowPreciousItemRefresh; FunctionUnlockFlyObject.functionUnLockShowEndEvent += OnFunctionUnLockShowEnd; treasureModel.treasureCollectProgressUpdateEvent += OnTreasureCollectingStateChange; treasureModel.treasureStageUpEvent += OnTreasureStageChange; achievementModel.achievementAwardableEvent += OnAchievementAwardAble; prayerModel.freeCoinPrayerStateChange += OnFreeCoinPrayer; } } private void OnDisable() { if (m_TriggerType == TriggerType.OnEnable) { FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionOpen; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnLevelChange; PlayerTaskDatas.Event_MainlineTask -= OnMainLineTaskChange; PlayerTaskDatas.CardLevelChange -= OnTaskLimitStateChange; betterItemGetModel.showEquipRefreshEvent -= OnGetBetterEquip; preciousItemGetModel.showItemRefreshEvent -= OnShowPreciousItemRefresh; FunctionUnlockFlyObject.functionUnLockShowEndEvent -= OnFunctionUnLockShowEnd; treasureModel.treasureCollectProgressUpdateEvent -= OnTreasureCollectingStateChange; treasureModel.treasureStageUpEvent -= OnTreasureStageChange; achievementModel.achievementAwardableEvent -= OnAchievementAwardAble; prayerModel.freeCoinPrayerStateChange -= OnFreeCoinPrayer; } } private void OnDestroy() { if (m_TriggerType == TriggerType.OnWindow) { WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen; WindowCenter.Instance.windowBeforeCloseEvent -= OnWindowPreClose; } } private void OnWindowOpen(Window _window) { if (parent != _window) { return; } CheckNewBieGuide(); FuncOpen.Instance.OnFuncStateChangeEvent += OnFunctionOpen; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += OnLevelChange; PlayerTaskDatas.Event_MainlineTask += OnMainLineTaskChange; PlayerTaskDatas.CardLevelChange += OnTaskLimitStateChange; PlayerTaskDatas.SideQuestChangeEvent += OnBranchQuestChange; betterItemGetModel.showEquipRefreshEvent += OnGetBetterEquip; preciousItemGetModel.showItemRefreshEvent += OnShowPreciousItemRefresh; FunctionUnlockFlyObject.functionUnLockShowEndEvent += OnFunctionUnLockShowEnd; treasureModel.treasureCollectProgressUpdateEvent += OnTreasureCollectingStateChange; treasureModel.treasureStageUpEvent += OnTreasureStageChange; achievementModel.achievementAwardableEvent += OnAchievementAwardAble; TreasureNewGotWin.CloseTreasureNewGotWinEvent += OnTreasureShowEnd; prayerModel.freeCoinPrayerStateChange += OnFreeCoinPrayer; } private void OnWindowPreClose(Window _window) { if (parent != _window) { return; } FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionOpen; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnLevelChange; PlayerTaskDatas.Event_MainlineTask -= OnMainLineTaskChange; PlayerTaskDatas.CardLevelChange -= OnTaskLimitStateChange; PlayerTaskDatas.SideQuestChangeEvent -= OnBranchQuestChange; betterItemGetModel.showEquipRefreshEvent -= OnGetBetterEquip; preciousItemGetModel.showItemRefreshEvent -= OnShowPreciousItemRefresh; FunctionUnlockFlyObject.functionUnLockShowEndEvent -= OnFunctionUnLockShowEnd; treasureModel.treasureCollectProgressUpdateEvent -= OnTreasureCollectingStateChange; treasureModel.treasureStageUpEvent -= OnTreasureStageChange; achievementModel.achievementAwardableEvent -= OnAchievementAwardAble; TreasureNewGotWin.CloseTreasureNewGotWinEvent -= OnTreasureShowEnd; prayerModel.freeCoinPrayerStateChange -= OnFreeCoinPrayer; } private void OnFunctionOpen(int _functionId) { CheckNewBieGuide(); } private void OnLevelChange(PlayerDataRefresh refreshType) { switch (refreshType) { case PlayerDataRefresh.LV: CheckNewBieGuide(); break; } } private void OnMainLineTaskChange(int _taskId, int _level) { CheckNewBieGuide(); } private void OnTaskLimitStateChange(int _taskId) { CheckNewBieGuide(); } private void OnBranchQuestChange(int _taskId) { CheckNewBieGuide(); } private void OnFunctionUnLockShowEnd(FunctionUnlockType _type) { CheckNewBieGuide(); } private void OnGetBetterEquip() { CheckNewBieGuide(); } private void OnShowPreciousItemRefresh() { CheckNewBieGuide(); } private void OnTreasureCollectingStateChange(int _treasureId) { CheckNewBieGuide(); } private void OnTreasureStageChange(int _treasureId) { CheckNewBieGuide(); } private void OnAchievementAwardAble(int _achievementId) { CheckNewBieGuide(); } private void OnTreasureShowEnd() { CheckNewBieGuide(); } private void OnFreeCoinPrayer() { CheckNewBieGuide(); } private void CheckNewBieGuide() { var mapConfig = Config.Instance.Get(PlayerDatas.Instance.baseData.MapID); if (mapConfig.MapFBType != (int)MapType.OpenCountry && !m_AllowInDungeon) { return; } if (treasureModel.newGotShowing) { return; } if (guides != null) { NewBieCenter.Instance.CheckNewBieGuides(guides); } } enum TriggerType { OnWindow, OnEnable, } } }