少年修仙传客户端代码仓库
client_linchunjie
2018-11-23 118735a1787bf47e0d332b1350ab02e0ba928ebd
3335 【1.3】优化签到代码
2个文件已添加
2个文件已修改
308 ■■■■ 已修改文件
System/Welfare/SignInCell.cs 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SignInItemBehaviour.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SignInItemBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SignInWin.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SignInCell.cs
@@ -10,18 +10,7 @@
{
    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;
        [SerializeField] SignInItemBehaviour[] m_SignIns;
        SignInModel m_Model;
        SignInModel model
@@ -32,24 +21,7 @@
            }
        }
        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];
        AchievementGuideEffect[] achievementEffects = new AchievementGuideEffect[5];
        public override void Refresh(CellView cell)
        {
@@ -63,101 +35,28 @@
                    m_SignIns[i].gameObject.SetActive(false);
                    continue;
                }
                var _signInCfg = configs[_index];
                var _ring = model.IsFirstMonth ? 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.alreadySignInCount);
                m_RetroactiveImgs[i].gameObject.SetActive(_index == model.alreadySignInCount && model.todaySignIn
                    && model.keepSignInCount > 0);
                m_PresentEffects[i].gameObject.SetActive(_index == model.alreadySignInCount && !model.todaySignIn);
                m_SignIns[i].gameObject.SetActive(true);
                m_SignIns[i].Display(_index);
                if (AchievementGoto.achievementType == AchievementGoto.SignInAchievement && _page == model.alreadySignInCount / 5
                    && _index == model.alreadySignInCount && model.keepSignInCount > 0 && model.todaySignIn)
                {
                    if (_achieveEffects[i] == null)
                    if (achievementEffects[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)
                        achievementEffects[i] = AchievementGuideEffectPool.Require(2);
                        achievementEffects[i].transform.SetParentEx(m_SignIns[i].transform, Vector3.zero, Vector3.zero, Vector3.one);
                        (achievementEffects[i].transform as RectTransform).anchoredPosition = Vector3.zero;
                        if (achievementEffects[i].effect != null)
                        {
                            _achieveEffects[i].effect.SetMask();
                            achievementEffects[i].effect.SetMask();
                        }
                    }
                }
                else if (_achieveEffects[i] != null)
                else if (achievementEffects[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.alreadySignInCount)
            {
                AchievementGoto.achievementType = 0;
                if (!model.todaySignIn)
                {
                    CA509_tagCMDaySign signpack = new CA509_tagCMDaySign();
                    signpack.Day = 0;
                    GameNetSystem.Instance.SendInfo(signpack);
                    return;
                }
                else if (model.keepSignInCount > 0)
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SinInReplenish", model.keepSignInCost), (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (PlayerDatas.Instance.baseData.Gold >= model.keepSignInCost)
                            {
                                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;
                    AchievementGuideEffectPool.Recycle(achievementEffects[i]);
                    achievementEffects[i] = null;
                }
            }
            var configs = Config.Instance.GetAllValues<SignInConfig>();
            var _signInCfg = configs[_day];
            int itemId = 0;
            int itemCount = 0;
            if (!model.IsFirstMonth)
            {
                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);
        }
    }
}
System/Welfare/SignInItemBehaviour.cs
New file
@@ -0,0 +1,113 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class SignInItemBehaviour : MonoBehaviour
    {
        [SerializeField] Image m_Icon;
        [SerializeField] Image m_ItemBG;
        [SerializeField] RectTransform m_ContainerVip;
        [SerializeField] Text m_VipLevel;
        [SerializeField] Image m_Bind;
        [SerializeField] Text m_Day;
        [SerializeField] Text m_Count;
        [SerializeField] RectTransform m_AlreadySignIn;
        [SerializeField] RectTransform m_ContainerKeepSignIn;
        [SerializeField] Button m_SignIn;
        [SerializeField] UIEffect m_Effect;
        SignInModel model { get { return ModelCenter.Instance.GetModel<SignInModel>(); } }
        public void Display(int index)
        {
            m_SignIn.onClick.RemoveAllListeners();
            var configs = Config.Instance.GetAllValues<SignInConfig>();
            if (index >= configs.Count)
            {
                return;
            }
            var config = configs[index];
            var ring = model.IsFirstMonth ? 0 : (config.ItemID.Length > 1 ? 1 : 0);
            var itemConfig = Config.Instance.Get<ItemConfig>(config.ItemID[ring]);
            m_Icon.SetSprite(itemConfig.IconKey);
            m_ItemBG.SetItemBackGround(itemConfig.ItemColor);
            m_ContainerVip.gameObject.SetActive(config.VipLv > 0);
            m_VipLevel.text = StringUtility.Contact("V", config.VipLv,
                Language.Get(StringUtility.Contact("Num_CHS_", config.VipMultiple)), Language.Get("SignInTimes"));
            m_Count.text = config.OrdinaryNum[ring] <= 1 ? string.Empty : config.OrdinaryNum[ring].ToString();
            m_Day.text = Language.Get("SignIn_4", index + 1);
            m_Bind.gameObject.SetActive(config.IsBind == 1);
            m_AlreadySignIn.gameObject.SetActive(index < model.alreadySignInCount);
            m_ContainerKeepSignIn.gameObject.SetActive(index == model.alreadySignInCount && model.todaySignIn
                && model.keepSignInCount > 0);
            m_Effect.gameObject.SetActive(index == model.alreadySignInCount && !model.todaySignIn);
            m_SignIn.onClick.AddListener(() =>
            {
                SignIn(index);
            });
        }
        private void SignIn(int index)
        {
            if (index == model.alreadySignInCount)
            {
                AchievementGoto.achievementType = 0;
                if (!model.todaySignIn)
                {
                    CA509_tagCMDaySign pak = new CA509_tagCMDaySign();
                    pak.Day = 0;
                    GameNetSystem.Instance.SendInfo(pak);
                    return;
                }
                else if (model.keepSignInCount > 0)
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SinInReplenish", model.keepSignInCost), (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (PlayerDatas.Instance.baseData.Gold >= model.keepSignInCost)
                            {
                                CA509_tagCMDaySign pak = new CA509_tagCMDaySign();
                                pak.Day = 1;
                                GameNetSystem.Instance.SendInfo(pak);
                            }
                            else
                            {
                                if (VersionConfig.Get().isBanShu)
                                {
                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
                                    return;
                                }
                                WindowCenter.Instance.Open<RechargeTipWin>();
                            }
                        }
                    });
                    return;
                }
            }
            var configs = Config.Instance.GetAllValues<SignInConfig>();
            var config = configs[index];
            int itemId = 0;
            int itemCount = 0;
            if (!model.IsFirstMonth)
            {
                itemId = config.ItemID.Length > 1 ? config.ItemID[1] : config.ItemID[0];
                itemCount = config.OrdinaryNum.Length > 1 ? config.OrdinaryNum[1] : config.OrdinaryNum[0];
            }
            else
            {
                itemId = config.ItemID[0];
                itemCount = config.OrdinaryNum[0];
            }
            ItemAttrData attrData = new ItemAttrData(itemId, false, (ulong)itemCount, -1, 1);
            ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(attrData);
        }
    }
}
System/Welfare/SignInItemBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 488a1cbbd54fda14faae1b2207ad3939
timeCreated: 1542941563
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Welfare/SignInWin.cs
@@ -16,12 +16,9 @@
    public class SignInWin : Window
    {
        [SerializeField]
        ScrollerController signInCtrl;
        [SerializeField]
        ScrollerController ctnSignCtrl;
        [SerializeField]
        Text signInfo;
        [SerializeField] ScrollerController m_SignInController;
        [SerializeField] ScrollerController m_KeepSignInController;
        [SerializeField] Text m_SignInRemind;
        SignInModel m_Model;
        SignInModel model
@@ -35,8 +32,8 @@
        #region Built-in
        protected override void BindController()
        {
            ctnSignCtrl.lockType = EnhanceLockType.KeepVertical;
            signInCtrl.lockType = EnhanceLockType.KeepVertical;
            m_KeepSignInController.lockType = EnhanceLockType.KeepVertical;
            m_SignInController.lockType = EnhanceLockType.KeepVertical;
        }
        protected override void AddListeners()
@@ -45,11 +42,8 @@
        protected override void OnPreOpen()
        {
            InitSignIn();
            InitCtnSign();
            ctnSignCtrl.mScrollRect.verticalNormalizedPosition = 1;
            DisplaySignIn();
            DisplayKeepSignIn();
            model.OnSignRefresh += OnSignRefresh;
        }
@@ -77,8 +71,8 @@
        #endregion
        private void OnSignRefresh()
        {
            InitSignIn();
            InitCtnSign();
            DisplaySignIn();
            DisplayKeepSignIn();
        }
        private void HandleAchievement()
@@ -90,7 +84,7 @@
                {
                    var _num = Mathf.Max(0, model.alreadySignInCount);
                    var _line = _num / 5;
                    signInCtrl.JumpIndex(_line);
                    m_SignInController.JumpIndex(_line);
                }
                else
                {
@@ -98,45 +92,45 @@
                    AchievementGoto.achievementType = 0;
                }
            }
            signInCtrl.m_Scorller.RefreshActiveCellViews();
            m_SignInController.m_Scorller.RefreshActiveCellViews();
        }
        private void InitSignIn()
        private void DisplaySignIn()
        {
            var configs = Config.Instance.GetAllValues<SignInConfig>();
            if (signInCtrl.GetNumberOfCells(signInCtrl.m_Scorller) == 0)
            if (m_SignInController.GetNumberOfCells(m_SignInController.m_Scorller) == 0)
            {
                signInCtrl.Refresh();
                m_SignInController.Refresh();
                int page = Mathf.CeilToInt((float)configs.Count / 5);
                for (int i = 0; i < page; i++)
                {
                    signInCtrl.AddCell(ScrollerDataType.Header, i);
                    m_SignInController.AddCell(ScrollerDataType.Header, i);
                }
                signInCtrl.Restart();
                m_SignInController.Restart();
            }
            else
            {
                signInCtrl.m_Scorller.RefreshActiveCellViews();
                m_SignInController.m_Scorller.RefreshActiveCellViews();
            }
            signInfo.text = Language.Get("SignIn_3", model.alreadySignInCount, model.keepSignInCount);
            m_SignInRemind.text = Language.Get("SignIn_3", model.alreadySignInCount, model.keepSignInCount);
        }
        private void InitCtnSign()
        private void DisplayKeepSignIn()
        {
            var configs = Config.Instance.GetAllValues<ContinueSignInConfig>();
            if (ctnSignCtrl.GetNumberOfCells(ctnSignCtrl.m_Scorller) == 0)
            if (m_KeepSignInController.GetNumberOfCells(m_KeepSignInController.m_Scorller) == 0)
            {
                ctnSignCtrl.Refresh();
                m_KeepSignInController.Refresh();
                for (int i = 0; i < configs.Count; i++)
                {
                    ctnSignCtrl.AddCell(ScrollerDataType.Header, i);
                    m_KeepSignInController.AddCell(ScrollerDataType.Header, i);
                }
                ctnSignCtrl.Restart();
                m_KeepSignInController.Restart();
            }
            else
            {
                ctnSignCtrl.m_Scorller.RefreshActiveCellViews();
                m_KeepSignInController.m_Scorller.RefreshActiveCellViews();
            }
        }
@@ -144,7 +138,7 @@
        {
            var _num = Mathf.Max(0, model.alreadySignInCount);
            var _line = _num / 5;
            signInCtrl.JumpIndex(_line);
            m_SignInController.JumpIndex(_line);
        }
    }