少年修仙传客户端代码仓库
client_linchunjie
2018-08-27 d106f11e7f44c748f595da36e0cdfd54849649e6
System/Welfare/SignInCell.cs
@@ -1,162 +1,162 @@
using Snxxz.UI;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
using System;
namespace EnhancedUI.EnhancedScroller
{
    public class SignInCell : ScrollerUI
    {
        [SerializeField] List<RectTransform> m_SignIns;
        [SerializeField] List<Image> m_ItemIcons;
        [SerializeField] List<Image> m_ItemBgs;
        [SerializeField] List<Image> m_VipImgs;
        [SerializeField] List<Text> m_VipTxts;
        [SerializeField] List<Image> m_BindImgs;
        [SerializeField] List<Text> m_DayTxts;
        [SerializeField] List<Text> m_ItemCntTxts;
        [SerializeField] List<Image> m_HasSignImgs;
        [SerializeField] List<Image> m_RetroactiveImgs;
        [SerializeField] List<Button> m_SignBtns;
        [SerializeField] List<RectTransform> m_PresentEffects;
        SignInModel m_Model;
        SignInModel model
        {
            get
            {
                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<SignInModel>());
            }
        }
        public List<RectTransform> SignIns
        {
            get
            {
                return m_SignIns;
            }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        AchievementGuideEffect[] _achieveEffects = new AchievementGuideEffect[5];
        public override void Refresh(CellView cell)
        {
            var _page = cell.index;
            for (int i = 0; i < 5; i++)
            {
                var _index = _page * 5 + i;
                if (_index >= model.signAwardList.Count)
                {
                    m_SignIns[i].gameObject.SetActive(false);
                    continue;
                }
                var _signInCfg = model.signAwardList[_index];
                var _ring = model.isFirst ? 0 : (_signInCfg.ItemID.Length > 1 ? 1 : 0);
                var _itemCfg = ConfigManager.Instance.GetTemplate<ItemConfig>(_signInCfg.ItemID[_ring]);
                m_ItemIcons[i].SetSprite(_itemCfg.IconKey);
                m_ItemBgs[i].SetItemBackGround(_itemCfg.ItemColor);
                m_VipImgs[i].gameObject.SetActive(_signInCfg.VipLv > 0);
                m_VipTxts[i].text = StringUtility.Contact("V", _signInCfg.VipLv, Language.Get(StringUtility.Contact("Num_CHS_", _signInCfg.VipMultiple)), Language.Get("SignInTimes"));
                m_ItemCntTxts[i].text = _signInCfg.OrdinaryNum[_ring] <= 1 ? string.Empty : _signInCfg.OrdinaryNum[_ring].ToString();
                m_DayTxts[i].text = Language.Get("SignIn_4", _index + 1);
                m_BindImgs[i].gameObject.SetActive(_signInCfg.IsBind == 1);
                m_HasSignImgs[i].gameObject.SetActive(_index < model.signNum);
                m_RetroactiveImgs[i].gameObject.SetActive(_index == model.signNum && model.todaySign
                    && model.surSignNum > 0);
                m_PresentEffects[i].gameObject.SetActive(_index == model.signNum && !model.todaySign);
                if (AchievementGoto.achievementType == AchievementGoto.SignInAchievement && _page == model.signNum / 5
                    && _index == model.signNum && model.surSignNum > 0 && model.todaySign)
                {
                    if (_achieveEffects[i] == null)
                    {
                        _achieveEffects[i] = AchievementGuideEffectPool.Require(2);
                        _achieveEffects[i].transform.SetParentEx(m_SignIns[i], Vector3.zero, Vector3.zero, Vector3.one);
                        (_achieveEffects[i].transform as RectTransform).anchoredPosition = Vector3.zero;
                        if (_achieveEffects[i].effect != null)
                        {
                            _achieveEffects[i].effect.SetMask();
                        }
                    }
                }
                else if (_achieveEffects[i] != null)
                {
                    AchievementGuideEffectPool.Recycle(_achieveEffects[i]);
                    _achieveEffects[i] = null;
                }
                m_SignBtns[i].onClick.RemoveAllListeners();
                m_SignBtns[i].onClick.AddListener(() =>
                {
                    OnClickSign(_index);
                });
            }
        }
        private void OnClickSign(int _day)
        {
            if (_day == model.signNum)
            {
                AchievementGoto.achievementType = 0;
                if (!model.todaySign)
                {
                    CA509_tagCMDaySign signpack = new CA509_tagCMDaySign();
                    signpack.Day = 0;
                    GameNetSystem.Instance.SendInfo(signpack);
                    return;
                }
                else if (model.surSignNum > 0)
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SinInReplenish", model.ctnSignJade), (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (PlayerDatas.Instance.baseData.Gold >= model.ctnSignJade)
                            {
                                CA509_tagCMDaySign signpack = new CA509_tagCMDaySign();
                                signpack.Day = 1;
                                GameNetSystem.Instance.SendInfo(signpack);
                            }
                            else
                            {
                                if (VersionConfig.Get().isBanShu)
                                {
                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
                                    return;
                                }
                                WindowCenter.Instance.Open<RechargeTipWin>();
                            }
                        }
                    });
                    return;
                }
            }
            var _signInCfg = model.signAwardList[_day];
            int itemId = 0;
            int itemCount = 0;
            if (!model.isFirst)
            {
                itemId = _signInCfg.ItemID.Length > 1 ? _signInCfg.ItemID[1] : _signInCfg.ItemID[0];
                itemCount = _signInCfg.OrdinaryNum.Length > 1 ? _signInCfg.OrdinaryNum[1] : _signInCfg.OrdinaryNum[0];
            }
            else
            {
                itemId = _signInCfg.ItemID[0];
                itemCount = _signInCfg.OrdinaryNum[0];
            }
            ItemAttrData attrData = new ItemAttrData(itemId, false, (ulong)itemCount, -1, 1);
            itemTipsModel.SetItemTipsModel(attrData);
        }
    }
}
using Snxxz.UI;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
using System;
namespace EnhancedUI.EnhancedScroller
{
    public class SignInCell : ScrollerUI
    {
        [SerializeField] List<RectTransform> m_SignIns;
        [SerializeField] List<Image> m_ItemIcons;
        [SerializeField] List<Image> m_ItemBgs;
        [SerializeField] List<Image> m_VipImgs;
        [SerializeField] List<Text> m_VipTxts;
        [SerializeField] List<Image> m_BindImgs;
        [SerializeField] List<Text> m_DayTxts;
        [SerializeField] List<Text> m_ItemCntTxts;
        [SerializeField] List<Image> m_HasSignImgs;
        [SerializeField] List<Image> m_RetroactiveImgs;
        [SerializeField] List<Button> m_SignBtns;
        [SerializeField] List<RectTransform> m_PresentEffects;
        SignInModel m_Model;
        SignInModel model
        {
            get
            {
                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<SignInModel>());
            }
        }
        public List<RectTransform> SignIns
        {
            get
            {
                return m_SignIns;
            }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        AchievementGuideEffect[] _achieveEffects = new AchievementGuideEffect[5];
        public override void Refresh(CellView cell)
        {
            var _page = cell.index;
            for (int i = 0; i < 5; i++)
            {
                var _index = _page * 5 + i;
                if (_index >= model.signAwardList.Count)
                {
                    m_SignIns[i].gameObject.SetActive(false);
                    continue;
                }
                var _signInCfg = model.signAwardList[_index];
                var _ring = model.isFirst ? 0 : (_signInCfg.ItemID.Length > 1 ? 1 : 0);
                var _itemCfg = Config.Instance.Get<ItemConfig>(_signInCfg.ItemID[_ring]);
                m_ItemIcons[i].SetSprite(_itemCfg.IconKey);
                m_ItemBgs[i].SetItemBackGround(_itemCfg.ItemColor);
                m_VipImgs[i].gameObject.SetActive(_signInCfg.VipLv > 0);
                m_VipTxts[i].text = StringUtility.Contact("V", _signInCfg.VipLv, Language.Get(StringUtility.Contact("Num_CHS_", _signInCfg.VipMultiple)), Language.Get("SignInTimes"));
                m_ItemCntTxts[i].text = _signInCfg.OrdinaryNum[_ring] <= 1 ? string.Empty : _signInCfg.OrdinaryNum[_ring].ToString();
                m_DayTxts[i].text = Language.Get("SignIn_4", _index + 1);
                m_BindImgs[i].gameObject.SetActive(_signInCfg.IsBind == 1);
                m_HasSignImgs[i].gameObject.SetActive(_index < model.signNum);
                m_RetroactiveImgs[i].gameObject.SetActive(_index == model.signNum && model.todaySign
                    && model.surSignNum > 0);
                m_PresentEffects[i].gameObject.SetActive(_index == model.signNum && !model.todaySign);
                if (AchievementGoto.achievementType == AchievementGoto.SignInAchievement && _page == model.signNum / 5
                    && _index == model.signNum && model.surSignNum > 0 && model.todaySign)
                {
                    if (_achieveEffects[i] == null)
                    {
                        _achieveEffects[i] = AchievementGuideEffectPool.Require(2);
                        _achieveEffects[i].transform.SetParentEx(m_SignIns[i], Vector3.zero, Vector3.zero, Vector3.one);
                        (_achieveEffects[i].transform as RectTransform).anchoredPosition = Vector3.zero;
                        if (_achieveEffects[i].effect != null)
                        {
                            _achieveEffects[i].effect.SetMask();
                        }
                    }
                }
                else if (_achieveEffects[i] != null)
                {
                    AchievementGuideEffectPool.Recycle(_achieveEffects[i]);
                    _achieveEffects[i] = null;
                }
                m_SignBtns[i].onClick.RemoveAllListeners();
                m_SignBtns[i].onClick.AddListener(() =>
                {
                    OnClickSign(_index);
                });
            }
        }
        private void OnClickSign(int _day)
        {
            if (_day == model.signNum)
            {
                AchievementGoto.achievementType = 0;
                if (!model.todaySign)
                {
                    CA509_tagCMDaySign signpack = new CA509_tagCMDaySign();
                    signpack.Day = 0;
                    GameNetSystem.Instance.SendInfo(signpack);
                    return;
                }
                else if (model.surSignNum > 0)
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SinInReplenish", model.ctnSignJade), (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (PlayerDatas.Instance.baseData.Gold >= model.ctnSignJade)
                            {
                                CA509_tagCMDaySign signpack = new CA509_tagCMDaySign();
                                signpack.Day = 1;
                                GameNetSystem.Instance.SendInfo(signpack);
                            }
                            else
                            {
                                if (VersionConfig.Get().isBanShu)
                                {
                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
                                    return;
                                }
                                WindowCenter.Instance.Open<RechargeTipWin>();
                            }
                        }
                    });
                    return;
                }
            }
            var _signInCfg = model.signAwardList[_day];
            int itemId = 0;
            int itemCount = 0;
            if (!model.isFirst)
            {
                itemId = _signInCfg.ItemID.Length > 1 ? _signInCfg.ItemID[1] : _signInCfg.ItemID[0];
                itemCount = _signInCfg.OrdinaryNum.Length > 1 ? _signInCfg.OrdinaryNum[1] : _signInCfg.OrdinaryNum[0];
            }
            else
            {
                itemId = _signInCfg.ItemID[0];
                itemCount = _signInCfg.OrdinaryNum[0];
            }
            ItemAttrData attrData = new ItemAttrData(itemId, false, (ulong)itemCount, -1, 1);
            itemTipsModel.SetItemTipsModel(attrData);
        }
    }
}