//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, February 08, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; namespace Snxxz.UI { public class InGamePushContainer : MonoBehaviour { [SerializeField] BetterItemGetBehaviour m_BetterEquipPusher; [SerializeField] RealmBetterEquipBehaviour m_RealmBetterEquipPusher; [SerializeField] PreciousItemGetBehaviour m_PreciousItemPusher; [SerializeField] FindPreciousBossRebornBehaviour m_BossRebornPusher; [SerializeField] ItemUseBehaviour m_itemUsePusher; [SerializeField] ItemOverdueBehaviour m_itemOverduePusher; [SerializeField] ResourceBackBehaviour m_ResourceBackBehaviour; [SerializeField] EquipDecomposeBehaviour m_DecomposePusher; [SerializeField] OffLineTimeLackBehaviour m_OffLineTimeLackBehaviour; [SerializeField] DungeonGuardCheckBehaviour m_DungeonGuardBehaviour; [SerializeField] FirstChargeTrialBehaviour m_FirstChargeTrialBehaviour; [SerializeField] FairyGrabBossHelpBehaviour m_FairyGrabBossHelpBehaviour; [SerializeField] DogzNotifyBehaviour m_DogzNotifyBehaviour; [SerializeField] InSevenDayBehavior m_InSevenDayBehavior; [SerializeField] FBHelpPointExchageNotify m_HelpPointExchangeNotify; [SerializeField] MyFocusAuctionBehaviour m_MyFocusBehavio; [SerializeField] AuctionNewGetBehaviour m_AuctionNewGetBehaviour; WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel(); } } DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel(); } } CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } FBHelpPointExchageModel exchageModel { get { return ModelCenter.Instance.GetModel(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel(); } } BetterEquipGetModel betterEquipGetModel { get { return ModelCenter.Instance.GetModel(); } } RealmBetterEquipModel realmEquipModel { get { return ModelCenter.Instance.GetModel(); } } PreciousItemGetModel preciousItemGetModel { get { return ModelCenter.Instance.GetModel(); } } ItemUseModel itemUseModel { get { return ModelCenter.Instance.GetModel(); } } ItemOverdueModel itemOverdue { get { return ModelCenter.Instance.GetModel(); } } ResourcesBackModel resourcesBack { get { return ModelCenter.Instance.GetModel(); } } PackModel playerPack { get { return ModelCenter.Instance.GetModel(); } } OffLineTimeLackModel offLineTimeLackModel { get { return ModelCenter.Instance.GetModel(); } } GuardModel guardModel { get { return ModelCenter.Instance.GetModel(); } } FirstTimeRechargeModel firstTimeRechargeModel { get { return ModelCenter.Instance.GetModel(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel(); } } DogzModel dogzModel { get { return ModelCenter.Instance.GetModel(); } } InSevenDayModel inSevenDayModel { get { return ModelCenter.Instance.GetModel(); } } AuctionNewGetShowModel auctionNewGetShowModel { get { return ModelCenter.Instance.GetModel(); } } public void Init() { CheckBetterEquip(); CheckRealmBetterEquip(); CheckPreciousItem(); CheckBossReborn(); CheckItemUse(); CheckItemOverdue(); ResourcesBackShow(); CheckEquipDecompose(); CheckOffLineLack(); CheckDungeonGuard(); FirstChargeTrialShow(); CheckFairyGrabBossHelp(); CheckDogzNotify(); InSevenDayShow(); CheckHelpPointExchange(); CheckNewAuction(); m_MyFocusBehavio.Init(); exchageModel.UpdateHelpPointShopEvent += CheckHelpPointExchange; playerPack.RefreshDecomAttrAct += CheckEquipDecompose; betterEquipGetModel.showEquipRefreshEvent += CheckBetterEquip; realmEquipModel.showEquipRefreshEvent += CheckRealmBetterEquip; preciousItemGetModel.showItemRefreshEvent += CheckPreciousItem; findPreciousModel.bossRebornNotifyChangeEvent += CheckBossReborn; itemUseModel.showItemRefreshEvent += CheckItemUse; itemOverdue.showItemRefreshEvent += CheckItemOverdue; NewBieCenter.Instance.guideBeginEvent += OnNewBieGuideBegin; guardModel.onDungeonEquipGuardEvent += CheckDungeonGuard; firstTimeRechargeModel.IsTipShowEvent += FirstChargeTrialShow; fairyGrabBossModel.fairyGrabBossHelpUpdate += CheckFairyGrabBossHelp; dogzModel.UpdateDogzPutRedEvent += CheckDogzNotify; auctionNewGetShowModel.newAcutionRefreshEvent += CheckNewAuction; } public void UnInit() { m_MyFocusBehavio.Unit(); fairyGrabBossModel.helpCoolDown = false; exchageModel.UpdateHelpPointShopEvent -= CheckHelpPointExchange; playerPack.RefreshDecomAttrAct -= CheckEquipDecompose; betterEquipGetModel.showEquipRefreshEvent -= CheckBetterEquip; preciousItemGetModel.showItemRefreshEvent -= CheckPreciousItem; findPreciousModel.bossRebornNotifyChangeEvent -= CheckBossReborn; itemUseModel.showItemRefreshEvent -= CheckItemUse; NewBieCenter.Instance.guideBeginEvent -= OnNewBieGuideBegin; guardModel.onDungeonEquipGuardEvent -= CheckDungeonGuard; firstTimeRechargeModel.IsTipShowEvent -= FirstChargeTrialShow; realmEquipModel.showEquipRefreshEvent -= CheckRealmBetterEquip; fairyGrabBossModel.fairyGrabBossHelpUpdate -= CheckFairyGrabBossHelp; dogzModel.UpdateDogzPutRedEvent -= CheckDogzNotify; auctionNewGetShowModel.newAcutionRefreshEvent -= CheckNewAuction; } private void CheckHelpPointExchange() { int pushId = exchageModel.currentShopId; StoreConfig storeConfig = StoreConfig.Get(pushId); if (pushId != 0 && storeConfig != null) { m_HelpPointExchangeNotify.gameObject.SetActive(true); m_HelpPointExchangeNotify.SetDisplay(); } else { m_HelpPointExchangeNotify.gameObject.SetActive(false); } } private void CheckRealmBetterEquip() { if (string.IsNullOrEmpty(realmEquipModel.currentEquipGuid)) { m_RealmBetterEquipPusher.gameObject.SetActive(false); } else { if (betterEquipGetModel.ShowBetterEquipAble()) { m_RealmBetterEquipPusher.gameObject.SetActive(true); m_RealmBetterEquipPusher.ShowBetterEquip(); } else { m_RealmBetterEquipPusher.gameObject.SetActive(false); } } } private void CheckBetterEquip() { if (string.IsNullOrEmpty(betterEquipGetModel.currentEquipGuid)) { m_BetterEquipPusher.gameObject.SetActive(false); } else { if (betterEquipGetModel.ShowBetterEquipAble()) { m_BetterEquipPusher.gameObject.SetActive(true); m_BetterEquipPusher.ShowBetterEquip(); } else { m_BetterEquipPusher.gameObject.SetActive(false); } } } private void CheckDogzNotify() { m_DogzNotifyBehaviour.SetDisplay(); } private void CheckNewAuction() { m_AuctionNewGetBehaviour.Display(auctionNewGetShowModel.showingAuction); } private void CheckPreciousItem() { if (preciousItemGetModel.currentShowItem == default(PreciousItemGetModel.PreciousItem)) { m_PreciousItemPusher.gameObject.SetActive(false); } else { if (preciousItemGetModel.ShowPreciousItemAble()) { m_PreciousItemPusher.gameObject.SetActive(true); m_PreciousItemPusher.ShowItem(); } else { m_PreciousItemPusher.gameObject.SetActive(false); } } } private void CheckItemUse() { if (itemUseModel.currentShowItem == default(ItemUseModel.UseItem)) { m_itemUsePusher.gameObject.SetActive(false); } else { if (itemUseModel.ShowUseItemAble()) { m_itemUsePusher.gameObject.SetActive(true); m_itemUsePusher.ShowItem(); } else { m_itemUsePusher.gameObject.SetActive(false); } } } private void CheckItemOverdue() { if (itemOverdue.currentShowItem == default(ItemOverdueModel.OverdueItem)) { m_itemOverduePusher.gameObject.SetActive(false); } else { if (itemOverdue.ShowUseItemAble()) { m_itemOverduePusher.gameObject.SetActive(true); m_itemOverduePusher.ShowItem(); } else { m_itemOverduePusher.gameObject.SetActive(false); } } } private void CheckEquipDecompose() { if (playerPack.addDecomposeExp > 0 && playerPack.isAutoDecompose) { m_DecomposePusher.gameObject.SetActive(true); } else { m_DecomposePusher.gameObject.SetActive(false); } } private void CheckBossReborn() { var notifies = findPreciousModel.bossNotifies; for (var i = notifies.Count - 1; i >= 0; i--) { if (BossFakeLineUtility.Instance.IsBossVisible(findPreciousModel.currentBossNotify.bossId)) { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); continue; } var findPreciousType = findPreciousModel.GetBossFindPreciousType(findPreciousModel.currentBossNotify.bossId); var killable = false; var show = true; var mapId = PlayerDatas.Instance.baseData.MapID; switch (findPreciousType) { case FindPreciousType.WorldBoss: killable = worldBossModel.wearyValue < GeneralDefine.bossWearyValues[0] + worldBossModel.extraBossWearyValue; show = !GeneralDefine.worldBossNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.BossHome: killable = true; show = !GeneralDefine.bossHomeNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.ElderGodArea: var elderGodEnterTimes = dungeonModel.GetEnterTimes(ElderGodAreaModel.ELDERGODAREA_MAPID); var elderGodTotalTimes = dungeonModel.GetTotalTimes(ElderGodAreaModel.ELDERGODAREA_MAPID); killable = elderGodTotalTimes > elderGodEnterTimes; show = !GeneralDefine.elderGodNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.DemonJar: { var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID); var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID); killable = totalTimes > enterTimes; show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId); } break; case FindPreciousType.DogzDungeon: killable = dogzDungeonModel.wearyValue < GeneralDefine.bossWearyValues[2]; show = !GeneralDefine.dogzNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.CrossServerBoss: killable = crossServerBossModel.wearyValue < GeneralDefine.bossWearyValues[2]; show = !GeneralDefine.dogzNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.JadeDynastyBoss: { var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); killable = totalTimes > enterTimes; show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId); } break; } if (!killable) { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); continue; } if (!show) { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); continue; } if (findPreciousModel.currentBossNotify != default(FindPreciousModel.BossNotify)) { break; } } if (findPreciousModel.currentBossNotify == default(FindPreciousModel.BossNotify)) { m_BossRebornPusher.gameObject.SetActive(false); } else { m_BossRebornPusher.gameObject.SetActive(true); m_BossRebornPusher.DisplayRebornBoss(); } } private void CheckOffLineLack() { if (PlayerDatas.Instance.baseData.LV >= GeneralDefine.OffLineTimeLackRemendLevelLimit && !offLineTimeLackModel.hasRemindOffLineTimeLack && PlayerDatas.Instance.baseData.hangTime < 5 * 3600) { m_OffLineTimeLackBehaviour.gameObject.SetActive(true); } else { m_OffLineTimeLackBehaviour.gameObject.SetActive(false); } } private void CheckDungeonGuard() { if (guardModel.fairyLandGuard && guardModel.fairyLandItemModel != null) { m_DungeonGuardBehaviour.gameObject.SetActive(true); m_DungeonGuardBehaviour.Display(guardModel.fairyLandItemModel); } else { m_DungeonGuardBehaviour.gameObject.SetActive(false); } } private void OnNewBieGuideBegin() { var guideConfig = GuideConfig.Get(NewBieCenter.Instance.currentGuide); switch ((GuideTriggerType)guideConfig.TriggerType) { case GuideTriggerType.EquipQuality: m_BetterEquipPusher.transform.SetAsLastSibling(); break; case GuideTriggerType.Item: m_PreciousItemPusher.transform.SetAsLastSibling(); break; default: break; } } private void ResourcesBackShow() { if (resourcesBack.IsMainGo) { m_ResourceBackBehaviour.gameObject.SetActive(true); } else { m_ResourceBackBehaviour.gameObject.SetActive(false); } } private void FirstChargeTrialShow() { if (firstTimeRechargeModel.IsTipShow) { m_FirstChargeTrialBehaviour.gameObject.SetActive(true); } else { m_FirstChargeTrialBehaviour.gameObject.SetActive(false); } } private void CheckFairyGrabBossHelp() { if (fairyGrabBossModel.fairyGrabBossHelps.Count > 0) { m_FairyGrabBossHelpBehaviour.gameObject.SetActive(true); m_FairyGrabBossHelpBehaviour.Display(); } else { SnxxzGame.Instance.StartCoroutine(Co_DeActiveFairyGrabBoss()); } } private void InSevenDayShow() { if (inSevenDayModel.IsMainGo) { m_InSevenDayBehavior.gameObject.SetActive(true); m_InSevenDayBehavior.GetintDay(); } else { m_InSevenDayBehavior.gameObject.SetActive(false); } } IEnumerator Co_DeActiveFairyGrabBoss() { yield return null; if (fairyGrabBossModel.fairyGrabBossHelps.Count == 0) { m_FairyGrabBossHelpBehaviour.gameObject.SetActive(false); } } } }