//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, February 19, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; namespace vnxbqy.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_MysticalQGImg; [SerializeField] Button m_DungeonAssistImg; [SerializeField] Button m_FriendQuestBtn; [SerializeField] Button m_FairyRequestBtn; [SerializeField] Button m_ReikiResetRemind; [SerializeField] Button m_BossReborn; 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(); } } MysticalQGModel qgModel { get { return ModelCenter.Instance.GetModel(); } } DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel(); } } ReikiRootModel reikiRootModel { get { return ModelCenter.Instance.GetModel(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel(); } } BossRebornModel bossRebornModel { get { return ModelCenter.Instance.GetModel(); } } FullServerRechargeRedpackModel fsrrmodel { get { return ModelCenter.Instance.GetModel(); } } private void Start() { m_RedBag.SetListener(RedPacketButton); m_SendRedbagBtn.SetListener(SendRedpacketBtn); m_WishingAwardImg.SetListener(ClickWishAward); m_MysticalQGImg.SetListener(ClickMysticalQG); m_DungeonAssistImg.SetListener(ClickDungeonAssist); m_FairyRequestBtn.SetListener(OnFairyRequestClick); m_ReikiResetRemind.SetListener(OnReikiRemind); m_BossReborn.SetListener(() => { WindowCenter.Instance.Open(false, 9); }); } public void Init() { friendsModel.askAddFriendEvent = FriendQuestBtn; OnRedBagGet();//判断是否开启红包入口 CheckSendRedpackBtn(); IsCrossServerOneVsOne(); DisplayReikiRemind(); redPacket.RedbagRefresh += OnRedBagGet; redPacket.ServerGrabCntEvent += OnRedBagGet; RedPacketModel.OnRedBagGetEvent += OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeUpdateEvent += OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeInfoEnvent += OnRedBagGet; RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent; PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting; PrepareHandler.Instance.OnShowCollectIcon += OnArriveCollectNPC; PrepareHandler.Instance.OnHideCollectIcon += OnLeaveCollectNpc; ClientCollectUtility.OnShowCollectIcon += OnArriveCollectNPC; ClientCollectUtility.OnHideCollectIcon += OnLeaveCollectNpc; wishModel.UpdateWishAwardEvent += UpdateWishAwardImag; qgModel.UpdateNewMysticalEvent += UpdateMysticalQGImag; assistModel.UpdateRedpointEvent += UpdateDungeonAssistImag; ChatTip.OnChatUpEvent += RefreshAdaptiveChat; fairyModel.UpdateFairyRequestEvent += UpdateFairyRequest; findPreciousModel.bossInfoUpdateEvent += OnBossInfoUpdate; } public void OnActived() { RefreshAdaptiveChat(); } public void UnInit() { m_CollectBehaviour.Dispose(); redPacket.RedbagRefresh -= OnRedBagGet; redPacket.ServerGrabCntEvent -= OnRedBagGet; RedPacketModel.OnRedBagGetEvent -= OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeUpdateEvent -= OnRedBagGet; OSEnvelopeModel.OSRedEnvelopeInfoEnvent -= OnRedBagGet; RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent; PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting; PrepareHandler.Instance.OnShowCollectIcon -= OnArriveCollectNPC; PrepareHandler.Instance.OnHideCollectIcon -= OnLeaveCollectNpc; ClientCollectUtility.OnShowCollectIcon -= OnArriveCollectNPC; ClientCollectUtility.OnHideCollectIcon -= OnLeaveCollectNpc; wishModel.UpdateWishAwardEvent -= UpdateWishAwardImag; qgModel.UpdateNewMysticalEvent -= UpdateMysticalQGImag; assistModel.UpdateRedpointEvent -= UpdateDungeonAssistImag; ChatTip.OnChatUpEvent -= RefreshAdaptiveChat; fairyModel.UpdateFairyRequestEvent -= UpdateFairyRequest; findPreciousModel.bossInfoUpdateEvent -= OnBossInfoUpdate; m_CollectBehaviour.SetActive(false); } void Updatefighting(PlayerDataType _tCDBPlayerRefresh)//数据的刷新 { if (_tCDBPlayerRefresh == PlayerDataType.ExAttr5)//判断是否再跨服 { IsCrossServerOneVsOne(); } } void OnBossInfoUpdate(int _bossId) { ShowBossReborn(); } void ShowBossReborn() { if (bossRebornModel.IsOpen) m_BossReborn.SetActive(findPreciousModel.IsBossAlive(bossRebornModel.MWBossID)); else m_BossReborn.SetActive(false); } public void IsCrossServerOneVsOne() { if (CrossServerUtility.IsCrossServerOneVsOne() || ArenaManager.isArenaClient)//是否再跨服副本中 { m_RedBag.SetActive(false); m_WishingAwardImg.SetActive(false); m_MysticalQGImg.SetActive(false); m_DungeonAssistImg.SetActive(false); m_FriendQuestBtn.SetActive(false); m_FairyRequestBtn.SetActive(false); m_ReikiResetRemind.SetActive(false); m_BossReborn.SetActive(false); } else { OnRedBagGet(); UpdateWishAwardImag(); UpdateMysticalQGImag(); UpdateDungeonAssistImag(); FriendQuestBtn(); UpdateFairyRequest(); DisplayReikiRemind(); ShowBossReborn(); } }//再跨服状态的开关显隐控制 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 = (fsrrmodel.hasQFRedbag || OSEnvelopeModel.CanGetEnvelope() || redPacket.IsRedBagGetBool || festivalRedpackModel.ExistRewardableRedpack()) && !CrossServerUtility.IsCrossServer(); if (requireRedpack) { m_RedBag.SetActive(true); if (!m_RedpackGetSfx.IsPlaying) { m_RedpackGetSfx.Play(); } } else { m_RedBag.SetActive(false); } CheckSendRedpackBtn(); } private void CheckSendRedpackBtn() { m_SendRedbagBtn.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 if (fsrrmodel.hasQFRedbag) { WindowCenter.Instance.Open(false, 34); } else { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RedPacket); } } else { m_RedBag.SetActive(false); } } 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.SetActive(true); m_CollectBehaviour.Display(npcID, sid); } void OnLeaveCollectNpc(uint sid, int npcID) { m_CollectBehaviour.Dispose(); m_CollectBehaviour.SetActive(false); } private void ClickWishAward() { WindowCenter.Instance.Open(); } private void UpdateWishAwardImag() { m_WishingAwardImg.SetActive(wishModel.wishingAwardDict.Count > 0 ? true : false); } private void ClickMysticalQG() { WindowCenter.Instance.Open(false, 18); } private void UpdateMysticalQGImag() { m_MysticalQGImg.SetActive(qgModel.priorityOpen); } private void ClickDungeonAssist() { assistModel.GetAssistThanksGift(1); //WindowCenter.Instance.Open(); } private void UpdateDungeonAssistImag() { m_DungeonAssistImg.SetActive(assistModel.ThanksGiftCount > 0); } private void RefreshAdaptiveChat() { if (ChatTip.Inst == null) { return; } } public void FriendQuestBtn() { if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Friend)) { m_FriendQuestBtn.onClick.RemoveAllListeners(); if (friendsModel.GetFriendQuestDict().Count > 0) { m_FriendQuestBtn.SetActive(true); m_FriendQuestBtn.onClick.AddListener(OnClickFriendQuest); } else { m_FriendQuestBtn.SetActive(false); } } else { m_FriendQuestBtn.SetActive(false); } } void DisplayReikiRemind() { m_ReikiResetRemind.SetActive(reikiRootModel.resetReikiRemind); } private void OnClickFriendQuest() { WindowCenter.Instance.Open(); } private void OnFairyRequestClick() { WindowCenter.Instance.Open(); } private void OnReikiRemind() { WindowCenter.Instance.Open(); } private void UpdateFairyRequest() { m_FairyRequestBtn.SetActive(fairyModel.FairyRequestRedPoint.count > 0); } } }