少年修仙传客户端代码仓库
Client_PangDeRong
2019-01-03 9715a9e2eec264da4bf295a8cb6833c55c56fb91
5668 【前端】【1.4.100】荣誉商店新增红点逻辑
4个文件已修改
178 ■■■■ 已修改文件
System/CrossServerOneVsOne/CrossServerOneVsOneHonorShopCell.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOnePKSeason.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneHonorShopCell.cs
@@ -16,6 +16,7 @@
        [SerializeField] Image sellImg;
        [SerializeField] Button shopCellBtn;
        [SerializeField] Text refreshTimeText;
        [SerializeField] RedpointBehaviour redpointBeh;
        StoreModel _storeModel;
        StoreModel m_storeModel
@@ -23,12 +24,18 @@
            get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel<StoreModel>()); }
        }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
        public void SetDisplay(StoreConfig storeConfig)
        {
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(m_storeModel.GetReplaceId(storeConfig.ID,storeConfig.ItemID));
            if (itemConfig == null) return;
            Redpoint redpoint = crossServerModel.GetRedpointById(storeConfig.ID);
            if(redpoint != null)
            {
                redpointBeh.redpointId = redpoint.id;
            }
            ItemCellModel cellModel = new ItemCellModel(itemConfig.ID, false, 0, storeConfig.IsBind,"",PackType.rptDeleted,true);
            itemCell.Init(cellModel);
            nameText.text = itemConfig.ItemName;
@@ -107,6 +114,7 @@
            shopCellBtn.AddListener(()=>
            {
                m_storeModel.OnClickShopCell(storeConfig);
                crossServerModel.ClearRedpoint(storeConfig.ID);
            });
           
        }
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -4,6 +4,7 @@
using System.Text;
using TableConfig;
using LitJson;
using UnityEngine;
namespace Snxxz.UI
{
@@ -33,14 +34,18 @@
        }
        public DateTime matchStartTime { get; set; }
        public DateTime roundEndTime { get; private set; }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        public override void Init()
        {
            IsMatching = false;
            ParseFuncConfig();
            SetHonorRedpoint();
        }
        public void OnBeforePlayerDataInitialize()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData;
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
            CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent -= UpdateSeason;
            TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
@@ -49,7 +54,7 @@
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
            InitData();
        }
        public void OnAfterPlayerDataInitialize()
        {
            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
@@ -64,6 +69,7 @@
        public void OnPlayerLoginOk()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
            CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent += UpdateSeason;
            TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
@@ -78,6 +84,7 @@
            UpdateCrossDayAwardsRedpoint();
            UpdateCrossMatchRedpoint();
            UpdateCanBuyRedpoint();
        }
        public override void UnInit()
@@ -136,6 +143,7 @@
        private void UpdateSeason()
        {
            UpdateCrossMatchRedpoint();
            UpdateCanBuyRedpoint();
        }
        private void UpdatePlayerInfo()
