From e95a97e663ba46ed474c89425dd92516a0d9b7dd Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 20 十月 2025 15:06:43 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts

---
 Main/System/Battle/BattleField/BoneBattleField.cs                                         |    4 
 Main/System/Battle/UIComp/BossHeadCell.cs                                                 |   20 ++++
 Main/Component/UI/Common/BossLifeBar.cs                                                   |  153 ++++++++++++++++++++++++++++++
 Main/System/Battle/UIComp/BossHeadCell.cs.meta                                            |   11 ++
 Main/System/Battle/BattleManager.cs                                                       |   15 ++
 Main/System/Battle/UIComp/TotalDamageDisplayer.cs                                         |   32 ++++++
 Main/System/Battle/UIComp/TotalDamageDisplayer.cs.meta                                    |   11 ++
 Main/System/Battle/BattleField/StoryBossBattleField.cs                                    |    4 
 Main/System/Battle/BattleField/ArenaBattleField.cs                                        |    4 
 Main/Component/UI/Common/BossLifeBar.cs.meta                                              |   11 ++
 Main/System/Battle/BattleField/StoryBattleField.cs                                        |    4 
 Main/System/Battle/BattleField/BattleField.cs                                             |    5 
 Main/System/Battle/StoryBossBattleWin.cs                                                  |   13 ++
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs |    2 
 14 files changed, 275 insertions(+), 14 deletions(-)

