少年修仙传客户端代码仓库
hch
2019-12-12 83a5355c80bee53c88c83932a9015ec4384d7d41
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();