using System.Collections.Generic; using cfg.BattlePassCfg; using Gameplay.Net; using System.Linq; using Framework; using PhxhSDK; using NLDPB; public class BattlePassManager : Singlenton { public static readonly int ADVANCED_ID = 1; public static readonly int PREMIUM_ADVANCED_ID = 2; 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; BasicRewardID = basicReward[0]; BasicRewardCount = basicReward[1]; AdvancedRewardID = advancedReward[0]; AdvancedRewardCount = advancedReward[1]; } } /// /// 当前赛季通行证ID /// private int curBattlePassID; /// /// 当前赛季通行证数据 /// private DataBattlePass curBattlePassData; public DataBattlePass CurBattlePassData => curBattlePassData; /// /// 当前赛季的等级奖励 /// private Dictionary curLevelRewards; public Dictionary CurLevelRewards => curLevelRewards; /// /// 醒目等级 /// private List specialRewardLevels; public List SpecialRewardLevels => specialRewardLevels; public bool IsDebug = false; public void Init() { curBattlePassID = (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassId); // 当前赛季配置 var cfg = TableManager.Instance.Tables.BattlePassConfig.DataMap; if (!cfg.TryGetValue(curBattlePassID, out var dataBattlePass)) { DebugUtil.LogError("服务器下发的赛季ID[{0}] ,没有对应配置, 使用默认配置", curBattlePassID); curBattlePassData = cfg[0]; curBattlePassID = curBattlePassData.ID; } curBattlePassData = dataBattlePass; if (curBattlePassData == null) return; // 筛选当前赛季奖励 curLevelRewards = new Dictionary(); var rewardsList = TableManager.Instance.Tables.BattlePassRewardsConfig.DataList; var rewardsData = rewardsList.Where(data => data.ID == curBattlePassID).ToList(); foreach (var data in rewardsData) { if (data.BasicReward.Length != 2 || data.AdvancedReward.Length != 2) { DebugUtil.LogError("赛季{0} 的 {1} 等级奖励配置错误", curBattlePassID, data.PassLevel); continue; } var levelReward = new LevelReward(data); curLevelRewards[data.PassLevel] = levelReward; } // 醒目奖励等级 specialRewardLevels = curBattlePassData.SpecialRewardLevel; specialRewardLevels.Sort(); } /// /// 获取当前经验点数 /// public int GetPointItemCount() { return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassExp); } /// /// 获取通行证账号等级 /// public int GetBattlePassLevel() { return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassLevel); } /// /// 获取账号已领奖等级 /// public int GetNormalRewardLevel() { return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassRewardLevel); } /// /// 获取高级账号已领奖等级 /// public int GetAdvancedRewardLevel() { return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassAdvancedRewardLevel); } /// /// 是否开通高级奖励 /// public bool IsAdvancedAccount() { return Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced) >= 1; } /// /// 获取账号状态 0-无 1-高级账号 2-尊享版高级账号 /// public int GetAdvancedAccount() { return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced); } }