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