From 83a5355c80bee53c88c83932a9015ec4384d7d41 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 12 十二月 2019 00:43:43 +0800
Subject: [PATCH] 8354 商城优化
---
System/Store/StoreModel.cs | 141 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 136 insertions(+), 5 deletions(-)
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index 2def97e..4fea323 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -48,6 +48,24 @@
public int fairyStoreJumpShopId = 0;
+ int m_SelectClassifyId = 0;
+ public int selectSecondType
+ {
+ get { return m_SelectClassifyId; }
+ set
+ {
+ if (m_SelectClassifyId != value)
+ {
+ m_SelectClassifyId = value;
+ if (selectClassifyRefresh != null)
+ {
+ selectClassifyRefresh();
+ }
+ }
+ }
+ }
+
+ public event Action selectClassifyRefresh;
public event Action mysteryShopRefreshEvent;
RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
@@ -79,6 +97,7 @@
isUpdatePlayerLv = false;
IsMustBuyDay = false;
isLogin = true;
+ sortStoreSecondType = true;
ClearJump();
StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
FuncOpen.Instance.OnFuncStateChangeEvent -= FuncStateChange;
@@ -359,9 +378,8 @@
{
int sort1 = start.storeConfig.ShopSort;
int sort2 = end.storeConfig.ShopSort;
- if (sort1.CompareTo(sort2) != 0) return sort1.CompareTo(sort2);
- return 0;
+ return sort1.CompareTo(sort2);
}
public class StoreData
@@ -376,11 +394,15 @@
private Dictionary<int, List<StoreData>> showStoreTypeDict = new Dictionary<int, List<StoreData>>();
+ private Dictionary<int, Dictionary<int, List<StoreData>>> showStoreSecondTypeDict = new Dictionary<int, Dictionary<int, List<StoreData>>>();
+
+
+ // 鏂拌鍒欏垎浜岀骇鏍囩锛屾鍑芥暟淇濈暀锛屽彟澧炲姞UpdateShowStoreEx鍑芥暟
public void UpdateShowStore()
{
showStoreTypeDict.Clear();
int playeLv = PlayerDatas.Instance.baseData.LV;
- int vipLevel = PlayerDatas.Instance.baseData.VIPLv;
+ //int vipLevel = PlayerDatas.Instance.baseData.VIPLv;
foreach (var type in storeTypeDict.Keys)
{
var storeDatas = storeTypeDict[type];
@@ -390,7 +412,7 @@
for (int i = 0; i < storeDatas.Count; i++)
{
var storeData = storeDatas[i];
- bool isReachLv = playeLv >= storeData.storeConfig.LV ? true : false;
+ bool isReachLv = playeLv >= storeData.storeConfig.LVSee ? true : false;
bool isReachSpec = true;
switch (storeData.storeConfig.ShopType)
{
@@ -430,6 +452,78 @@
showStoreTypeDict.Add(type, showStoreDatas);
}
}
+ UpdateShowStoreEx();
+ }
+
+ // 鍟嗗煄鍒嗕簩绾ф爣绛�
+ public void UpdateShowStoreEx()
+ {
+ sortStoreSecondType = true;
+ showStoreSecondTypeDict.Clear();
+ foreach (var type in showStoreTypeDict.Keys)
+ {
+ if (!showStoreSecondTypeDict.ContainsKey(type))
+ showStoreSecondTypeDict[type] = new Dictionary<int, List<StoreData>>();
+
+ foreach (var storeData in showStoreTypeDict[type])
+ {
+
+ foreach (var secondType in storeData.storeConfig.SecondType)
+ {
+ if (!showStoreSecondTypeDict[type].ContainsKey(secondType))
+ showStoreSecondTypeDict[type][secondType] = new List<StoreData>();
+
+ showStoreSecondTypeDict[type][secondType].Add(storeData);
+ }
+
+ }
+ }
+
+ }
+
+ bool sortStoreSecondType = true;
+
+ public void SortStoreSecondType()
+ {
+ //ArrayList lst = new ArrayList(showStoreSecondTypeDict.Keys);
+ if (!sortStoreSecondType)
+ return;
+
+ foreach (var type in showStoreSecondTypeDict.Keys)
+ {
+ foreach (var secondType in showStoreSecondTypeDict[type].Keys)
+ {
+ var storeList = showStoreSecondTypeDict[type][secondType];
+ storeList.Sort(CompareSecondShop);
+ }
+ }
+
+ sortStoreSecondType = false;
+ }
+
+ private bool IsSellOut(StoreData storeData)
+ {
+ int remainNum = 0;
+ if (TryGetIsSellOut(storeData.storeConfig, out remainNum))
+ return true;
+
+ if (storeData.storeConfig.TheOnlyShop == 1 && CheckTheOnlyShopSellOut(storeData.shopId))
+ return true;
+
+ return false;
+ }
+
+ private int CompareSecondShop(StoreData start, StoreData end)
+ {
+ bool isSellOut1 = IsSellOut(start);
+ bool isSellOut2 = IsSellOut(end);
+
+ if (isSellOut1 != isSellOut2)
+ return isSellOut1.CompareTo(isSellOut2);
+ int sort1 = start.storeConfig.ShopSort;
+ int sort2 = end.storeConfig.ShopSort;
+
+ return sort1.CompareTo(sort2);
}
/// <summary>
@@ -486,6 +580,41 @@
}
return results;
+ }
+
+ // 鑾峰彇浜岀骇鏍囩鍟嗗搧
+ public List<StoreData> TryGetStoreDatasBySecondType(int type, int secondType)
+ {
+ if (!showStoreSecondTypeDict.ContainsKey(type))
+ return null;
+
+ if (!showStoreSecondTypeDict[type].ContainsKey(secondType))
+ return null;
+
+ SortStoreSecondType();
+ return showStoreSecondTypeDict[type][secondType];
+ }
+
+ // 鑾峰緱浜岀骇鏍囩鐨勭涓�涓爣绛剧被鍨�
+ public int GetFirstStoreSecondType(int type)
+ {
+ if (!showStoreSecondTypeDict.ContainsKey(type))
+ return 0;
+
+ ArrayList sortList = new ArrayList(showStoreSecondTypeDict[type].Keys);
+ sortList.Sort();
+ return (int)sortList[0];
+ }
+
+ // 鑾峰緱浜岀骇鏍囩鐨勭涓�涓爣绛剧被鍨�
+ public ArrayList GetStoreSecondTypeList(int type)
+ {
+ if (!showStoreSecondTypeDict.ContainsKey(type))
+ return null;
+
+ ArrayList sortList = new ArrayList(showStoreSecondTypeDict[type].Keys);
+ sortList.Sort();
+ return sortList;
}
public StoreData GetStoreData(int shopId)
@@ -724,9 +853,10 @@
return remainSecond;
}
-
+ int refreshTime = 0;
private void UpdateSecond()
{
+ if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store)) return;
if (isUpdatePlayerLv)
{
UpdatePlayerLv();
@@ -851,6 +981,7 @@
if (!isLogin)
{
+ sortStoreSecondType = true;
UpdateShowStore();
UpdateFreeShopRedpoint();
UpdateCanBuyRedpoint();
--
Gitblit v1.8.0