using System;
|
using System.Collections.Generic;
|
using LitJson;
|
|
public class SuperVipManager : GameSystemManager<SuperVipManager>
|
{
|
/// <summary>渠道门槛配置 {渠道名: 累充金额/元}</summary>
|
public Dictionary<string, int> channelThresholdDict = new Dictionary<string, int>();
|
/// <summary>客服领取奖励列表 [[物品ID, 个数], ...]</summary>
|
public int[][] customerServiceRewards;
|
|
/// <summary>SuperVIP入口红点</summary>
|
public Redpoint superVipRedpoint = new Redpoint(MainRedDot.SuperVIPRepoint);
|
|
public override void Init()
|
{
|
var config = FuncConfigConfig.Get("SuperVIP");
|
channelThresholdDict = JsonMapper.ToObject<Dictionary<string, int>>(config.Numerical1);
|
customerServiceRewards = JsonMapper.ToObject<int[][]>(config.Numerical2);
|
|
// 每次重新登录后重置红点(重新上线后显示红点)
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
|
RechargeManager.Instance.rechargeChangeEvent += OnRechargeChangeEvent;
|
}
|
|
public override void Release()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
|
RechargeManager.Instance.rechargeChangeEvent -= OnRechargeChangeEvent;
|
}
|
|
private void OnRechargeChangeEvent()
|
{
|
UpdateRedpoint();
|
}
|
|
/// <summary>
|
/// 判定SuperVIP入口是否开启
|
/// 条件: 当前渠道在配置表中 且 历史累充 >= 配置门槛(元) * 100
|
/// </summary>
|
public bool IsEntryOpen()
|
{
|
var appId = VersionConfig.Get().appId;
|
if (!channelThresholdDict.TryGetValue(appId, out var thresholdYuan))
|
return false;
|
return RechargeManager.Instance.realRecharge >= thresholdYuan * 100;
|
}
|
|
/// <summary>
|
/// 重新登录(数据初始化前),先清除红点状态再重新判断显示
|
/// </summary>
|
void OnBeforePlayerDataInitializeEventOnRelogin()
|
{
|
superVipRedpoint.state = RedPointState.None;
|
UpdateRedpoint();
|
}
|
|
/// <summary>
|
/// 根据入口开放状态更新红点
|
/// </summary>
|
public void UpdateRedpoint()
|
{
|
superVipRedpoint.state = IsEntryOpen() ? RedPointState.Simple : RedPointState.None;
|
}
|
|
/// <summary>
|
/// 清除红点(进入SuperVIPWin后调用)
|
/// </summary>
|
public void ClearRedpoint()
|
{
|
superVipRedpoint.state = RedPointState.None;
|
}
|
}
|