//--------------------------------------------------------  
 | 
//    [Author]:           第二世界  
 | 
//    [  Date ]:           Wednesday, January 30, 2019  
 | 
//--------------------------------------------------------  
 | 
  
 | 
using System;  
 | 
using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using UnityEngine;  
 | 
using UnityEngine.UI;  
 | 
  
 | 
namespace Snxxz.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<RedPacketModel>()); } }  
 | 
        RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } }  
 | 
        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<RedBagD>();  
 | 
  
 | 
            _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.HeadshotImage.SetSprite(GeneralDefine.GetJobHeadPortrait(redPacket._DicRedGrabinfo[Index].PlayerJob, 0));  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                if (redPacket._DicRedBag[Index].PlayeJob == 0)  
 | 
                {  
 | 
                    _redbag.SetActive(false);  
 | 
                }  
 | 
                else  
 | 
                {   
 | 
                    _redbag.HeadshotImage.SetSprite(GeneralDefine.GetJobHeadPortrait(redPacket._DicRedBag[Index].PlayeJob, 0));  
 | 
                }  
 | 
            }  
 | 
  
 | 
            _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());  
 | 
                        }  
 | 
                    }  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 |