@@ -567,6 +575,119 @@
                crossServerRedpoint.count = 0;
            }
        }
        #region 荣誉商店红点
        public const int CrossHonorStoreRedKey = 2130104;
        public Redpoint crossHonorStoreRedpoint = new Redpoint(CrossOneVsOneRedKey, CrossHonorStoreRedKey);
        private Dictionary<int, Redpoint> honorRedpointDict = new Dictionary<int, Redpoint>();
        public void SetHonorRedpoint()
        {
            honorRedpointDict.Clear();
            List<StoreConfig> storelist = Config.Instance.GetAllValues<StoreConfig>();
            for (int i = 0; i < storelist.Count; i++)
            {
                StoreConfig storeConfig = storelist[i];
                int redKey = 0;
                Redpoint redpoint = null;
                if(storeConfig.ShopType == (int)StoreFunc.CrossOneVsOneHonor)
                {
                    redKey = CrossHonorStoreRedKey *100 + storeConfig.ID;
                    redpoint = new Redpoint(CrossHonorStoreRedKey, redKey);
                    honorRedpointDict.Add(storeConfig.ID, redpoint);
                }
            }
        }
        public Redpoint GetRedpointById(int shopId)
        {
            Redpoint redpoint = null;
            honorRedpointDict.TryGetValue(shopId,out redpoint);
            return redpoint;
        }
        private void UpdatePlayerData(PlayerDataRefresh type)
        {
            switch(type)
            {
                case PlayerDataRefresh.CDBPlayerRefresh_Honor:
                    UpdateCanBuyRedpoint();
                    break;
            }
        }
        public void UpdateCanBuyRedpoint()
        {
            var pkSeason = CrossServerOneVsOnePKSeason.Instance;
            if (!pkSeason.IsEnterCrossServer()) return;
            List<StoreModel.StoreData> storeDatas = storeModel.TryGetStoreDatas((int)StoreFunc.CrossOneVsOneHonor);
            if(storeDatas != null)
            {
                for(int i = 0; i < storeDatas.Count; i++)
                {
                    var storeData = storeDatas[i];
                    var storeConfig = storeData.storeConfig;
                    int type = 0;
                    TryGetRedTypeByShopId(storeConfig.ID, out type);
                    if (type == 6)
                    {
                        string key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", storeData.shopId);
                        int remainNum = 0;
                        honorRedpointDict[storeConfig.ID].state = RedPointState.None;
                        if (!storeModel.TryGetIsSellOut(storeConfig, out remainNum))
                        {
                            if(!PlayerPrefs.HasKey(key))
                            {
                                if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
                                {
                                    honorRedpointDict[storeConfig.ID].state = RedPointState.Simple;
                                    LocalSave.SetBool(key, true);
                                }
                            }
                            else
                            {
                                if(LocalSave.GetBool(key))
                                {
                                    if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
                                    {
                                        honorRedpointDict[storeConfig.ID].state = RedPointState.Simple;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public bool TryGetRedTypeByShopId(int shopId, out int type)
        {
            type = 0;
            var ruleDict = storeModel.storeRedRuleDict;
            foreach (var key in ruleDict.Keys)
            {
                List<int> idlist = ruleDict[key];
                if (idlist.Contains(shopId))
                {
                    type = key;
                    return true;
                }
            }
            return false;
        }
        public void ClearRedpoint(int shopId)
        {
            string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", shopId);
            if(honorRedpointDict[shopId].state != RedPointState.None)
            {
                honorRedpointDict[shopId].state = RedPointState.None;
                LocalSave.SetBool(record, false);
            }
        }
        #endregion
        #endregion
    }
}
System/CrossServerOneVsOne/CrossServerOneVsOnePKSeason.cs
@@ -32,26 +32,6 @@
            }
        }
        public bool IsEnterCrossServer
        {
            get
            {
                bool isFuncOpen = FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.CrossServer);
                bool isOpenDay = TimeUtility.OpenDay >= crossServerModel.afterOpenDayOpenCross;
                if(!isFuncOpen)
                {
                    SysNotifyMgr.Instance.ShowTip("FuncLimit_Level");
                    return false;
                }
                if(!isOpenDay)
                {
                    SysNotifyMgr.Instance.ShowTip("CrossMatching15", crossServerModel.afterOpenDayOpenCross);
                    return false;
                }
                return true;
            }
        }
        public class PkZoneInfo
        {
            public int ZoneID { get; private set; }        // 赛区ID
@@ -157,6 +137,31 @@
            }
        }
        public bool IsEnterCrossServer(bool isTip = false)
        {
            bool isFuncOpen = FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.CrossServer);
            bool isOpenDay = TimeUtility.OpenDay >= crossServerModel.afterOpenDayOpenCross;
            if (!isFuncOpen)
            {
                if(isTip)
                {
                    SysNotifyMgr.Instance.ShowTip("FuncLimit_Level");
                }
                return false;
            }
            if (!isOpenDay)
            {
                if (isTip)
                {
                    SysNotifyMgr.Instance.ShowTip("CrossMatching15", crossServerModel.afterOpenDayOpenCross);
                }
                return false;
            }
            return true;
        }
        public void UpdatePkSeason(HC004_tagGCCrossRealmPKSeasonInfo pkSeason)
        {
            inDateNotify = false;
System/WindowJump/WindowJumpMgr.cs
@@ -1015,7 +1015,7 @@
            case JumpUIType.CrossServerOneVsOne277:
            case JumpUIType.CrossServerOneVsOne278:
            case JumpUIType.CrossServerOneVsOne279:
                if(!CrossServerOneVsOnePKSeason.Instance.IsEnterCrossServer)
                if(!CrossServerOneVsOnePKSeason.Instance.IsEnterCrossServer(true))
                {
                    return false;
                }