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

143 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System.Collections.Generic;
using cfg.BattlePassCfg;
using System.Linq;
using Framework;
using PhxhSDK;
public class BattlePassManager : Singlenton<BattlePassManager>
{
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];
}
}
/// <summary>
/// 通行证等级结构
/// </summary>
public struct BattlePassLevel
{
/// <summary>
/// 普通等级
/// </summary>
public int NormalLevel;
/// <summary>
/// 高级等级
/// </summary>
public int AdvancedLevel;
public BattlePassLevel(int normalLevel, int advancedLevel)
{
NormalLevel = normalLevel;
AdvancedLevel = advancedLevel;
}
}
/// <summary>
/// 当前赛季通行证数据
/// </summary>
private DataBattlePass curBattlePassData;
public DataBattlePass CurBattlePassData => curBattlePassData;
/// <summary>
/// 当前赛季通行证ID
/// </summary>
private int curBattlePassID;
private DataBattlePassRewards curBattlePassRewards;
/// <summary>
/// 当前赛季的等级奖励
/// </summary>
private Dictionary<int, LevelReward> curLevelRewards;
/// <summary>
/// 当前解锁等级
/// </summary>
private BattlePassLevel unLockLevel;
/// <summary>
/// 当前已经领取奖励的等级
/// </summary>
private BattlePassLevel getRewardLevel;
/// <summary>
/// 醒目等级
/// </summary>
private List<int> specialRewardLevels;
public BattlePassLevel UnLockLevel => unLockLevel;
public BattlePassLevel GetRewardLevel => getRewardLevel;
public Dictionary<int, LevelReward> CurLevelRewards => curLevelRewards;
public List<int> SpecialRewardLevels => specialRewardLevels;
public bool IsAdvancedAccout;
public void Init()
{
/*var ID = Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassId);
DebugUtil.LogError("赛季ID:{0},是否购买VIP标识:{1},当前等级:{2},普通领取等级:{3},VIP领取等级",Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassId)
,Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassVip),
Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassLevel),
Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassRewardLevel),
Actor.Instance.Logic.GetCount((uint)LogicID.BattlePassVipRewardLevel));*/
curLevelRewards = new Dictionary<int, LevelReward>();
// 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;
}
// 醒目奖励等级
specialRewardLevels = curBattlePassData.SpecialRewardLevel;
specialRewardLevels.Sort();
IsAdvancedAccout = true;
}
public void Release()
{
}
}