NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/BattlePass/BattlePassManager.cs

145 lines
4.4 KiB
C#
Raw Normal View History

2025-01-08 17:10:07 +08:00
using System.Collections.Generic;
2025-01-08 11:47:55 +08:00
using cfg.BattlePassCfg;
2025-01-13 14:00:26 +08:00
using Gameplay.Net;
2025-01-08 17:10:07 +08:00
using System.Linq;
2025-01-08 11:47:55 +08:00
using Framework;
using PhxhSDK;
using NLDPB;
2025-01-08 11:47:55 +08:00
public class BattlePassManager : Singlenton<BattlePassManager>
{
2025-01-23 15:47:37 +08:00
public static readonly int ADVANCED_ID = 1;
public static readonly int PREMIUM_ADVANCED_ID = 2;
2025-01-08 17:10:07 +08:00
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];
}
}
2025-01-08 11:47:55 +08:00
/// <summary>
2025-01-14 18:41:13 +08:00
/// 当前赛季通行证ID
2025-01-08 11:47:55 +08:00
/// </summary>
2025-01-14 18:41:13 +08:00
private int curBattlePassID;
2025-01-08 11:47:55 +08:00
2025-01-08 17:10:07 +08:00
/// <summary>
2025-01-14 18:41:13 +08:00
/// 当前赛季通行证数据
2025-01-08 17:10:07 +08:00
/// </summary>
2025-01-14 18:41:13 +08:00
private DataBattlePass curBattlePassData;
2025-01-08 17:10:07 +08:00
2025-01-14 18:41:13 +08:00
public DataBattlePass CurBattlePassData => curBattlePassData;
2025-01-08 17:10:07 +08:00
/// <summary>
/// 当前赛季的等级奖励
/// </summary>
private Dictionary<int, LevelReward> curLevelRewards;
2025-01-14 18:41:13 +08:00
public Dictionary<int, LevelReward> CurLevelRewards => curLevelRewards;
2025-01-09 13:43:33 +08:00
/// <summary>
/// 醒目等级
/// </summary>
private List<int> specialRewardLevels;
2025-01-08 17:10:07 +08:00
2025-01-09 13:43:33 +08:00
public List<int> SpecialRewardLevels => specialRewardLevels;
2025-01-14 18:41:13 +08:00
2025-02-12 17:59:07 +08:00
public bool IsDebug = false;
2025-01-08 11:47:55 +08:00
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;
}
2025-01-08 17:10:07 +08:00
curBattlePassData = dataBattlePass;
2025-01-23 15:47:37 +08:00
if (curBattlePassData == null) return;
2025-01-08 17:10:07 +08:00
// 筛选当前赛季奖励
curLevelRewards = new Dictionary<int, LevelReward>();
2025-01-08 17:10:07 +08:00
var rewardsList = TableManager.Instance.Tables.BattlePassRewardsConfig.DataList;
var rewardsData = rewardsList.Where(data => data.ID == curBattlePassID).ToList();
foreach (var data in rewardsData)
{
2025-01-23 15:47:37 +08:00
if (data.BasicReward.Length != 2 || data.AdvancedReward.Length != 2)
{
DebugUtil.LogError("赛季{0} 的 {1} 等级奖励配置错误", curBattlePassID, data.PassLevel);
continue;
}
2025-01-08 17:10:07 +08:00
var levelReward = new LevelReward(data);
curLevelRewards[data.PassLevel] = levelReward;
}
2025-01-09 18:08:16 +08:00
2025-01-09 13:43:33 +08:00
// 醒目奖励等级
specialRewardLevels = curBattlePassData.SpecialRewardLevel;
specialRewardLevels.Sort();
2025-01-08 11:47:55 +08:00
}
2025-01-14 18:41:13 +08:00
/// <summary>
/// 获取当前经验点数
/// </summary>
2025-01-14 13:03:21 +08:00
public int GetPointItemCount()
{
2025-01-14 13:03:21 +08:00
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassExp);
}
2025-01-14 18:41:13 +08:00
/// <summary>
/// 获取通行证账号等级
/// </summary>
2025-01-14 16:18:20 +08:00
public int GetBattlePassLevel()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassLevel);
}
2025-01-14 18:41:13 +08:00
/// <summary>
/// 获取账号已领奖等级
/// </summary>
2025-01-14 16:18:20 +08:00
public int GetNormalRewardLevel()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassRewardLevel);
}
2025-01-14 18:41:13 +08:00
/// <summary>
/// 获取高级账号已领奖等级
/// </summary>
2025-01-14 16:18:20 +08:00
public int GetAdvancedRewardLevel()
{
2025-01-14 16:18:20 +08:00
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassAdvancedRewardLevel);
}
2025-01-14 18:41:13 +08:00
/// <summary>
/// 是否开通高级奖励
/// </summary>
2025-01-14 16:18:20 +08:00
public bool IsAdvancedAccount()
{
2025-01-14 18:41:13 +08:00
return Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced) >= 1;
}
/// <summary>
/// 获取账号状态 0-无 1-高级账号 2-尊享版高级账号
/// </summary>
public int GetAdvancedAccount()
{
return (int)Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassIsAdvanced);
2025-01-08 11:47:55 +08:00
}
}