diff --git a/Main/Component/UI/Common/BossLifeBar.cs b/Main/Component/UI/Common/BossLifeBar.cs
new file mode 100644
index 0000000..7634fcd
--- /dev/null
+++ b/Main/Component/UI/Common/BossLifeBar.cs
@@ -0,0 +1,153 @@
+//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, September 11, 2017
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+
+using System.Text;
+
+public class BossLifeBar : MonoBehaviour
+{
+    [SerializeField] Sprite[] m_LifeBarSprites;
+
+    [SerializeField] Image m_BackGround;
+    [SerializeField] Image m_MiddleGround;
+    [SerializeField] Image m_PrefaceGround;
+
+    [SerializeField] Slider m_SliderMiddleground;
+    [SerializeField] Slider m_SliderForeground;
+
+    [SerializeField] Text m_Surplus;
+
+    [SerializeField] Text m_SurplusPercent;
+    
+
+    [SerializeField] float m_SmoothTime = 0.3f;
+    public float smoothTime {
+        get { return m_SmoothTime; }
+    }
+
+    Pattern pattern = Pattern.Reduce;
+    float targetValue = 0f;
+    int totalSegments = 1;
+    int surplusSegments = -1;
+
+    float refValue = 0f;
+    float timer = 0f;
+    float behaviourStartValue = 0f;
+
+    float m_CurrentBehaviourValue = 0f;
+    float currentBehaviourValue {
+        get { return m_CurrentBehaviourValue; }
+        set {
+            m_CurrentBehaviourValue = value;
+            UpdateSurplusSegments(currentBehaviourValue);
+            var behaviourDecimalValue = m_CurrentBehaviourValue - (int)m_CurrentBehaviourValue;
+            var trueDecimalValue = targetValue - (int)targetValue;
+            switch (pattern)
+            {
+                case Pattern.Add:
+                    m_SliderForeground.value = behaviourDecimalValue;
+                    m_SliderMiddleground.value = behaviourDecimalValue > trueDecimalValue ? 1f : trueDecimalValue;
+                    break;
+                case Pattern.Reduce:
+                    m_SliderMiddleground.value = behaviourDecimalValue;
+                    m_SliderForeground.value = behaviourDecimalValue < trueDecimalValue ? 0 : trueDecimalValue;
+                    break;
+                case Pattern.None:
+                    m_SliderMiddleground.value = behaviourDecimalValue;
+                    m_SliderForeground.value = behaviourDecimalValue;
+                    break;
+            }
+        }
+    }
+
+    public void SetBaseInfo(int _npcId, ulong _hp, ulong _maxHp, int _level)
+    {
+        var npcConfig = NPCConfig.Get(_npcId);
+        HeroSkinConfig skinConfig = HeroSkinConfig.Get(npcConfig.SkinID);
+
+        surplusSegments = -1;
+        totalSegments = npcConfig.LifeBarCount;
+        targetValue = currentBehaviourValue = ((float)_hp / _maxHp) * totalSegments - 0.0001f;
+        var behaviourDecimalValue = currentBehaviourValue - (int)currentBehaviourValue;
+        m_SliderForeground.value = m_SliderMiddleground.value = behaviourDecimalValue;
+
+        refValue = 0f;
+    }
+
+    public void Show(ulong _hp, ulong _maxHp)
+    {
+        var percentage = Mathf.Clamp(_hp, 0, _maxHp) / (float)_maxHp;
+        var tempValue = totalSegments * percentage - 0.00001f;
+        pattern = tempValue > targetValue ? Pattern.Add : tempValue < targetValue ? Pattern.Reduce : Pattern.None;
+
+        behaviourStartValue = currentBehaviourValue;
+        targetValue = tempValue;
+
+        timer = 0f;
+        refValue = 0f;
+    }
+
+    private void LateUpdate()
+    {
+        if (Mathf.Abs(currentBehaviourValue - targetValue) > 0.00001f)
+        {
+            var newValue = Mathf.SmoothDamp(currentBehaviourValue, targetValue, ref refValue, smoothTime);
+            currentBehaviourValue = newValue;
+        }
+    }
+
+    static StringBuilder stringBuild = new StringBuilder();
+    private void UpdateSurplusSegments(float _targetValue)
+    {
+        var currentSurplus = Mathf.CeilToInt(_targetValue);
+        if (currentSurplus != surplusSegments)
+        {
+            surplusSegments = currentSurplus;
+            var colorSetLength = m_LifeBarSprites.Length;
+            var index = surplusSegments % colorSetLength;
+            var nextIndex = index == 0 ? colorSetLength - 1 : index - 1;
+
+            m_PrefaceGround.overrideSprite = m_LifeBarSprites[index];
+            m_MiddleGround.overrideSprite = m_LifeBarSprites[index];
+            m_BackGround.overrideSprite = m_LifeBarSprites[nextIndex];
+
+            m_BackGround.SetActive(surplusSegments > 1);
+
+            // var chars = surplusSegments.ToString();
+            // stringBuild.Remove(0, stringBuild.Length);
+            // for (var i = 0; i < chars.Length; i++)
+            // {
+            //     var numChar = GetNumKey(chars[i]);
+            //     if (numChar > 0)
+            //     {
+            //         stringBuild.Append((char)numChar);
+            //     }
+            // }
+
+            m_Surplus.text = surplusSegments.ToString();
+            m_SurplusPercent.text = Mathf.CeilToInt((_targetValue / totalSegments) * 100f).ToString() + "%";
+        }
+    }
+
+    // int GetNumKey(int _num)
+    // {
+    //     var config = DamageNumConfig.Get("BossLifeBarSurplusNum");
+    //     return config.nums[_num - 48];
+    // }
+
+
+    enum Pattern
+    {
+        None,
+        Add,
+        Reduce,
+    }
+
+}
+
+
+
diff --git a/Main/Component/UI/Common/BossLifeBar.cs.meta b/Main/Component/UI/Common/BossLifeBar.cs.meta
new file mode 100644
index 0000000..0b22c02
--- /dev/null
+++ b/Main/Component/UI/Common/BossLifeBar.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f07a44456b77973408de0848b6e737c7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs
index 66ac5ac..3db6693 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs
@@ -61,7 +61,7 @@
 		JsonData extendData = JsonMapper.ToObject(vNetData.Msg);
 
 		string guid = BattleManager.Instance.GetGUID(vNetPack.packUID);
