From 9715a9e2eec264da4bf295a8cb6833c55c56fb91 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 03 一月 2019 17:38:08 +0800
Subject: [PATCH] 5668 【前端】【1.4.100】荣誉商店新增红点逻辑
---
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs | 123 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 122 insertions(+), 1 deletions(-)
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 1a8f2d9..01e1250 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/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 鑽h獕鍟嗗簵绾㈢偣
+ 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
}
}
--
Gitblit v1.8.0