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