From ca577b96e0022e0ddaa8e106e147e53d8166df1c Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期五, 07 十一月 2025 11:40:36 +0800
Subject: [PATCH] 164 天子的考验-客户端
---
Main/System/TianziBillborad/TianziBillboradManager.cs | 95 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 82 insertions(+), 13 deletions(-)
diff --git a/Main/System/TianziBillborad/TianziBillboradManager.cs b/Main/System/TianziBillborad/TianziBillboradManager.cs
index c77a3c9..8faa068 100644
--- a/Main/System/TianziBillborad/TianziBillboradManager.cs
+++ b/Main/System/TianziBillborad/TianziBillboradManager.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using LitJson;
+using UnityEngine;
public class TianziBillboradManager : GameSystemManager<TianziBillboradManager>
{
public readonly int rankType = 2; // 姒滃崟绫诲瀷
@@ -12,16 +13,13 @@
public ulong historyHurt; //鏈�冮獙鍘嗗彶鏈�澶т激瀹�
public ulong todayHurt; //鏈�冮獙浠婃棩鏈�澶т激瀹�
public bool isSkipSweepTip = false;
-
- public ulong loaclNowHunt = 0;
- public ulong loaclAllHunt = 0;
- public ulong loaclMaxHp = 0;
- public int loaclHpNum = 0;
public event Action UpdateTianziKYInfoExent;
public Dictionary<int, int[][]> rankAwards;// 姣忔棩鎺掕濂栧姳 {"鍚嶆":[[鐗╁搧ID, 涓暟,鏄惁鎷嶅搧], ...], ...} 閰嶇疆鐨勫悕娆ey锛岃嚜鍔ㄦ寜灏忎簬绛変簬瀵瑰簲鍚嶆缁欏鍔�
public Redpoint parentRedpoint = new Redpoint(MainRedDot.MainChallengeRedpoint, MainRedDot.TianziBillboradRepoint);
public override void Init()
{
+ EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
+ EventBroadcast.Instance.AddListener<string, JsonData>(EventName.BATTLE_END, OnSettlement);
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
@@ -35,20 +33,14 @@
public override void Release()
{
+ EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
+ EventBroadcast.Instance.RemoveListener<string, JsonData>(EventName.BATTLE_END, OnSettlement);
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
TimeMgr.Instance.OnDayEvent -= OnDayEvent;
UpdateTianziKYInfoExent -= OnUpdateTianziKYInfoExent;
- }
-
- public void ClearBar()
- {
- loaclNowHunt = 0;
- loaclAllHunt = 0;
- loaclMaxHp = 0;
- loaclHpNum = 0;
}
private void OnBeforePlayerDataInitializeEvent()
@@ -61,6 +53,83 @@
isSkipSweepTip = false;
}
+ public int battleLineID; //姝e湪鎴樻枟涓殑LineID
+ public ulong loaclNowHunt = 0;
+ public ulong loaclAllHunt = 0;
+ public ulong loaclMaxHp = 0;
+ public int loaclHpNum = 0;
+ public event Action<ulong, ulong, int> OnUpdateBarInfoEvent;
+
+ private void OnDamageTaken(BattleDmgInfo info)
+ {
+ BattleField battleField = BattleManager.Instance.GetBattleFieldByMapID(DataMapID);
+ if (info == null || battleField == null || battleField.guid != info.battleFieldGuid)
+ return;
+ BattleObject boss = battleField.FindBoss();
+ if (boss == null || boss.ObjID != info.hurtObj.ObjID)
+ return;
+ ShowBar(info);
+ }
+
+ public void ShowBar(BattleDmgInfo info)
+ {
+ if (info == null)
+ return;
+ //闂伩鍜屽洖琛�绫讳笉绠椾激瀹�
+ if (info.IsType(DamageType.Dodge) || info.IsType(DamageType.Recovery))
+ return;
+ var damages = info.damageList;
+ for (int i = 0; i < damages.Count; i++)
+ {
+ ulong hunt = (ulong)damages[i];
+ loaclAllHunt += hunt;
+ if (!TryGetBossConfig(DataMapID, battleLineID, out DungeonConfig dungeonConfig, out NPCLineupConfig npcLineupConfig, out NPCConfig npcConfig))
+ return;
+ int bossId = npcConfig.NPCID;
+ if (!TianziConfig.TryGetTianziConfigByBossIDAndDamage(bossId, loaclAllHunt, out TianziConfig tianziConfig))
+ return;
+ loaclMaxHp = (ulong)tianziConfig.MaxHP;
+ loaclHpNum = tianziConfig.HPNum;
+ loaclNowHunt = TianziConfig.GetCurrentHPDamage(bossId, loaclAllHunt);
+ OnUpdateBarInfoEvent?.Invoke(loaclNowHunt, loaclMaxHp, loaclHpNum);
+ Debug.Log($"TianziDamageBar hunt {hunt} loaclAllHunt {loaclNowHunt} loaclMaxHp {loaclMaxHp} loaclHpNum {loaclHpNum} 鏃堕棿: {DateTime.Now:HH:mm:ss}");
+ }
+ }
+
+ public void ClearBar()
+ {
+ battleLineID = 0;
+ loaclNowHunt = 0;
+ loaclAllHunt = 0;
+ loaclMaxHp = 0;
+ loaclHpNum = 0;
+ }
+ private void OnSettlement(string _guid, JsonData data)
+ {
+ if (string.Empty == _guid)
+ return;
+ var battle = BattleManager.Instance.GetBattleField(_guid);
+ if (battle == null)
+ return;
+ var battleName = battle.ToString();
+ if (battleName != "TianziBillboradBattleField")
+ return;
+ if (data == null || !data.ContainsKey("totalHurt"))
+ return;
+ ulong totalHurt = ulong.Parse(data["totalHurt"].ToString());
+ if (!TryGetBossConfig(DataMapID, battleLineID, out DungeonConfig dungeonConfig, out NPCLineupConfig npcLineupConfig, out NPCConfig npcConfig))
+ return;
+ int bossId = npcConfig.NPCID;
+ if (!TianziConfig.TryGetTianziConfigByBossIDAndDamage(bossId, totalHurt, out TianziConfig tianziConfig))
+ return;
+ ulong endNowHunt = TianziConfig.GetCurrentHPDamage(bossId, totalHurt);
+ ulong endMaxHp = (ulong)tianziConfig.MaxHP;
+ int endHpNum = tianziConfig.HPNum;
+ OnUpdateBarInfoEvent?.Invoke(endNowHunt, endMaxHp, endHpNum);
+ Debug.Log($"TianziDamageBar end nowHpNum {endHpNum} nowHunt {endNowHunt} nowHpMax{endMaxHp} 鏃堕棿: {DateTime.Now:HH:mm:ss}");
+ }
+
+
private void OnUpdateTianziKYInfoExent()
{
UpdateRedPoint();
--
Gitblit v1.8.0