|
@@ -1,7 +1,23 @@
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using ET;
|
|
|
|
|
|
namespace GFGGame
|
|
|
{
|
|
|
+ public class RechargeStoreType
|
|
|
+ {
|
|
|
+ public static int RECHARGE = 0;
|
|
|
+ public static int GIFT = 1;
|
|
|
+ public static int EXCHANGE = 2;
|
|
|
+
|
|
|
+ }
|
|
|
+ public class LockType
|
|
|
+ {
|
|
|
+ public static int NONE = 0;
|
|
|
+ public static int STORY_LV = 1;
|
|
|
+ public static int ROLE_LV = 2;
|
|
|
+ }
|
|
|
public class RechargeDataManager : SingletonBase<RechargeDataManager>
|
|
|
{
|
|
|
private Dictionary<int, int> _rechargeDic = new Dictionary<int, int>();
|
|
@@ -47,16 +63,114 @@ namespace GFGGame
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 根据充值id获取购买次数
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="rechargeId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public int GetRechargeBuyNumById(int rechargeId)
|
|
|
+ {
|
|
|
+ return !_rechargeDic.ContainsKey(rechargeId) ? 0 : _giftDic[rechargeId];
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 根据礼包id获取购买次数
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="giftId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public int GetGiftBuyNumById(int giftId)
|
|
|
+ {
|
|
|
+ return !_giftDic.ContainsKey(giftId) ? 0 : _giftDic[giftId];
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 根据充值id获取购买次数
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="exchangeId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public int GetExchangeBuyNumById(int exchangeId)
|
|
|
+ {
|
|
|
+ return !_exchangeDic.ContainsKey(exchangeId) ? 0 : _giftDic[exchangeId];
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- public List<GiftBagCfg> GetGiftBagDatas()
|
|
|
+ public List<GiftBagCfg> GetGiftBagCfgs()
|
|
|
{
|
|
|
- GiftBagCfg[] giftBagCfgs = GiftBagCfgArray.Instance.dataArray;
|
|
|
- List<GiftBagCfg> giftBagDatas = new List<GiftBagCfg>();
|
|
|
- for (int i = 0; i < giftBagCfgs.Length; i++)
|
|
|
+ List<GiftBagCfg> giftBagCfgs = new List<GiftBagCfg>();
|
|
|
+
|
|
|
+ List<GiftBagCfg> noneGiftBagCfgs = GetNoneGiftCfg();
|
|
|
+ giftBagCfgs = giftBagCfgs.Concat(noneGiftBagCfgs).ToList<GiftBagCfg>();
|
|
|
+
|
|
|
+ GiftBagCfg StoryLvGiftCfg = GetStoryLvGiftCfg();
|
|
|
+ if (StoryLvGiftCfg != null) giftBagCfgs.Add(StoryLvGiftCfg);
|
|
|
+ GiftBagCfg RoleLvGiftCfg = GetRoleLvGiftCfg();
|
|
|
+ if (RoleLvGiftCfg != null) giftBagCfgs.Add(RoleLvGiftCfg);
|
|
|
+ SortGiftBagCfgs(giftBagCfgs);
|
|
|
+ return giftBagCfgs;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<GiftBagCfg> SortGiftBagCfgs(List<GiftBagCfg> giftBagCfgs)
|
|
|
+ {
|
|
|
+ giftBagCfgs.Sort((GiftBagCfg a, GiftBagCfg b) =>
|
|
|
{
|
|
|
+ // if (GetGiftBuyNumById(a.id) < a.maxBuyNum && GetGiftBuyNumById(b.id) < b.maxBuyNum)
|
|
|
+ // {
|
|
|
+ // return -1;
|
|
|
+ // }
|
|
|
+ // else if (GetGiftBuyNumById(a.id) < a.maxBuyNum && GetGiftBuyNumById(b.id) < b.maxBuyNum)
|
|
|
+ int buyTypeA = a.maxBuyNum - GetGiftBuyNumById(a.id) > 0 ? 1 : a.maxBuyNum - GetGiftBuyNumById(a.id) == 0 ? 0 : -1;
|
|
|
+ int buyTypeB = b.maxBuyNum - GetGiftBuyNumById(b.id) > 0 ? 1 : b.maxBuyNum - GetGiftBuyNumById(b.id) == 0 ? 0 : -1;
|
|
|
+ return buyTypeA.CompareTo(buyTypeB);
|
|
|
+
|
|
|
+ });
|
|
|
+ return giftBagCfgs;
|
|
|
+ }
|
|
|
+ private List<GiftBagCfg> GetNoneGiftCfg()
|
|
|
+ {
|
|
|
+ List<GiftBagCfg> giftBagCfgs = GiftBagCfgArray.Instance.GetCfgs(LockType.NONE);
|
|
|
|
|
|
+ for (int i = giftBagCfgs.Count - 1; i >= 0; i--)
|
|
|
+ {
|
|
|
+ if (giftBagCfgs[i].startTime != "" && TimeUtil.IsBeforeCurTime(giftBagCfgs[i].startTime) || giftBagCfgs[i].endTime != "" && TimeUtil.IsLaterCurTime(giftBagCfgs[i].endTime))
|
|
|
+ {
|
|
|
+ giftBagCfgs.RemoveAt(i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return giftBagCfgs;
|
|
|
+ }
|
|
|
+ private GiftBagCfg GetStoryLvGiftCfg()
|
|
|
+ {
|
|
|
+ List<GiftBagCfg> giftBagCfgs = GiftBagCfgArray.Instance.GetCfgs(LockType.STORY_LV);
|
|
|
+ if (giftBagCfgs.Count == 0) return null;
|
|
|
+ giftBagCfgs.Sort((GiftBagCfg a, GiftBagCfg b) =>
|
|
|
+ {
|
|
|
+ if (a.storyLevelId.CompareTo(b.storyLevelId) != 0)
|
|
|
+ {
|
|
|
+ return a.storyLevelId.CompareTo(b.storyLevelId);
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ });
|
|
|
+ for (int i = 0; i < giftBagCfgs.Count; i++)
|
|
|
+ {
|
|
|
+ if (InstanceZonesDataManager.CheckLevelPass(giftBagCfgs[i].storyLevelId) && (GetGiftBuyNumById(giftBagCfgs[i].id) < giftBagCfgs[i].maxBuyNum)) return giftBagCfgs[i];
|
|
|
+ }
|
|
|
+ return giftBagCfgs[0];
|
|
|
+ }
|
|
|
+ private GiftBagCfg GetRoleLvGiftCfg()
|
|
|
+ {
|
|
|
+ List<GiftBagCfg> giftBagCfgs = GiftBagCfgArray.Instance.GetCfgs(LockType.ROLE_LV);
|
|
|
+ if (giftBagCfgs.Count == 0) return null;
|
|
|
+ giftBagCfgs.Sort((GiftBagCfg a, GiftBagCfg b) =>
|
|
|
+ {
|
|
|
+ if (a.lv.CompareTo(b.lv) != 0)
|
|
|
+ {
|
|
|
+ return a.lv.CompareTo(b.lv);
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ });
|
|
|
+ for (int i = 0; i < giftBagCfgs.Count; i++)
|
|
|
+ {
|
|
|
+ if ((GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) >= giftBagCfgs[i].lv) && (GetGiftBuyNumById(giftBagCfgs[i].id) < giftBagCfgs[i].maxBuyNum)) return giftBagCfgs[i];
|
|
|
}
|
|
|
- return giftBagDatas;
|
|
|
+ return giftBagCfgs[0];
|
|
|
}
|
|
|
}
|
|
|
}
|