//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, February 08, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using TableConfig; 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; WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel(); } } ElderGodAreaModel elderGodAreaModel { get { return ModelCenter.Instance.GetModel(); } } DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel(); } } DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { 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(); } } PlayerPackModel 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(); } } public void Init() { CheckBetterEquip(); CheckRealmBetterEquip(); CheckPreciousItem(); CheckBossReborn(); CheckItemUse(); CheckItemOverdue(); ResourcesBackShow(); CheckEquipDecompose(); CheckOffLineLack(); CheckDungeonGuard(); FirstChargeTrialShow(); CheckFairyGrabBossHelp(); 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; } public void UnInit() { fairyGrabBossModel.helpCoolDown = false; 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; } 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 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() { if (findPreciousModel.currentBossNotify == 0) { m_BossRebornPusher.gameObject.SetActive(false); } else { if (!BossFakeLineUtility.Instance.IsBossVisible(findPreciousModel.currentBossNotify)) { var findPreciousType = findPreciousModel.GetBossFindPreciousType(findPreciousModel.currentBossNotify); var killable = false; var show = true; var mapId = PlayerDatas.Instance.baseData.MapID; switch (findPreciousType) { case FindPreciousType.WorldBoss: killable = worldBossModel.wearyValue < GeneralConfig.Instance.bossWearyValues[0] + worldBossModel.extraBossWearyValue; show = !GeneralConfig.Instance.worldBossNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.BossHome: killable = bossHomeModel.wearyValue < vipModel.GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit); show = !GeneralConfig.Instance.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 = !GeneralConfig.Instance.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 = !GeneralConfig.Instance.demonJarNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.DogzDungeon: killable = dogzDungeonModel.wearyValue < GeneralConfig.Instance.bossWearyValues[2]; show = !GeneralConfig.Instance.dogzNoRebornRemindMaps.Contains(mapId); break; } if (killable) { if (show) { m_BossRebornPusher.DisplayRebornBoss(); m_BossRebornPusher.gameObject.SetActive(true); } } else { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); } } else { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); } } } private void CheckOffLineLack() { if (PlayerDatas.Instance.baseData.LV >= GeneralConfig.Instance.OffLineTimeLackRemendLevelLimit && !offLineTimeLackModel.hasRemindOffLineTimeLack && PlayerDatas.Instance.baseData.HappyPoint < 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 = Config.Instance.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 { m_FairyGrabBossHelpBehaviour.gameObject.SetActive(false); } } } }