From c8aea6cbef51b3dd41b4d911bc7e6bf89a6e2e2d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 20 三月 2026 15:14:33 +0800
Subject: [PATCH] 0312 优化红颜定军阁解锁判断
---
Main/System/BoneField/AdsManager.cs | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 168 insertions(+), 11 deletions(-)
diff --git a/Main/System/BoneField/AdsManager.cs b/Main/System/BoneField/AdsManager.cs
index 5033fc5..c22725f 100644
--- a/Main/System/BoneField/AdsManager.cs
+++ b/Main/System/BoneField/AdsManager.cs
@@ -1,26 +1,71 @@
using System;
using System.Collections.Generic;
+using UnityEngine;
public class AdsManager : GameSystemManager<AdsManager>
{
//<骞垮憡ID,浠婃棩宸查鍙栧箍鍛婂鍔辨鏁�>
private Dictionary<int, int> adsInfoDict = new Dictionary<int, int>();
- public event Action<int, int> OnAdsInfoListUpdateEvent;//ADID ADMapID
+ public event Action<int, int, int> OnAdsInfoListUpdateEvent;//ADID type value
+ public Dictionary<int, Redpoint> redPointDict = new Dictionary<int, Redpoint>();
+
+ public int waitAdID = 0; //鍥炶皟鍚庡彂鏀惧鍔辩敤
+ int loadErrorCD = 10; //绛夊緟10绉掑悗鎵嶈兘鍐嶈姹�
+ public float lastLoadErrorTime = 0;
+
public override void Init()
{
- DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEvent;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += UpdateRedpoint;
+ DungeonManager.Instance.UpdateFBInfoListEvent += OnUpdateFBInfoChangeEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+
+ var keys = ADAwardConfig.GetKeys();
+ for (int i = 0; i < keys.Count; i++)
+ {
+ var config = ADAwardConfig.Get(keys[i]);
+ if (config.RedpointID == 0)
+ {
+ continue;
+ }
+ redPointDict[keys[i]] = new Redpoint(config.ParentRedpointID, config.RedpointID);
+ }
}
public override void Release()
{
- DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEvent;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= UpdateRedpoint;
+ DungeonManager.Instance.UpdateFBInfoListEvent -= OnUpdateFBInfoChangeEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+ }
+
+ private void OnFuncStateChangeEvent(int funcId)
+ {
+ switch (funcId)
+ {
+ case (int)FuncOpenEnum.BoneBattle:
+ UpdateBoneAdRedPoint();
+ break;
+ }
}
public void OnBeforePlayerDataInitializeEvent()
{
+ waitAdID = 0;
adsInfoDict.Clear();
}
- public void SendGetReward(int ADID)
+ private void OnUpdateFBInfoChangeEvent(int mapID)
+ {
+ switch (mapID)
+ {
+ case 30010:
+ UpdateBoneAdRedPoint();
+ break;
+ }
+ }
+
+ void SendGetReward(int ADID)
{
var pack = new CA504_tagCMPlayerGetReward();
pack.RewardType = 81; // 骞垮憡濂栧姳 81
@@ -28,7 +73,51 @@
GameNetSystem.Instance.SendInfo(pack);
}
+ //鍖哄垎涓嶅悓娓犻亾鏄惁鏈夊箍鍛奡DK
public void PlayAds(int ADID)
+ {
+ //鏈夊箍鍛婄殑SDK
+ if (VersionConfig.Get().appId == "ryzj" && !GeneralDefine.noAdsChannels.Contains(SDKUtils.channelSign))
+ {
+ //瑙嗛鍔犺浇澶辫触闇�瑕佺瓑10绉掑悗鍐嶈皟鐢�
+ //濂栧姳闇�瑕佽缃爣璇嗗搴斿彂鏀�
+ if (WaitForLoadNewAd())
+ {
+ SysNotifyMgr.Instance.ShowTip("AdLoadFail");
+ return;
+ }
+ waitAdID = ADID;
+ SDKUtils.Instance.PlayAds("b69a2b68bb3d22");
+ return;
+ }
+
+ //娌″箍鍛婄殑SDK 鐩存帴缁欏鍔�
+ GetAdsAward(ADID);
+ }
+
+ public void LoadAds()
+ {
+ if (VersionConfig.Get().appId == "ryzj")
+ {
+ if (WaitForLoadNewAd())
+ {
+ return;
+ }
+ SDKUtils.Instance.LoadAds("b69a2b68bb3d22");
+ }
+ }
+
+ //涓婁竴娆″姞杞藉け璐ワ紝妫�鏌ユ槸鍚﹂渶瑕佺瓑寰�
+ public bool WaitForLoadNewAd()
+ {
+ if (Time.time - lastLoadErrorTime < loadErrorCD)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public void GetAdsAward(int ADID)
{
switch (ADID)
{
@@ -39,15 +128,37 @@
BoneFieldManager.Instance.SendBBeginFBWipeOut(BoneFieldManager.Instance.DataMapID, (int)fbInfo1.PassLineID);
break;
case 2:
-
if (!DungeonManager.Instance.TryGetFBInfoByMapID(TianziBillboradManager.Instance.DataMapID, out var fbInfo2))
return;
SendGetReward(ADID);
- BoneFieldManager.Instance.SendBBeginFBWipeOut(TianziBillboradManager.Instance.DataMapID, (int)fbInfo2.PassLineID);
break;
+ case 3:
+ //瀵诲疂绫诲瀷
+ HappyXBModel.Instance.HeroCallAfterCheckWish(() =>
+ {
+ HeroUIManager.Instance.selectCallType = HappXBTitle.HeroCallAdvanced;
+ HeroUIManager.Instance.selectCallIndex = 0;
+ SendGetReward(ADID);
+ TimingGiftManager.Instance.TryAddWhenAllAdsUsed(2, ADID);
+ });
+ break;
+ case 4:
+ TimingGiftManager.Instance.TryAddWhenAllAdsUsed(1, ADID);
+ SendGetReward(ADID);
+ break;
+ case 5:
+ TimingGiftManager.Instance.TryAddWhenAllAdsUsed(7, ADID);
+ GubaoManager.Instance.selectCallIndex = 0;
+ SendGetReward(ADID);
+ break;
+ case 6:
+ SendGetReward(ADID);
+ break;
+
}
}
+ //宸茶幏鍙栧箍鍛婂鍔辨鏁�
public int GetADCntByADID(int ADID)
{
if (adsInfoDict.IsNullOrEmpty() || !adsInfoDict.ContainsKey(ADID))
@@ -63,14 +174,60 @@
{
adsInfoDict[item.ADID] = item.ADCnt;
- int mapID = 0;
- if (ADAwardConfig.HasKey(item.ADID))
+ if (!ADAwardConfig.HasKey(item.ADID))
{
- ADAwardConfig aDAwardConfig = ADAwardConfig.Get(item.ADID);
- mapID = aDAwardConfig.ADMapID;
+ continue;
}
- OnAdsInfoListUpdateEvent?.Invoke(item.ADID, mapID);
+ ADAwardConfig aDAwardConfig = ADAwardConfig.Get(item.ADID);
+ var value = aDAwardConfig.ADAwardValue;
+ var type = aDAwardConfig.ADAwardType;
+ OnAdsInfoListUpdateEvent?.Invoke(item.ADID, type, value);
+
+ UpdateRedpoint();
+
}
}
+
+ void UpdateRedpoint()
+ {
+ foreach (var key in redPointDict.Keys)
+ {
+ redPointDict[key].state = RedPointState.None;
+
+ var config = ADAwardConfig.Get(key);
+ if (!FuncOpen.Instance.IsFuncOpen(config.FuncID))
+ {
+ continue;
+ }
+ if (GetADCntByADID(key) < config.ADCntMax)
+ {
+ switch (key)
+ {
+ //鐧介
+ case 1:
+ UpdateBoneAdRedPoint();
+ break;
+ default:
+ redPointDict[key].state = RedPointState.Simple;
+ break;
+ }
+ }
+ }
+ }
+
+
+ private void UpdateBoneAdRedPoint()
+ {
+ int key = 1;
+ if (!ADAwardConfig.HasKey(key))
+ return;
+ var config = ADAwardConfig.Get(key);
+ if (!FuncOpen.Instance.IsFuncOpen(config.FuncID))
+ return;
+ if (redPointDict.IsNullOrEmpty() || !redPointDict.ContainsKey(key))
+ return;
+ bool isNoChallenge = BoneFieldManager.Instance.IsNoChallenge();
+ redPointDict[key].state = isNoChallenge ? RedPointState.None : RedPointState.Simple;
+ }
}
--
Gitblit v1.8.0