//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, January 30, 2019 //-------------------------------------------------------- using System.Collections; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RedpackSystemDetailsWin : Window { [SerializeField] ScrollerController m_ScrollerController; [SerializeField] Text m_RedpackName;//红包发放人 [SerializeField] Text _StateText;//红包状态 [SerializeField] Button _CloseBtnXQ;//红包详情关闭按钮 [SerializeField] Text _DetailText;//红包信息详情 [SerializeField] RectTransform m_ContainerDisplay; [SerializeField] UIEffect m_RedpackSfx; [SerializeField] Button m_SpaceClose; [SerializeField] Button m_CloseSfxBtn; #region Built-in RedPacketModel m_RedPacket; RedPacketModel redPacket { get { return m_RedPacket ?? (m_RedPacket = ModelCenter.Instance.GetModel()); } } RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { } protected override void AddListeners() { _CloseBtnXQ.onClick.AddListener(CloseButtonXQ); m_SpaceClose.onClick.AddListener(CloseClick); m_CloseSfxBtn.onClick.AddListener(CloseSfx); m_ScrollerController.OnRefreshCell += OnRefreshGridCell; } protected override void OnPreOpen() { m_RedpackSfx.StopImediatly(); } protected override void OnActived() { base.OnActived(); RedEnvelopeModel.RedEnvelope envelope; if (envelopeModel.TryGetEnvelope(redPacket.redpackDetailId, out envelope)) { if (envelope.type == FestivalRedpackModel.FESTIVALSYSTEMREDPACK1) { m_RedpackSfx.effect = 5216; } else { m_RedpackSfx.effect = 5165; } } m_RedpackSfx.Play(); Animator _animator = null; if (m_RedpackSfx.target != null) { _animator = m_RedpackSfx.target.GetAnimator(); } if (envelopeModel.envelopeSfx == redPacket.redpackDetailId) { if (_animator != null) { _animator.Play("Effect_HongBao_02", 0, 0); } m_ContainerDisplay.SetActive(false); StartCoroutine(Co_Display()); } else { if (_animator != null) { _animator.Play("Effect_HongBao_03", 0, 0); } m_ContainerDisplay.SetActive(true); DetailsRedEnvelope(redPacket.redpackDetailId); OnCreateGridLineCell(m_ScrollerController); } envelopeModel.envelopeSfx = 0; } protected override void OnAfterOpen() { } protected override void OnPreClose() { redPacket.redpackDetailId = 0; envelopeModel.envelopeSfx = 0; } protected override void OnAfterClose() { } private void CloseSfx() { Animator _animator = null; if (m_RedpackSfx.target != null) { _animator = m_RedpackSfx.target.GetAnimator(); if (_animator != null) { _animator.Play("Effect_HongBao_02", 0, 0.99f); } m_ContainerDisplay.SetActive(true); DetailsRedEnvelope(redPacket.redpackDetailId); OnCreateGridLineCell(m_ScrollerController); } } private IEnumerator Co_Display() { yield return WaitingForSecondConst.WaitMS1500; if (!m_ContainerDisplay.gameObject.activeSelf) { m_ContainerDisplay.SetActive(true); DetailsRedEnvelope(redPacket.redpackDetailId); OnCreateGridLineCell(m_ScrollerController); } } private void OnCreateGridLineCell(ScrollerController gridCtrl)//动态创建 { gridCtrl.Refresh(); for (int i = redPacket._DicRedGrabinfo.Count - 1; i >= 0; i--) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int Index = cell.index; RedBagD _redbag = cell.GetComponent(); _redbag.CountText.text = redPacket._DicRedGrabinfo[Index].MoneyNum.ToString(); _redbag.NameText.text = redPacket._DicRedGrabinfo[Index].Name; if (!redPacket._DicRedBag.ContainsKey(redPacket.redpackDetailId)) { return; } _redbag.MoneyBG.SetSprite("item_bandingxianyu");//绑定 if (redPacket._DicRedGrabinfo[Index].PlayerJob > 0) { _redbag.AvatarCell.InitUI(AvatarHelper.GetOtherAvatarModel(redPacket._DicRedGrabinfo[Index].Face, redPacket._DicRedGrabinfo[Index].FacePic, redPacket._DicRedGrabinfo[Index].PlayerJob)); } else { if (redPacket._DicRedBag[Index].PlayeJob == 0) { _redbag.SetActive(false); } else { _redbag.AvatarCell.InitUI(AvatarHelper.GetAvatarModel(redPacket._DicRedBag[Index].PlayerID, redPacket._DicRedBag[Index].Face, redPacket._DicRedBag[Index].FacePic, redPacket._DicRedBag[Index].PlayeJob)); } } _redbag.BestLuck.SetActive(false); if (redPacket._DicRedBag[redPacket.redpackDetailId].PacketCnt == redPacket._DicRedGrabinfo.Count && redPacket.RedPacketMaxName == redPacket._DicRedGrabinfo[Index].Name) { _redbag.BestLuck.SetActive(true); } } #endregion void CloseButtonXQ()//红包详情关闭按钮 { Close(); } void DetailsRedEnvelope(int _redID)//红包详情 { if (!redPacket._DicRedBag.ContainsKey(_redID)) { Close(); return; } var envelope = redPacket._DicRedBag[_redID]; m_RedpackName.text = Language.Get(StringUtility.Contact("RedpackName_", envelope.GetWay)); bool _self = false; if (redPacket._DicRedGrabinfo != null) { foreach (var data in redPacket._DicRedGrabinfo.Values) { if (UIHelper.ServerStringTrim(data.Name).Equals(UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName))) { _self = true; break; } } } if (!_self && envelope.PacketCnt == redPacket._DicRedGrabinfo.Count) { _StateText.text = Language.Get("Z1045");// "红包派完了"; _DetailText.SetActive(true); if (envelope.MoneyType == 1) { _DetailText.text = string.Format(Language.Get("RedEnvelope_xZ"), envelope.PacketCnt, envelope.MoneyNum); } else { _DetailText.text = string.Format(Language.Get("RedEnvelope_bZ"), envelope.PacketCnt, envelope.MoneyNum); } } else { _DetailText.SetActive(false); foreach (int key in redPacket._DicRedGrabinfo.Keys) { if (redPacket._DicRedGrabinfo[key].Name == PlayerDatas.Instance.baseData.PlayerName) { if (envelope.MoneyType == 1) { _StateText.text = string.Format(Language.Get("GainTiedX_Z"), redPacket._DicRedGrabinfo[key].MoneyNum.ToString()); } else { _StateText.text = string.Format(Language.Get("GainTiedB_Z"), redPacket._DicRedGrabinfo[key].MoneyNum.ToString()); } } } } } } }