//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, July 28, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using vnxbqy.UI;
|
|
|
namespace vnxbqy.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<Window>()); } }
|
|
BetterEquipGetModel betterItemGetModel { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } }
|
PreciousItemGetModel preciousItemGetModel { get { return ModelCenter.Instance.GetModel<PreciousItemGetModel>(); } }
|
TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
|
AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
|
PrayerModel prayerModel { get { return ModelCenter.Instance.GetModel<PrayerModel>(); } }
|
|
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.playerDataRefreshEvent += OnLevelChange;
|
TaskModel.Event_MainlineTask += OnMainLineTaskChange;
|
TaskModel.CardLevelChange += OnTaskLimitStateChange;
|
|
betterItemGetModel.showEquipRefreshEvent += OnGetBetterEquip;
|
preciousItemGetModel.showItemRefreshEvent += OnShowPreciousItemRefresh;
|
FunctionUnlockFlyObject.functionUnLockShowEndEvent += OnFunctionUnLockShowEnd;
|
treasureModel.treasureCollectProgressRefresh += OnTreasureCollectingStateChange;
|
treasureModel.treasureStageUpEvent += OnTreasureStageChange;
|
achievementModel.achievementAwardableEvent += OnAchievementAwardAble;
|
prayerModel.freeCoinPrayerStateChange += OnFreeCoinPrayer;
|
BossShowModel.Instance.bossShowCompletedEvent += OnBossShowEnd;
|
}
|
|
}
|
|
private void OnDisable()
|
{
|
if (m_TriggerType == TriggerType.OnEnable)
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionOpen;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnLevelChange;
|
TaskModel.Event_MainlineTask -= OnMainLineTaskChange;
|
TaskModel.CardLevelChange -= OnTaskLimitStateChange;
|
betterItemGetModel.showEquipRefreshEvent -= OnGetBetterEquip;
|
preciousItemGetModel.showItemRefreshEvent -= OnShowPreciousItemRefresh;
|
FunctionUnlockFlyObject.functionUnLockShowEndEvent -= OnFunctionUnLockShowEnd;
|
treasureModel.treasureCollectProgressRefresh -= OnTreasureCollectingStateChange;
|
treasureModel.treasureStageUpEvent -= OnTreasureStageChange;
|
achievementModel.achievementAwardableEvent -= OnAchievementAwardAble;
|
prayerModel.freeCoinPrayerStateChange -= OnFreeCoinPrayer;
|
BossShowModel.Instance.bossShowCompletedEvent -= OnBossShowEnd;
|
}
|
|
}
|
|
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.playerDataRefreshEvent += OnLevelChange;
|
TaskModel.Event_MainlineTask += OnMainLineTaskChange;
|
TaskModel.CardLevelChange += OnTaskLimitStateChange;
|
TaskModel.SideQuestChangeEvent += OnBranchQuestChange;
|
|
betterItemGetModel.showEquipRefreshEvent += OnGetBetterEquip;
|
preciousItemGetModel.showItemRefreshEvent += OnShowPreciousItemRefresh;
|
FunctionUnlockFlyObject.functionUnLockShowEndEvent += OnFunctionUnLockShowEnd;
|
treasureModel.treasureCollectProgressRefresh += OnTreasureCollectingStateChange;
|
treasureModel.treasureStageUpEvent += OnTreasureStageChange;
|
achievementModel.achievementAwardableEvent += OnAchievementAwardAble;
|
TreasureNewGotWin.CloseTreasureNewGotWinEvent += OnTreasureShowEnd;
|
prayerModel.freeCoinPrayerStateChange += OnFreeCoinPrayer;
|
BossShowModel.Instance.bossShowCompletedEvent += OnBossShowEnd;
|
}
|
|
private void OnWindowPreClose(Window _window)
|
{
|
if (parent != _window)
|
{
|
return;
|
}
|
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionOpen;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnLevelChange;
|
TaskModel.Event_MainlineTask -= OnMainLineTaskChange;
|
TaskModel.CardLevelChange -= OnTaskLimitStateChange;
|
TaskModel.SideQuestChangeEvent -= OnBranchQuestChange;
|
|
betterItemGetModel.showEquipRefreshEvent -= OnGetBetterEquip;
|
preciousItemGetModel.showItemRefreshEvent -= OnShowPreciousItemRefresh;
|
FunctionUnlockFlyObject.functionUnLockShowEndEvent -= OnFunctionUnLockShowEnd;
|
treasureModel.treasureCollectProgressRefresh -= OnTreasureCollectingStateChange;
|
treasureModel.treasureStageUpEvent -= OnTreasureStageChange;
|
achievementModel.achievementAwardableEvent -= OnAchievementAwardAble;
|
TreasureNewGotWin.CloseTreasureNewGotWinEvent -= OnTreasureShowEnd;
|
prayerModel.freeCoinPrayerStateChange -= OnFreeCoinPrayer;
|
BossShowModel.Instance.bossShowCompletedEvent -= OnBossShowEnd;
|
}
|
|
private void OnFunctionOpen(int _functionId)
|
{
|
CheckNewBieGuide();
|
}
|
|
private void OnLevelChange(PlayerDataType refreshType)
|
{
|
switch (refreshType)
|
{
|
case PlayerDataType.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 OnBossShowEnd()
|
{
|
CheckNewBieGuide();
|
}
|
|
private void CheckNewBieGuide()
|
{
|
var mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID);
|
if (mapConfig.MapFBType != (int)MapType.OpenCountry && !m_AllowInDungeon)
|
{
|
return;
|
}
|
|
if (treasureModel.newGotShowing)
|
{
|
return;
|
}
|
|
if (BossShowModel.Instance.BossShowing)
|
{
|
return;
|
}
|
|
if (guides != null)
|
{
|
NewBieCenter.Instance.CheckNewBieGuides(guides);
|
}
|
}
|
|
enum TriggerType
|
{
|
OnWindow,
|
OnEnable,
|
}
|
}
|
|
}
|
|
|
|