lcy
2 天以前 ca577b96e0022e0ddaa8e106e147e53d8166df1c
Main/System/TianziBillborad/TianziDamageBar.cs
@@ -58,6 +58,15 @@
    public void Init()
    {
        if (TianziBillboradManager.Instance.loaclMaxHp > 0)
        {
            nowHunt = TianziBillboradManager.Instance.loaclNowHunt;
            nowHpMax = TianziBillboradManager.Instance.loaclMaxHp;
            nowHpNum = TianziBillboradManager.Instance.loaclHpNum;
            Show(nowHunt, nowHpMax, nowHpNum);
        }
        else
        {
        int dataMapID = TianziBillboradManager.Instance.DataMapID;
        int lineID = TianziBillboradManager.Instance.todayLineID;
        if (!TianziBillboradManager.Instance.TryGetBossConfig(dataMapID, lineID, out DungeonConfig dungeonConfig, out NPCLineupConfig npcLineupConfig, out NPCConfig npcConfig))
@@ -66,162 +75,20 @@
        nowHpNum = 1; // 默认从第1条血开始
        if (!TianziConfig.TryGetTianziConfigByBossIDAndHPNum(bossId, nowHpNum, out TianziConfig tianziConfig))
            return;
        if (TianziBillboradManager.Instance.loaclHpNum > 0)
        {
            nowHunt = TianziBillboradManager.Instance.loaclNowHunt;
            nowHpMax = TianziBillboradManager.Instance.loaclMaxHp;
            nowHpNum = TianziBillboradManager.Instance.loaclHpNum;
            m_BoxCount.text = Language.Get("TianziBillborad07", Mathf.Max(nowHpNum - 1, 0));
        }
        else
        {
            m_IntensifySlider.stage = 0;
            m_IntensifySlider.ResetStage();
            nowHunt = 0; // 初始血量为0
            nowHpMax = (ulong)tianziConfig.MaxHP;
            m_BoxCount.text = Language.Get("TianziBillborad07", 0);
            Show(nowHunt, nowHpMax, nowHpNum);
        }
        }
        // 除零保护
        float percentage = 0f;
        if (nowHpMax > 0)
    public void Show(ulong hunt, ulong maxHp, int hpNum)
        {
            percentage = Mathf.Clamp(nowHunt, 0, nowHpMax) / (float)nowHpMax;
        }
        m_IntensifySlider.value = percentage;
        m_IntensifySlider.stage = nowHpNum; // 设置当前阶段
        m_HurtInfo.text = Language.Get("BoneField09", nowHunt, UIHelper.ReplaceLargeNum(nowHpMax));
    }
    // public event Action IsLastHitUnLockEvent;
    // public void Show(ulong hp, ulong maxHp, BattleDmgInfo info)  // 显示伤害条
    // {
    //     if (!TianziConfig.TryGetTianziConfigByBossIDAndMaxHP(bossId, (long)maxHp, out TianziConfig tianziConfig))
    //         return;
    //     if (info.isLastHit && isLock)
    //     {
    //         isLock = false;
    //         IsLastHitUnLockEvent?.Invoke();
    //     }
    //     int hpNum = tianziConfig.HPNum;
    //     ulong hunt = maxHp - hp;
    //     if (maxHp < nowHpMax)
    //     {
    //         Debug.LogWarning($"TianziDamageBar SkillID  {info.skillConfig.SkillID} hp {hp} maxHp {maxHp} hunt {hunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax {nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
    //         return;
    //     }
    //     if (!isLock)
    //     {
    //         // 根据maxHp获得当前是第几条血
    //         nowHpNum = hpNum;
    //         nowHunt = hunt;
    //         nowHpMax = maxHp;
    //         // 除零保护
    //         float percentage = 0f;
    //         if (nowHpMax > 0)
    //         {
    //             percentage = Mathf.Clamp(nowHunt, 0, nowHpMax) / (float)nowHpMax;
    //         }
    //         m_IntensifySlider.value = percentage;
    //         m_IntensifySlider.stage = nowHpNum; // 设置当前阶段
    //         Debug.Log($"TianziDamageBar SkillID  {info.skillConfig.SkillID} hp {hp} maxHp {maxHp} hunt {hunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax {nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
    //     }
    // }
    // bool isLock = false;
    // public void ShowByB419(ulong hp, ulong maxHp)
    // {
    //     if (!TianziConfig.TryGetTianziConfigByBossIDAndMaxHP(bossId, (long)maxHp, out TianziConfig tianziConfig))
    //         return;
    //     isLock = true;
    //     int hpNum = tianziConfig.HPNum;
    //     ulong hunt = maxHp - hp;
    //     if (maxHp < nowHpMax)
    //     {
    //         Debug.LogWarning($"TianziDamageBar  B419 hp {hp} maxHp {maxHp} hunt {hunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax {nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
    //         return;
    //     }
    //     nowHpNum = hpNum;
    //     nowHunt = hunt;
    //     nowHpMax = maxHp;
    //     // 除零保护
    //     float percentage = 0f;
    //     if (nowHpMax > 0)
    //     {
    //         percentage = Mathf.Clamp(nowHunt, 0, nowHpMax) / (float)nowHpMax;
    //     }
    //     m_IntensifySlider.value = percentage;
    //     m_IntensifySlider.stage = nowHpNum; // 设置当前阶段
    //     Debug.Log($"TianziDamageBar B419 hp {hp} maxHp {maxHp} hunt {hunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax{nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
    // }
    public void Show(ulong totalHP)  // 显示伤害条
    {
        if (!TianziConfig.TryGetTianziConfigByBossIDAndDamage(bossId, totalHP, out TianziConfig tianziConfig))
            return;
        ulong endMaxHp = (ulong)tianziConfig.MaxHP;
        int endHpNum = tianziConfig.HPNum;
        ulong endNowHunt = TianziConfig.GetCurrentHPDamage(bossId, totalHP);
        nowHpNum = endHpNum;
        nowHunt = endNowHunt;
        nowHpMax = endMaxHp;
        // 除零保护
        float percentage = 0f;
        if (nowHpMax > 0)
        {
            percentage = Mathf.Clamp(nowHunt, 0, nowHpMax) / (float)nowHpMax;
        }
        m_IntensifySlider.value = percentage;
        m_IntensifySlider.stage = nowHpNum; // 设置当前阶段
        //Debug.Log($"TianziDamageBar end nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax{nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
    }
    public void Show(BattleDmgInfo _damageInfo)
    {
        if (_damageInfo == null)
            return;
        //闪避和回血类不算伤害
        if (_damageInfo.IsType(DamageType.Dodge) || _damageInfo.IsType(DamageType.Recovery))
            return;
        var damages = _damageInfo.damageList;
        for (int i = 0; i < damages.Count; i++)
        {
            ulong hunt = (ulong)damages[i];
            TianziBillboradManager.Instance.loaclAllHunt += hunt;
            if (!TianziConfig.TryGetTianziConfigByBossIDAndDamage(bossId, TianziBillboradManager.Instance.loaclAllHunt, out TianziConfig tianziConfig))
                return;
            TianziBillboradManager.Instance.loaclMaxHp = (ulong)tianziConfig.MaxHP;
            TianziBillboradManager.Instance.loaclHpNum = tianziConfig.HPNum;
            TianziBillboradManager.Instance.loaclNowHunt = TianziConfig.GetCurrentHPDamage(bossId, TianziBillboradManager.Instance.loaclAllHunt);
            // if (loaclMaxHp < nowHpMax || loaclHpNum < nowHpNum)
            // {
            //     Debug.LogWarning($"TianziDamageBar hunt {hunt} loaclAllHunt {loaclAllHunt} loaclHpNum {loaclHpNum} loaclNowHunt {loaclNowHunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax{nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
            //     return;
            // }
            // if (loaclNowHunt < nowHunt)
            // {
            //     Debug.LogWarning($"TianziDamageBar hunt {hunt} loaclAllHunt {loaclAllHunt} loaclHpNum {loaclHpNum} loaclNowHunt {loaclNowHunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax{nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
            //     return;
            // }
            nowHunt = TianziBillboradManager.Instance.loaclNowHunt;
            nowHpMax = TianziBillboradManager.Instance.loaclMaxHp;
            nowHpNum = TianziBillboradManager.Instance.loaclHpNum;
        nowHunt = hunt;
        nowHpMax = maxHp;
        nowHpNum = hpNum;
            // 除零保护
            float percentage = 0f;
            if (nowHpMax > 0)
@@ -230,7 +97,6 @@
            }
            m_IntensifySlider.value = percentage;
            m_IntensifySlider.stage = nowHpNum;
            //Debug.Log($"TianziDamageBar hunt {hunt} loaclAllHunt {loaclAllHunt} loaclHpNum {loaclHpNum} loaclNowHunt {loaclNowHunt} nowHpNum {nowHpNum} nowHunt {nowHunt} nowHpMax{nowHpMax} 时间: {DateTime.Now:HH:mm:ss}");
        }
        m_HurtInfo.text = Language.Get("BoneField09", nowHunt, UIHelper.ReplaceLargeNum(nowHpMax));
    }
}