using System.Collections.Generic; using cfg.BattlePassCfg; using System.Linq; using Framework; using PhxhSDK; public class BattlePassManager : Singlenton { public struct LevelReward { public int BasicRewardID; public int BasicRewardCount; public int AdvancedRewardID; public int AdvancedRewardCount; public LevelReward(DataBattlePassRewards rewardsData) { var basicReward = rewardsData.BasicReward; var advancedReward = rewardsData.AdvancedReward; if (basicReward.Length != 2 || advancedReward.Length != 2) { DebugUtil.LogError("赛季{0} 的 {1} 等级奖励配置错误", Instance.curBattlePassID, rewardsData.PassLevel); } BasicRewardID = basicReward[0]; BasicRewardCount = basicReward[1]; AdvancedRewardID = advancedReward[0]; AdvancedRewardCount = advancedReward[1]; } } /// /// 通行证等级结构 /// public struct BattlePassLevel { /// /// 普通等级 /// public int NormalLevel; /// /// 高级等级 /// public int AdvancedLevel; public BattlePassLevel(int normalLevel, int advancedLevel) { NormalLevel = normalLevel; AdvancedLevel = advancedLevel; } } /// /// 当前赛季通行证数据 /// private DataBattlePass curBattlePassData; public DataBattlePass CurBattlePassData => curBattlePassData; /// /// 当前赛季通行证ID /// private int curBattlePassID; private DataBattlePassRewards curBattlePassRewards; /// /// 当前赛季的等级奖励 /// private Dictionary curLevelRewards; /// /// 当前解锁等级 /// private BattlePassLevel unLockLevel; /// /// 当前已经领取奖励的等级 /// private BattlePassLevel getRewardLevel; public BattlePassLevel UnLockLevel => unLockLevel; public BattlePassLevel GetRewardLevel => getRewardLevel; public Dictionary CurLevelRewards => curLevelRewards; public void Init() { curLevelRewards = new Dictionary(); // TODO 从服务器获取数据 var cfg = TableManager.Instance.Tables.BattlePassConfig.DataList; if (cfg.Count <= 0) return; curBattlePassData = cfg[0]; curBattlePassID = curBattlePassData.ID; // TODO 从服务器获取等级相关数据 unLockLevel = new BattlePassLevel(10, 10); getRewardLevel = new BattlePassLevel(8, 7); // 筛选当前赛季奖励 var rewardsList = TableManager.Instance.Tables.BattlePassRewardsConfig.DataList; var rewardsData = rewardsList.Where(data => data.ID == curBattlePassID).ToList(); if (rewardsData.Count != curBattlePassData.MaxPurchaseLevel + 1) DebugUtil.LogError("赛季 {0} 没有配置足够对应的等级奖励", curBattlePassID); foreach (var data in rewardsData) { var levelReward = new LevelReward(data); curLevelRewards[data.PassLevel] = levelReward; } } public void Release() { } }