少年修仙传客户端代码仓库
client_linchunjie
2019-06-27 5f4500fe393e362d51cc4f444c2bb2e8c04ed86d
7625 子 【主干】新增商店红点 / 【前端】【主干】新增商店红点
3个文件已修改
150 ■■■■■ 已修改文件
System/Store/StoreModel.cs 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/UnionShopCell.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/UnionStoreWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
System/Store/UnionShopCell.cs
@@ -17,6 +17,7 @@
        [SerializeField] public Image buyBtnIcon;
        [SerializeField] public Text buyNeedText;
        [SerializeField] public GameObject moneyObj;
        [SerializeField] public RedpointBehaviour redpoint;
        AchievementGuideEffect guidEffect = null;
System/Store/UnionStoreWin.cs
@@ -298,6 +298,9 @@
                        shopItemCell.coinsIcon.SetIconWithMoneyType(shopInfo.MoneyType);
                        ulong shopCost = (ulong)(shopInfo.MoneyNumber);
                        shopItemCell.coinNumText.text = UIHelper.ReplaceLargeNum(shopCost);
                        shopItemCell.redpoint.redpointId = StoreModel.StoreFunc8_RedKey * 10000 + shopInfo.ID;
                        BuyItemController buyItem = BuyItemController.Instance;
                        int curVipIndex = -1;
                        int nextVipIndex = -1;