//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, February 19, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace Snxxz.UI { public class MainButtonMisc : MonoBehaviour { [SerializeField] Button m_RedBag;//红包入口按钮 [SerializeField] UIEffect m_RedpackGetSfx; [SerializeField] Button m_SendRedbagBtn; [SerializeField] MainCollectBehaviour m_CollectBehaviour; [SerializeField] Button m_WishingAwardImg; [SerializeField] Button m_MysticalPurchaseImg; [SerializeField] Button m_DungeonAssistImg; [SerializeField] RectTransform m_ContainerGotoGrabBoss; [SerializeField] Button m_GotoFairyGrabBoss; [SerializeField] Button m_FlyToFairyGrabBoss; [SerializeField] Button m_FriendQuestBtn; [SerializeField] Button m_FairyRequestBtn; FestivalRedpackModel festivalRedpackModel { get { return ModelCenter.Instance.GetModel(); } } OSRedEnvelopeModel OSEnvelopeModel { get { return ModelCenter.Instance.GetModel(); } } RedPacketModel redPacket { get { return ModelCenter.Instance.GetModel(); } } WishingPoolModel wishModel { get { return ModelCenter.Instance.GetModel(); } } MysticalPurchaseModel purchaseModel { get { return ModelCenter.Instance.GetModel(); } } DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel(); } } FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel(); } } private void Start() { m_RedBag.SetListener(RedPacketButton); m_SendRedbagBtn.SetListener(SendRedpacketBtn); m_WishingAwardImg.SetListener(ClickWishAward); m_MysticalPurchaseImg.SetListener(ClickMysticalPurchase); m_DungeonAssistImg.SetListener(ClickDungeonAssist); m_GotoFairyGrabBoss.SetListener(GotoFairyGrabBoss); m_FlyToFairyGrabBoss.SetListener(FlyToFairyGrabBoss); m_FairyRequestBtn.SetListener(OnFairyRequestClick); } public void Init() { friendsModel.askAddFriendEvent = FriendQuestBtn; OnRedBagGet();//判断是否开启红包入口 CheckSendRedpackBtn(); ShowFairyGrabBoss(); IsCrossServerOneVsOne(); RedPacketModel.OnRedBagGetEvent += OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeUpdateEvent += OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeInfoEnvent += OnRedBagGet; RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent; PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting; GA_NpcCollect.OnArrive += OnArriveCollectNPC; GA_NpcCollect.OnLeave += OnLeaveCollectNpc; GA_NpcClientCollect.OnArrive += OnArriveCollectNPC; GA_NpcClientCollect.OnLeave += OnLeaveCollectNpc; wishModel.UpdateWishAwardEvent += UpdateWishAwardImag; purchaseModel.UpdateNewMysticalEvent += UpdateMysticalPurchaseImag; assistModel.UpdateRedpointEvent += UpdateDungeonAssistImag; fairyGrabBossModel.bossGrabHintEvent += bossGrabHintEvent; fairyGrabBossModel.gotoBossStateUpdate += ShowFairyGrabBoss; ChatTip.OnChatUpEvent += RefreshAdaptiveChat; fairyModel.UpdateFairyRequestEvent += UpdateFairyRequest; } public void OnActived() { RefreshAdaptiveChat(); } public void UnInit() { m_CollectBehaviour.Dispose(); RedPacketModel.OnRedBagGetEvent -= OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeUpdateEvent -= OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeInfoEnvent -= OnRedBagGet; RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent; PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting; GA_NpcCollect.OnArrive -= OnArriveCollectNPC; GA_NpcCollect.OnLeave -= OnLeaveCollectNpc; wishModel.UpdateWishAwardEvent -= UpdateWishAwardImag; purchaseModel.UpdateNewMysticalEvent -= UpdateMysticalPurchaseImag; assistModel.UpdateRedpointEvent -= UpdateDungeonAssistImag; fairyGrabBossModel.gotoBossStateUpdate -= ShowFairyGrabBoss; fairyGrabBossModel.bossGrabHintEvent -= bossGrabHintEvent; ChatTip.OnChatUpEvent -= RefreshAdaptiveChat; fairyModel.UpdateFairyRequestEvent -= UpdateFairyRequest; m_CollectBehaviour.gameObject.SetActive(false); } void Updatefighting(PlayerDataType _tCDBPlayerRefresh)//数据的刷新 { if (_tCDBPlayerRefresh == PlayerDataType.ExAttr5)//判断是否再跨服 { IsCrossServerOneVsOne(); } } public void IsCrossServerOneVsOne() { if (CrossServerUtility.IsCrossServerOneVsOne())//是否再跨服副本中 { m_RedBag.gameObject.SetActive(false); m_WishingAwardImg.gameObject.SetActive(false); m_MysticalPurchaseImg.gameObject.SetActive(false); m_DungeonAssistImg.gameObject.SetActive(false); m_FriendQuestBtn.gameObject.SetActive(false); m_FairyRequestBtn.gameObject.SetActive(false); } else { OnRedBagGet(); UpdateWishAwardImag(); UpdateMysticalPurchaseImag(); UpdateDungeonAssistImag(); FriendQuestBtn(); UpdateFairyRequest(); } }//再跨服状态的开关显隐控制 private void RedpointValueChangeEvent(int _id) { if (_id == OSEnvelopeModel.m_RedAchieveRedpoint.id || _id == festivalRedpackModel.taskRedpoint.id) { CheckSendRedpackBtn(); } } private void OnRedBagGet()//判断是否开启红包入口 { if (m_RedpackGetSfx.IsPlaying) { m_RedpackGetSfx.StopImediatly(); } var requireRedpack = (OSEnvelopeModel.CanGetEnvelope() || redPacket.IsRedBagGetBool || festivalRedpackModel.ExistRewardableRedpack()) && !CrossServerUtility.IsCrossServer(); if (requireRedpack) { m_RedBag.gameObject.SetActive(true); if (!m_RedpackGetSfx.IsPlaying) { m_RedpackGetSfx.Play(); } } else { m_RedBag.gameObject.SetActive(false); } CheckSendRedpackBtn(); } private void CheckSendRedpackBtn() { m_SendRedbagBtn.gameObject.SetActive(!m_RedBag.gameObject.activeSelf && OSEnvelopeModel.m_RedAchieveRedpoint.state == RedPointState.Simple && festivalRedpackModel.taskRedpoint.state == RedPointState.Simple); } private void RedPacketButton()//关于红包的功能 入口 { RedEnvelopeModel envelopeModel = ModelCenter.Instance.GetModel(); RedEnvelopeModel.RedEnvelope _envelope; if (envelopeModel.TryGetLatestEnvelope(out _envelope)) { if (festivalRedpackModel.systemRedpoint.state == RedPointState.GetReward) { WindowCenter.Instance.Close(); festivalRedpackModel.jumpType = 1; festivalRedpackModel.autoOpen = true; WindowCenter.Instance.Open(false, 19); } else if (festivalRedpackModel.receiveRedpoint.state == RedPointState.GetReward) { WindowCenter.Instance.Close(); festivalRedpackModel.jumpType = 3; festivalRedpackModel.autoOpen = true; WindowCenter.Instance.Open(false, 19); } else if (OSEnvelopeModel.m_OpenServerGetRedpin.state == RedPointState.GetReward) { WindowCenter.Instance.Close(); ModelCenter.Instance.GetModel().JumpType = 2; ModelCenter.Instance.GetModel().autoOpen = true; WindowCenter.Instance.Open(false, 2); } else { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RedPacket); } } } private void SendRedpacketBtn() { if (festivalRedpackModel.taskRedpoint.state == RedPointState.Simple) { WindowCenter.Instance.Close(); festivalRedpackModel.jumpType = 2; WindowCenter.Instance.Open(false, 19); } else if (OSEnvelopeModel.m_RedAchieveRedpoint.state == RedPointState.Simple) { WindowCenter.Instance.Close(); ModelCenter.Instance.GetModel().JumpType = 1; WindowCenter.Instance.Open(false, 2); } } void OnArriveCollectNPC(uint sid, int npcID) { m_CollectBehaviour.gameObject.SetActive(true); m_CollectBehaviour.Display(npcID, sid); } void OnLeaveCollectNpc(uint sid, int npcID) { m_CollectBehaviour.Dispose(); m_CollectBehaviour.gameObject.SetActive(false); } private void ClickWishAward() { WindowCenter.Instance.Open(); } private void UpdateWishAwardImag() { m_WishingAwardImg.gameObject.SetActive(wishModel.wishingAwardDict.Count > 0 ? true : false); } private void ClickMysticalPurchase() { WindowCenter.Instance.Open(false, (int)OpenServerActivityCenter.OSActivityType.MysticalPurchase); } private void UpdateMysticalPurchaseImag() { m_MysticalPurchaseImg.gameObject.SetActive(purchaseModel.priorityOpen); } private void ClickDungeonAssist() { WindowCenter.Instance.Open(); } private void UpdateDungeonAssistImag() { m_DungeonAssistImg.gameObject.SetActive(assistModel.IsNewAssistInfo); } private void ShowFairyGrabBoss() { m_ContainerGotoGrabBoss.gameObject.SetActive(fairyGrabBossModel.cacheGotoBossId != 0 && !fairyGrabBossModel.grabBossHintOpen); } private void bossGrabHintEvent() { ShowFairyGrabBoss(); } private void RefreshAdaptiveChat() { if (ChatTip.Inst == null) { return; } } private void GotoFairyGrabBoss() { if (fairyGrabBossModel.cacheGotoBossId != 0) { var error = 0; if (fairyGrabBossModel.TestEnterDungeon(fairyGrabBossModel.cacheGotoBossId, out error)) { if (fairyGrabBossModel.IsBossKilled(fairyGrabBossModel.cacheGotoBossId)) { SysNotifyMgr.Instance.ShowTip("FairyGrabBossOver"); } MapTransferUtility.Instance.MoveToNPC(fairyGrabBossModel.cacheGotoBossId); } else { fairyGrabBossModel.DisplayErrorTip(error); } } } private void FlyToFairyGrabBoss() { if (fairyGrabBossModel.cacheGotoBossId != 0) { var error = 0; if (fairyGrabBossModel.TestEnterDungeon(fairyGrabBossModel.cacheGotoBossId, out error)) { var bossInfoConfig = BossInfoConfig.Get(fairyGrabBossModel.cacheGotoBossId); var flyItemCount = ModelCenter.Instance.GetModel().GetItemCountByID(PackType.Item, GeneralDefine.flyBootItemId); var freeFly = ModelCenter.Instance.GetModel().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0; if (bossInfoConfig != null) { if (freeFly || flyItemCount > 0) { MapTransferUtility.Instance.MissionFlyTo(bossInfoConfig.MapID, fairyGrabBossModel.cacheGotoBossId); } else { if (fairyGrabBossModel.flyToGrabBossRemind) { var money = (int)UIHelper.GetMoneyCnt(1); if (money >= 1) { FlyShoesUseCallback(); } else { WindowCenter.Instance.Open(); } } else { FlyShoseConfirmwin.useEnvironment = FlyShoseConfirmwin.UseEnvironment.FairyGrabBoss; FlyShoseConfirmwin.confirmCallBack = FlyShoesUseCallback; WindowCenter.Instance.Open(); } } } } else { fairyGrabBossModel.DisplayErrorTip(error); } } } private void FlyShoesUseCallback() { switch (FlyShoseConfirmwin.useEnvironment) { case FlyShoseConfirmwin.UseEnvironment.FairyGrabBoss: if (fairyGrabBossModel.cacheGotoBossId != 0) { var error = 0; if (fairyGrabBossModel.TestEnterDungeon(fairyGrabBossModel.cacheGotoBossId, out error)) { var bossInfoConfig = BossInfoConfig.Get(fairyGrabBossModel.cacheGotoBossId); if (bossInfoConfig != null) { MapTransferUtility.Instance.MissionFlyTo(bossInfoConfig.MapID, fairyGrabBossModel.cacheGotoBossId); } } else { fairyGrabBossModel.DisplayErrorTip(error); } } break; } } public void FriendQuestBtn() { if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Friend)) { m_FriendQuestBtn.onClick.RemoveAllListeners(); if (friendsModel.GetFriendQuestDict().Count > 0) { m_FriendQuestBtn.gameObject.SetActive(true); m_FriendQuestBtn.onClick.AddListener(OnClickFriendQuest); } else { m_FriendQuestBtn.gameObject.SetActive(false); } } else { m_FriendQuestBtn.gameObject.SetActive(false); } } private void OnClickFriendQuest() { WindowCenter.Instance.Open(); } private void OnFairyRequestClick() { WindowCenter.Instance.Open(); } private void UpdateFairyRequest() { m_FairyRequestBtn.gameObject.SetActive(fairyModel.FairyRequestRedPoint.count > 0); } } }