From 5f4500fe393e362d51cc4f444c2bb2e8c04ed86d Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 27 六月 2019 18:31:15 +0800
Subject: [PATCH] 7625 子 【主干】新增商店红点 / 【前端】【主干】新增商店红点
---
System/Store/StoreModel.cs | 146 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 141 insertions(+), 5 deletions(-)
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index c99c2cc..128a457 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -30,6 +30,8 @@
[XLua.CSharpCallLua]
public class StoreModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk, ISwitchAccount
{
+ Dictionary<int, List<int>> storeAlchemyStudyItemShopIds = new Dictionary<int, List<int>>();
+
public int[] normalBuyCoinsTypes { get; private set; }
public string UNIONSTORESAVE_KEY { get; private set; }
public string MUSTBUYSAVE_KEY { get; private set; }
@@ -50,7 +52,7 @@
RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
-
+ AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
private bool isUpdatePlayerLv;
@@ -69,6 +71,7 @@
storeTrailerLv = int.Parse(mallPush.Numerical1);
MainPositionTween.switchFunctionStateEvent += OnMoveTopPart;
+ alchemyModel.alchemyStateRefresh += AlchemyStateRefresh;
}
public void OnBeforePlayerDataInitialize()
@@ -122,6 +125,7 @@
UpdateCanBuyRedpoint();
UpdateMustBuyRedpoint();
UpdatePetAndMountPutAwayRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
isLogin = false;
}
@@ -133,6 +137,12 @@
public override void UnInit()
{
MainPositionTween.switchFunctionStateEvent -= OnMoveTopPart;
+ alchemyModel.alchemyStateRefresh -= AlchemyStateRefresh;
+ }
+
+ private void AlchemyStateRefresh()
+ {
+ UpdateAlchemyStudyItemRedpoint();
}
public void RefreshMysteryShop()
@@ -239,6 +249,17 @@
}
}
storePushDict.Add(pushType, shopIdlist);
+ }
+ }
+
+ if (!string.IsNullOrEmpty(storeRedRules.Numerical3))
+ {
+ var json = JsonMapper.ToObject(storeRedRules.Numerical3);
+ foreach (var typeKey in json.Keys)
+ {
+ var type = int.Parse(typeKey);
+ storeAlchemyStudyItemShopIds.Add(type,
+ new List<int>(JsonMapper.ToObject<int[]>(json[typeKey].ToJson())));
}
}
}
@@ -718,6 +739,7 @@
UpdateCanBuyRedpoint();
UpdateMustBuyRedpoint();
UpdatePetAndMountPutAwayRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
}
private void RefreshPlayerData(PlayerDataType type)
@@ -732,10 +754,15 @@
case PlayerDataType.GoldPaper:
UpdateFreeShopRedpoint();
UpdateCanBuyRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
+ break;
+ case PlayerDataType.UnionLiven:
+ UpdateAlchemyStudyItemRedpoint(8);
break;
case PlayerDataType.FBHelpPoint:
UpdateFreeShopRedpoint();
UpdateCanBuyRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
break;
}
}
@@ -747,7 +774,7 @@
{
ControllerRedPoint();
}
-
+ UpdateAlchemyStudyItemRedpoint(8);
}
private void RefreshServerHour()
@@ -771,6 +798,8 @@
{
PlayerPrefs.DeleteKey(UNIONSTORESAVE_KEY);
}
+
+ UpdateAlchemyStudyItemRedpoint(8);
}
public event Action RefreshBuyShopLimitEvent;
@@ -815,6 +844,7 @@
UpdateCanBuyRedpoint();
UpdateMustBuyRedpoint();
UpdatePetAndMountPutAwayRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
}
if (RefreshBuyShopLimitEvent != null)
RefreshBuyShopLimitEvent();
@@ -1076,9 +1106,11 @@
UpdateCanBuyRedpoint();
UpdateMustBuyRedpoint();
UpdatePetAndMountPutAwayRedpoint();
+ UpdateAlchemyStudyItemRedpoint();
break;
case FuncOpenEnum.BlastFurnace:
ControllerRedPoint();
+ UpdateAlchemyStudyItemRedpoint();
break;
}
}
@@ -1188,7 +1220,7 @@
public void ControllerRedPoint(bool isLook = false)
{
- MainRedDot.Instance.fairyStoreRedPoint.state = RedPointState.None;
+ fairyStoreRemindRedpoint.state = RedPointState.None;
if (!ModelCenter.Instance.GetModel<FairyModel>().fairyStoreOpen
|| !FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlastFurnace))
{
@@ -1200,13 +1232,13 @@
{
if (CheckIsBuyNewItem(familyLv))
{
- MainRedDot.Instance.fairyStoreRedPoint.state = RedPointState.Simple;
+ fairyStoreRemindRedpoint.state = RedPointState.Simple;
return;
}
if (CheckIsNewMonth())
{
- MainRedDot.Instance.fairyStoreRedPoint.state = RedPointState.Simple;
+ fairyStoreRemindRedpoint.state = RedPointState.Simple;
return;
}
}
@@ -1223,12 +1255,16 @@
public const int StoreFunc3_RedKey = 2203;
public const int StoreFunc4_RedKey = 2204;
public const int StoreFunc5_RedKey = 2205;
+ public const int StoreFunc8_RedKey = 2208;
+ public const int FairyStoreRemind_RedKey = 107010601;
public Redpoint storeFuncPoint = new Redpoint(StoreFunc_RedKey);
public Redpoint storeFunc1Point = new Redpoint(StoreFunc_RedKey, StoreFunc1_RedKey);
public Redpoint storeFunc2Point = new Redpoint(StoreFunc_RedKey, StoreFunc2_RedKey);
public Redpoint storeFunc3Point = new Redpoint(StoreFunc_RedKey, StoreFunc3_RedKey);
public Redpoint storeFunc4Point = new Redpoint(StoreFunc_RedKey, StoreFunc4_RedKey);
public Redpoint storeFunc5Point = new Redpoint(StoreFunc_RedKey, StoreFunc5_RedKey);
+ public Redpoint storeFunc8Point = new Redpoint(MainRedDot.FAIRYStore_REDPOINT_KEY3, StoreFunc8_RedKey);
+ public Redpoint fairyStoreRemindRedpoint = new Redpoint(MainRedDot.FAIRYStore_REDPOINT_KEY3, FairyStoreRemind_RedKey);
public Dictionary<int, Redpoint> shopRedDict = new Dictionary<int, Redpoint>();
public void SetShopRedpoint()
{
@@ -1264,6 +1300,11 @@
case 5:
redKey = StoreFunc5_RedKey * 10000 + storeConfig.ID;
redpoint = new Redpoint(StoreFunc5_RedKey, redKey);
+ shopRedDict.Add(storeConfig.ID, redpoint);
+ break;
+ case 8:
+ redKey = StoreFunc8_RedKey * 10000 + storeConfig.ID;
+ redpoint = new Redpoint(StoreFunc8_RedKey, redKey);
shopRedDict.Add(storeConfig.ID, redpoint);
break;
}
@@ -1363,6 +1404,101 @@
}
}
+ public void UpdateAlchemyStudyItemRedpoint()
+ {
+ foreach (var shopType in storeAlchemyStudyItemShopIds.Keys)
+ {
+ UpdateAlchemyStudyItemRedpoint(shopType);
+ }
+ }
+
+ public void UpdateAlchemyStudyItemRedpoint(int shopType)
+ {
+ if (!storeAlchemyStudyItemShopIds.ContainsKey(shopType))
+ {
+ return;
+ }
+ var shopIds = storeAlchemyStudyItemShopIds[shopType];
+ if (showStoreTypeDict.ContainsKey(shopType))
+ {
+ var shopDatas = showStoreTypeDict[shopType];
+ foreach (var shopId in shopIds)
+ {
+ bool redable = false;
+
+ if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store))
+ {
+ var shopData = shopDatas.Find((x) =>
+ {
+ return x.shopId == shopId;
+ });
+ if (shopData != null)
+ {
+ var storeConfig = shopData.storeConfig;
+ var count = 0;
+ switch (shopType)
+ {
+ case 5:
+ if (!TryGetIsSellOut(storeConfig, out count))
+ {
+ if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
+ {
+ redable = IsSatisfyStudyAlchemy(storeConfig.ItemID);
+ }
+ }
+ break;
+ case 8:
+ if (TryGetIsSellOut(storeConfig, out count))
+ {
+ break;
+ }
+ if (PlayerDatas.Instance.baseData.FamilyId == 0)
+ {
+ break;
+ }
+ if (storeConfig.VIPLV.Length > 0
+ && PlayerDatas.Instance.baseData.VIPLv < storeConfig.VIPLV[0])
+ {
+ break;
+ }
+ if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < storeConfig.LimitValue)
+ {
+ break;
+ }
+ if (!MoneyIsEnough(storeConfig.MoneyType, (ulong)storeConfig.MoneyNumber))
+ {
+ break;
+ }
+ redable = IsSatisfyStudyAlchemy(storeConfig.ItemID);
+ break;
+ }
+ }
+ }
+
+ if (shopRedDict.ContainsKey(shopId))
+ {
+ shopRedDict[shopId].state = redable ? RedPointState.Simple : RedPointState.None;
+ }
+ }
+ }
+ }
+
+ bool IsSatisfyStudyAlchemy(int itemId)
+ {
+ var alchemyModel = ModelCenter.Instance.GetModel<AlchemyModel>();
+ var alchemyId = 0;
+ if (alchemyModel.TryGetAlchemyByStudyMaterial(itemId, out alchemyId))
+ {
+ if (!alchemyModel.IsGraspRecipe(alchemyId))
+ {
+ var error = 0;
+ alchemyModel.TryLearn(alchemyId, out error);
+ return error == 1;
+ }
+ }
+ return false;
+ }
+
public void ClearMustBuyRedpoint(StoreConfig storeConfig)
{
int type = 0;
--
Gitblit v1.8.0