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 : _giftDic[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 : _giftDic[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); SortGiftBagCfgs(giftBagCfgs); return giftBagCfgs; } private List SortGiftBagCfgs(List 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 GetNoneGiftCfg() { List giftBagCfgs = new List(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 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]; } /// /// 根据礼包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 GetRefreshTime(int giftId) { int endTime = 0; GiftBagCfg cfg = GiftBagCfgArray.Instance.GetCfg(giftId); if (cfg.refreshType == RefreshType.NONE) { return ""; } else if (cfg.refreshType == RefreshType.DAY) { endTime = TimeUtil.GetTomorrowTime(GlobalCfgArray.globalCfg.refreshTime); } else if (cfg.refreshType == RefreshType.WEEK) { endTime = TimeUtil.GetNextWeekTime(GlobalCfgArray.globalCfg.refreshTime); } if (cfg.refreshType == RefreshType.MONTH) { endTime = TimeUtil.GetNextMonthTime(GlobalCfgArray.globalCfg.refreshTime); } return TimeUtil.FormattingTime(TimeHelper.ServerNowSecs, endTime); } } }