| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- using System.Collections.Generic;
 
- using System.Linq;
 
- using ET;
 
- namespace GFGGame
 
- {
 
-     public class BattlePassTaskDataManager : Singleton<BattlePassTaskDataManager>
 
-     {
 
-         //通行证赛季Id
 
-         private int SeasonId;
 
-         //是否购买通行证
 
-         private bool IsBuy;
 
-         private long SeasonEndTime;
 
-         private SelectionCache<int, int> selectionCache;
 
-         //已经领奖levelId
 
-         private HashSet<int> NormalRewards = new HashSet<int>();
 
-         //已经高级领奖levelId
 
-         private HashSet<int> SuperRewards = new HashSet<int>();
 
-         //所有特别奖励
 
-         private List<KeyValuePair<int, int>> tempItems = new List<KeyValuePair<int, int>>();
 
-         public int GetSeasonId()
 
-         {
 
-             return SeasonId;
 
-         }
 
-         public void AddNormalReward(int levelId)
 
-         {
 
-             NormalRewards.Add(levelId);
 
-         }
 
-         public void AddSuperReward(int levelId)
 
-         {
 
-             SuperRewards.Add(levelId);
 
-         }
 
-         public void SetSeasonId(int seasonId)
 
-         {
 
-             SeasonId = seasonId;
 
-             //设置赛季结束时间
 
-             //获取赛季配置
 
-             var seasonCfg = BattlePassOpenCfgArray.Instance.GetCfg(seasonId);
 
-             if (seasonCfg == null) return;
 
-             SeasonEndTime = TimeUtil.GetResetTimeSec(seasonCfg.endTime);
 
-             SetSpecialCfgCache();
 
-             InitItemTemp();
 
-         }
 
-         public void SetIsBuy(bool isBuy)
 
-         {
 
-             IsBuy = isBuy;
 
-         }
 
-         public bool GetIsBuy()
 
-         {
 
-             return IsBuy;
 
-         }
 
-         //0:未完成 1:可领取 2:已领取 3:继续领取
 
-         public int GetRewardState(int level)
 
-         {
 
-             var battlePassLevel = GetBattlePassLevel();
 
-             if (level > battlePassLevel) return 0;
 
-             if (!NormalRewards.Contains(level)) return 1;
 
-             if (!IsBuy) return 2;
 
-             return !SuperRewards.Contains(level) ? 3 : 2;
 
-         }
 
-         //检查普通领取状态
 
-         public bool CheckLevelRewardGet(int levelId)
 
-         {
 
-             return NormalRewards.Contains(levelId);
 
-         }
 
-         //检查高级领取状态
 
-         public bool CheckSuperLevelRewardGet(int levelId)
 
-         {
 
-             return SuperRewards.Contains(levelId);
 
-         }
 
-         //获取赛季结束时间
 
-         public long GetSeasonEndTime()
 
-         {
 
-             return SeasonEndTime;
 
-         }
 
-         //获取通行证当前等级
 
-         public int GetBattlePassLevel()
 
-         {
 
-             return GameGlobal.myNumericComponent.GetAsInt(NumericType.PassLevel);
 
-         }
 
-         //获取通行证当前经验
 
-         public long GetBattlePassExp()
 
-         {
 
-             return ItemDataManager.GetItemNum(ConstItemID.BATTLE_PASS_CURRENCY);
 
-         }
 
-         public BattlePassCfg GetSpecialCfg(int level)
 
-         {
 
-             var targetLevel = selectionCache.GetValueNoCache(level);
 
-             return BattlePassCfgArray.Instance.GetCfgByidAndlevel(SeasonId, targetLevel);
 
-         }
 
-         private void SetSpecialCfgCache()
 
-         {
 
-             var battlePassCfgs = BattlePassCfgArray.Instance.GetCfgsByidAndisGood(GetSeasonId(), 1);
 
-             var minIndex = 0;
 
-             var selections = new List<Selection<int, int>>();
 
-             foreach (var battlePassCfg in battlePassCfgs)
 
-             {
 
-                 selections.Add(new Selection<int, int>(minIndex, battlePassCfg.level, battlePassCfg.level,
 
-                     Selection<int, int>.SelectionModel.AllInclude));
 
-                 minIndex = battlePassCfg.level + 1;
 
-             }
 
-             selectionCache = new SelectionCache<int, int>(battlePassCfgs[0].level);
 
-             selectionCache.AddSelection(selections);
 
-         }
 
-         //获取所有特别奖励
 
-         public List<KeyValuePair<int, int>> GetAllSpecialCfg()
 
-         {
 
-             return tempItems;
 
-         }
 
-         private void InitItemTemp()
 
-         {
 
-             tempItems.Clear();
 
-             var battlePassCfgs = BattlePassCfgArray.Instance.GetCfgsByid(GetSeasonId());
 
-             var items = new Dictionary<int, int>();
 
-             foreach (var itemsInfo in battlePassCfgs.SelectMany(battlePassCfg => battlePassCfg.bonusSpecialArr))
 
-             {
 
-                 items.TryGetValue(itemsInfo[0], out var num);
 
-                 items[itemsInfo[0]] = num + itemsInfo[1];
 
-             }
 
-             foreach (var item in items)
 
-             {
 
-                 tempItems.Add(item);
 
-             }
 
-         }
 
-         //获取升级奖励
 
-         public int[][] GetUpLevelReward(int upLevel)
 
-         {
 
-             var battlePassLevel = GetBattlePassLevel();
 
-             var seasonId = GetSeasonId();
 
-             int[][] rs = null;
 
-             for (var i = upLevel; i > 0; i--)
 
-             {
 
-                 var passLevel = battlePassLevel + i;
 
-                 var cfg = BattlePassCfgArray.Instance.GetCfgByidAndlevel(seasonId, passLevel);
 
-                 if (cfg == null) continue;
 
-                 var mergeBonus = ItemUtil.MergeBonus(cfg.bonusNormalArr, cfg.bonusSpecialArr);
 
-                 rs = ItemUtil.MergeBonus(rs, mergeBonus);
 
-             }
 
-             return rs;
 
-         }
 
-     }
 
- }
 
 
  |