-		BattleField battleField = BattleManager.Instance.CreateBattleField(guid, (int)vNetData.MapID, (int)vNetData.FuncLineID, extendData, redTeamList, blueTeamList);
+		BattleField battleField = BattleManager.Instance.CreateBattleField(guid, vNetData, extendData, redTeamList, blueTeamList);
 		BattleStartAction battleStartAction = new BattleStartAction(battleField);
 		battleField.recordPlayer.PlayRecord(battleStartAction);
 
diff --git a/Main/System/Battle/BattleField/ArenaBattleField.cs b/Main/System/Battle/BattleField/ArenaBattleField.cs
index f0da66f..65b39fb 100644
--- a/Main/System/Battle/BattleField/ArenaBattleField.cs
+++ b/Main/System/Battle/BattleField/ArenaBattleField.cs
@@ -21,9 +21,9 @@
     }
 
     public override void Init(int MapID, int FuncLineID, JsonData _extendData,
-        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
     {
-        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
+        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
 
         chapter = FuncLineID / 10000;
         wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 75c53b2..aea3df5 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -17,6 +17,8 @@
 
     public IOperationAgent operationAgent;
 
+    public byte turnMax;
+
     public int round = 0;
 
     public string guid = string.Empty;//绛変簬string.Empty鐨勬椂鍊欎唬琛ㄦ槸StoryBattleField 鏄富绾垮壇鏈�
@@ -99,13 +101,14 @@
     }
 
     public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData,
-        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
     {
         MapID = _MapID;
         redTeamList = _redTeamList;
         blueTeamList = _blueTeamList;
         FuncLineID = _FuncLineID;
         extendData = _extendData;
+        this.turnMax = turnMax;
 
         redTeamIndex = 0;
         blueTeamIndex = 0;
diff --git a/Main/System/Battle/BattleField/BoneBattleField.cs b/Main/System/Battle/BattleField/BoneBattleField.cs
index 447991f..1fa382e 100644
--- a/Main/System/Battle/BattleField/BoneBattleField.cs
+++ b/Main/System/Battle/BattleField/BoneBattleField.cs
@@ -22,9 +22,9 @@
     }
 
     public override void Init(int MapID, int FuncLineID, JsonData _extendData,
-        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
     {
-        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
+        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
 
         chapter = FuncLineID / 10000;
         wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
diff --git a/Main/System/Battle/BattleField/StoryBattleField.cs b/Main/System/Battle/BattleField/StoryBattleField.cs
index 48a7882..c43571d 100644
--- a/Main/System/Battle/BattleField/StoryBattleField.cs
+++ b/Main/System/Battle/BattleField/StoryBattleField.cs
@@ -36,9 +36,9 @@
     }
 
     public override void Init(int MapID, int FuncLineID, JsonData _extendData,
-        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
     {
-        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
+        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
 
         if (null == _blueTeamList || _blueTeamList.Count == 0)
         {
diff --git a/Main/System/Battle/BattleField/StoryBossBattleField.cs b/Main/System/Battle/BattleField/StoryBossBattleField.cs
index d85faf3..c85ff80 100644
--- a/Main/System/Battle/BattleField/StoryBossBattleField.cs
+++ b/Main/System/Battle/BattleField/StoryBossBattleField.cs
@@ -22,9 +22,9 @@
     }
 
     public override void Init(int MapID, int FuncLineID, JsonData _extendData,
-        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
     {
-        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
+        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
 
         chapter = FuncLineID / 10000;
         wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index fdcbb3f..58a9b27 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -84,7 +84,11 @@
 
             redTeamList.Add(storyTeam);
 
-            CreateBattleField(string.Empty, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
+            HB424_tagSCTurnFightInit vNetData = new HB424_tagSCTurnFightInit();
+            vNetData.MapID = (uint)MapID;
+            vNetData.FuncLineID = (uint)FuncLineID;
+
+            CreateBattleField(string.Empty, vNetData, extendData, redTeamList, blueTeamList);
         }
         else
         {
@@ -455,9 +459,12 @@
     }
     #endregion
 
-    public BattleField CreateBattleField(string guid, int MapID, int FuncLineID, JsonData extendData, List<TeamBase> redTeamList, List<TeamBase> blueTeamList)
+    public BattleField CreateBattleField(string guid, HB424_tagSCTurnFightInit vNetData, JsonData extendData, List<TeamBase> redTeamList, List<TeamBase> blueTeamList)
     {
         BattleField battleField = null;
+
+        int MapID = (int)vNetData.MapID;
+        int FuncLineID = (int)vNetData.FuncLineID;
 
         bool isCreate = true;
         if (battleFields.TryGetValue(guid, out battleField))
@@ -475,7 +482,7 @@
         }
 
         if (isCreate)
-        { 
+        {
             battleField = BattleFieldFactory.CreateBattleField(guid, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
 
             if (string.IsNullOrEmpty(guid))
@@ -488,7 +495,7 @@
 
 
 
-        battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList);
+        battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList, vNetData.TurnMax);
 
         return battleField;
     }
diff --git a/Main/System/Battle/StoryBossBattleWin.cs b/Main/System/Battle/StoryBossBattleWin.cs
index 1cb29f2..1c3db8a 100644
--- a/Main/System/Battle/StoryBossBattleWin.cs
+++ b/Main/System/Battle/StoryBossBattleWin.cs
@@ -27,6 +27,19 @@
 
     public RendererAdjuster buttonsAdjuster;
 
+    public BossLifeBar bossLifeBar;
+
+
+    public SkillWordCell[] skillWordCells;
+
+    public BossHeadCell bossHeadCell;
+
+    public Text txtBossName;
+
+    public Text txtBattleRound;
+
+    public TotalDamageDisplayer totalDamageDisplayer;
+
     // 鐢熷懡鍛ㄦ湡
     protected override void InitComponent()
     {
diff --git a/Main/System/Battle/UIComp/BossHeadCell.cs b/Main/System/Battle/UIComp/BossHeadCell.cs
new file mode 100644
index 0000000..fc9d14a
--- /dev/null
+++ b/Main/System/Battle/UIComp/BossHeadCell.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class BossHeadCell : MonoBehaviour
+{
+    public Image imgFrame;
+
+    public Image imgIcon;
+
+    public Image imgDecoration;
+
+    public Text txtLv;
+
+    public void SetTeamHero(TeamHero teamHero)
+    {
+        
+    }
+}
diff --git a/Main/System/Battle/UIComp/BossHeadCell.cs.meta b/Main/System/Battle/UIComp/BossHeadCell.cs.meta
new file mode 100644
index 0000000..84f931e
--- /dev/null
+++ b/Main/System/Battle/UIComp/BossHeadCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d9ef8620f499f5249843e4a454d4fbe3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Battle/UIComp/TotalDamageDisplayer.cs b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs
new file mode 100644
index 0000000..41df9e1
--- /dev/null
+++ b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs
@@ -0,0 +1,32 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class TotalDamageDisplayer : MonoBehaviour
+{
+    public Image damageBackground;
+
+    public Text textDamage;
+
+    public Text textTotalDesc; //鎬讳激瀹虫垨鑰呮�绘不鐤�
+
+    public void SetDamage(bool isEnd, BattleDmgInfo dmgInfo)
+    {
+        if (dmgInfo == null)
+        {
+            return;
+        }
+
+        if (dmgInfo.IsType(DamageType.Recovery))
+        {
+
+        }
+        else if (dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsType(DamageType.Realdamage))
+        {
+
+        }
+    }
+
+
+}
diff --git a/Main/System/Battle/UIComp/TotalDamageDisplayer.cs.meta b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs.meta
new file mode 100644
index 0000000..33f28ab
--- /dev/null
+++ b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5052e62895312ba43a5bd9b0e3c8edb1
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0