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 RefreshType // { // public static int NONE = 0; // public static int DAY = 1; // public static int WEEK = 2; // public static int MONTH = 3; // } public class CostType { public static int FREE = 0; public static int MONEY = 1; public static int RMB = 2; public static int ITEM = 3; } public class RechargeDataManager : SingletonBase { public string[] refreshType = { "永久限购", "每日限购", "每周限购", "每月限购" }; private Dictionary _rechargeDic = new Dictionary(); private Dictionary _giftDic = new Dictionary(); private Dictionary _exchangeDic = new Dictionary(); public void Clear() { _rechargeDic.Clear(); _giftDic.Clear(); _exchangeDic.Clear(); } public void UpdateRechargeData(int rechargeId, int num) { if (!_rechargeDic.ContainsKey(rechargeId)) { _rechargeDic.Add(rechargeId, num); } else { _rechargeDic[rechargeId] = num; } } public void UpdateGiftData(int giftId, int num) { if (!_giftDic.ContainsKey(giftId)) { _giftDic.Add(giftId, num); } else { _giftDic[giftId] = num; } } public void UpdateExchangeData(int exchangeId, int num) { if (!_exchangeDic.ContainsKey(exchangeId)) { _exchangeDic.Add(exchangeId, num); } else { _exchangeDic[exchangeId] = num; } } /// /// 根据充值id获取购买次数 /// /// /// public int GetRechargeBuyNumById(int rechargeId) { return !_rechargeDic.ContainsKey(rechargeId) ? 0 : _rechargeDic[rechargeId]; } /// /// 根据礼包id获取购买次数 /// /// /// public int GetGiftBuyNumById(int giftId) { return !_giftDic.ContainsKey(giftId) ? 0 : _giftDic[giftId]; } /// /// 根据充值id获取购买次数 /// /// /// public int GetExchangeBuyNumById(int exchangeId) { return !_exchangeDic.ContainsKey(exchangeId) ? 0 : _exchangeDic[exchangeId]; } public List GetGiftBagCfgs() { List giftBagCfgs = new List(); List noneGiftBagCfgs = GetNoneGiftCfg(); giftBagCfgs = giftBagCfgs.Concat(noneGiftBagCfgs).ToList(); GiftBagCfg StoryLvGiftCfg = GetStoryLvGiftCfg(); if (StoryLvGiftCfg != null) giftBagCfgs.Add(StoryLvGiftCfg); GiftBagCfg RoleLvGiftCfg = GetRoleLvGiftCfg(); if (RoleLvGiftCfg != null) giftBagCfgs.Add(RoleLvGiftCfg); giftBagCfgs = RemoveNotOpenCfg(giftBagCfgs); SortGiftBagCfgs(giftBagCfgs); return giftBagCfgs; } private List SortGiftBagCfgs(List giftBagCfgs) { giftBagCfgs.Sort((GiftBagCfg a, GiftBagCfg b) => { //未售罄的>未解锁>已售罄的 int buyTypeA = (a.maxBuyNum == 0 || a.maxBuyNum - GetGiftBuyNumById(a.id) > 0) ? 1 : -1; int buyTypeB = (b.maxBuyNum == 0 || b.maxBuyNum - GetGiftBuyNumById(b.id) > 0) ? 1 : -1; if (buyTypeA > buyTypeB) return -1; if (buyTypeA < buyTypeB) return 1; //解锁状态 int lockA = GetGiftStateById(a.id) ? 1 : -1; int lockB = GetGiftStateById(b.id) ? 1 : -1; if (lockA > lockB) return -1; if (lockA < lockB) return 1; //免费>钻石>现金>道具 if (a.costType < b.costType) return -1; if (a.costType > b.costType) return 1; //有下架时间的 > 没有下架时间的 int endTimeA = a.endTime != "" ? 1 : -1; int endTimeB = b.endTime != "" ? 1 : -1; if (endTimeA > endTimeB) return -1; if (endTimeA < endTimeB) return 1; int descA = a.desc == "" ? 0 : int.Parse(a.desc); int descB = b.desc == "" ? 0 : int.Parse(b.desc); if (descA != descB) return descA - descB; if (a.price != b.price) return a.price - b.price; return 0; }); return giftBagCfgs; } private List RemoveNotOpenCfg(List giftBagCfgs) { 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 List GetNoneGiftCfg() { List giftBagCfgs = new List(GiftBagCfgArray.Instance.GetCfgs(LockType.NONE)); return giftBagCfgs; } private GiftBagCfg GetStoryLvGiftCfg() { List 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 (GetGiftStateById(giftBagCfgs[i].id) && (GetGiftBuyNumById(giftBagCfgs[i].id) < giftBagCfgs[i].maxBuyNum)) return giftBagCfgs[i]; } return giftBagCfgs[0]; } private GiftBagCfg GetRoleLvGiftCfg() { List 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 (GetGiftStateById(giftBagCfgs[i].id) && (GetGiftBuyNumById(giftBagCfgs[i].id) < giftBagCfgs[i].maxBuyNum)) return giftBagCfgs[i]; } return giftBagCfgs[0]; } public List GetExchangeCfgs() { List shopExchangeCfgs = new List(ShopExchangeCfgArray.Instance.dataArray); shopExchangeCfgs.Sort((ShopExchangeCfg a, ShopExchangeCfg b) => { //未售罄的>已售罄的 int buyTypeA = (a.maxLimit == 0 || a.maxLimit - GetExchangeBuyNumById(a.id) > 0) ? 1 : -1; int buyTypeB = (b.maxLimit == 0 || b.maxLimit - GetExchangeBuyNumById(b.id) > 0) ? 1 : -1; if (buyTypeA > buyTypeB) return -1; if (buyTypeA < buyTypeB) return 1; return 0; }); return shopExchangeCfgs; } /// /// 根据礼包Id获取礼包解锁状态 /// /// /// /// public bool GetGiftStateById(int giftId) { GiftBagCfg cfg = GiftBagCfgArray.Instance.GetCfg(giftId); if (cfg.lockType == LockType.NONE) { return true; } else if (cfg.lockType == LockType.STORY_LV) { return InstanceZonesDataManager.CheckLevelPass(cfg.storyLevelId); } else { return GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) >= cfg.lv; } } /// /// 根据礼包id获取下架时间 /// /// /// public string GetEndTime(int giftId) { int endTime = 0; GiftBagCfg cfg = GiftBagCfgArray.Instance.GetCfg(giftId); if (cfg.endTime == "") return ""; endTime = TimeUtil.DateTimeToTimestamp(cfg.endTime); return TimeUtil.FormattingTime(TimeHelper.ServerNowSecs, endTime); } } }