//--------------------------------------------------------
|
// [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<FestivalRedpackModel>(); } }
|
OSRedEnvelopeModel OSEnvelopeModel { get { return ModelCenter.Instance.GetModel<OSRedEnvelopeModel>(); } }
|
RedPacketModel redPacket { get { return ModelCenter.Instance.GetModel<RedPacketModel>(); } }
|
WishingPoolModel wishModel { get { return ModelCenter.Instance.GetModel<WishingPoolModel>(); } }
|
MysticalQGModel qgModel { get { return ModelCenter.Instance.GetModel<MysticalQGModel>(); } }
|
DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
|
FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
|
FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
|
ReikiRootModel reikiRootModel { get { return ModelCenter.Instance.GetModel<ReikiRootModel>(); } }
|
FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
BossRebornModel bossRebornModel { get { return ModelCenter.Instance.GetModel<BossRebornModel>(); } }
|
FullServerRechargeRedpackModel fsrrmodel { get { return ModelCenter.Instance.GetModel<FullServerRechargeRedpackModel>(); } }
|
|
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<OpenServerActivityWin>(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>();
|
RedEnvelopeModel.RedEnvelope _envelope;
|
if (envelopeModel.TryGetLatestEnvelope(out _envelope))
|
{
|
if (festivalRedpackModel.systemRedpoint.state == RedPointState.GetReward)
|
{
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
festivalRedpackModel.jumpType = 1;
|
festivalRedpackModel.autoOpen = true;
|
WindowCenter.Instance.Open<OpenServerActivityWin>(false, 19);
|
}
|
else if (festivalRedpackModel.receiveRedpoint.state == RedPointState.GetReward)
|
{
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
festivalRedpackModel.jumpType = 3;
|
festivalRedpackModel.autoOpen = true;
|
WindowCenter.Instance.Open<OpenServerActivityWin>(false, 19);
|
}
|
else if (OSEnvelopeModel.m_OpenServerGetRedpin.state == RedPointState.GetReward)
|
{
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
ModelCenter.Instance.GetModel<OSRedEnvelopeModel>().JumpType = 2;
|
ModelCenter.Instance.GetModel<OSRedEnvelopeModel>().autoOpen = true;
|
WindowCenter.Instance.Open<OpenServerActivityWin>(false, 2);
|
}
|
else if (fsrrmodel.hasQFRedbag)
|
{
|
WindowCenter.Instance.Open<OpenServerActivityWin>(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<MainInterfaceWin>();
|
festivalRedpackModel.jumpType = 2;
|
WindowCenter.Instance.Open<OpenServerActivityWin>(false, 19);
|
}
|
else if (OSEnvelopeModel.m_RedAchieveRedpoint.state == RedPointState.Simple)
|
{
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
ModelCenter.Instance.GetModel<OSRedEnvelopeModel>().JumpType = 1;
|
WindowCenter.Instance.Open<OpenServerActivityWin>(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<WishingGetItemWin>();
|
}
|
|
private void UpdateWishAwardImag()
|
{
|
m_WishingAwardImg.SetActive(wishModel.wishingAwardDict.Count > 0 ? true : false);
|
}
|
|
private void ClickMysticalQG()
|
{
|
WindowCenter.Instance.Open<OpenServerActivityWin>(false, 18);
|
}
|
|
private void UpdateMysticalQGImag()
|
{
|
m_MysticalQGImg.SetActive(qgModel.priorityOpen);
|
}
|
|
private void ClickDungeonAssist()
|
{
|
assistModel.GetAssistThanksGift(1);
|
//WindowCenter.Instance.Open<DungeonAssistWin>();
|
}
|
|
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<FriendQuestWin>();
|
}
|
private void OnFairyRequestClick()
|
{
|
WindowCenter.Instance.Open<FairyInviteWin>();
|
}
|
|
private void OnReikiRemind()
|
{
|
WindowCenter.Instance.Open<ReikiRootRemindWin>();
|
}
|
|
private void UpdateFairyRequest()
|
{
|
m_FairyRequestBtn.SetActive(fairyModel.FairyRequestRedPoint.count > 0);
|
}
|
}
|
|
}
|
|
|
|