From b9ae79116a9e419b28c38f1c84016ec7938afefa Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 30 九月 2025 18:13:23 +0800
Subject: [PATCH] 125 战斗 1.快速结束战斗失效的问题 2.角色UI高过外部UI的问题 3.战斗伤害消失的问题
---
Main/System/Battle/BattleField/BattleField.cs | 20 +++---
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 41 ++++++++++---
Main/System/Battle/BattleManager.cs | 2
Main/System/Battle/BattleUtility.cs | 44 ++++++++++++++
Main/System/Battle/Skill/SkillBase.cs | 1
Main/Manager/UIManager.cs | 2
Main/System/Battle/BattleHUDWin.cs | 10 +--
Main/System/Battle/UIComp/DamageLine.cs | 2
Main/System/Battle/Motion/MotionBase.cs | 7 ++
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs | 22 +++++++
Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs | 2
Main/System/Battle/Define/BattleDmgInfo.cs | 6 ++
12 files changed, 126 insertions(+), 33 deletions(-)
diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
index 7d4214d..d02c2b9 100644
--- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
@@ -63,7 +63,7 @@
temp += " pack type is " + pack.GetType().Name + "\n";
}
}
- BattleDebug.LogError(temp);
+ // BattleDebug.LogError(temp);
}
public void AddPack(GameNetPackBasic pack)
diff --git a/Main/Manager/UIManager.cs b/Main/Manager/UIManager.cs
index e7cdb06..5be6bdd 100644
--- a/Main/Manager/UIManager.cs
+++ b/Main/Manager/UIManager.cs
@@ -586,7 +586,7 @@
// 璁剧疆UI鐨勬帓搴忛『搴�
ui.SetSortingOrder(sortingOrder);
// 鏇存柊褰撳墠鏈�楂樻帓搴忛『搴�
- currentHighestSortingOrder += ui.uiLayer == UILayer.Static ? 55/*杩欓噷鏄鑹�+鐗规晥涔嬩笂鐨勫眰绾�*/ : 10;
+ currentHighestSortingOrder += ui.uiLayer == UILayer.Static ? 155/*杩欓噷鏄鑹�+鐗规晥涔嬩笂鐨勫眰绾�*/ : 10;
// Debug.Log(ui.uiName + " order is " + sortingOrder + " " + currentHighestSortingOrder);
}
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 5a2ae2d..1111307 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -478,16 +478,16 @@
int winFaction = (int)turnFightStateData["winFaction"];
//鑾疯儨闃佃惀: 涓�鑸负1鎴栬��2锛屽綋鐜╁鍙戣捣鐨勬垬鏂楁椂锛屽鏋滆幏鑳滈樀钀ヤ笉绛変簬1浠h〃鐜╁澶辫触浜�
- if (winFaction == 1)
- {
- Debug.LogError(guid + " : 鎴樻枟鑳滃埄");
- // 鎴樻枟鑳滃埄
- }
- else
- {
- // 鎴樻枟澶辫触
- Debug.LogError(guid + " : 鎴樻枟澶辫触");
- }
+ // if (winFaction == 1)
+ // {
+ // Debug.LogError(guid + " : 鎴樻枟鑳滃埄");
+ // // 鎴樻枟鑳滃埄
+ // }
+ // else
+ // {
+ // // 鎴樻枟澶辫触
+ // Debug.LogError(guid + " : 鎴樻枟澶辫触");
+ // }
IsBattleFinish = true;
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index fc04597..9cd762e 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -15,6 +15,11 @@
public override void Run()
{
+ if (isFinish)
+ {
+ return;
+ }
+
base.Run();
if (!isRunOnce)
@@ -63,6 +68,23 @@
}
}
+ public override void ForceFinish()
+ {
+ isFinish = true;
+
+ // 鐩存帴缁撴潫
+ foreach (var deadPack in deadPackList)
+ {
+ BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.ObjID);
+ if (null != deadObj)
+ {
+ OnDeathAnimationEnd(deadObj);
+ }
+ }
+
+ base.ForceFinish();
+ }
+
private void OnDeathAnimationEnd(BattleObject deadObj)
{
// 鍙湁涓荤嚎鎺夎惤鐗╁搧
diff --git a/Main/System/Battle/BattleHUDWin.cs b/Main/System/Battle/BattleHUDWin.cs
index 6517345..ef233a2 100644
--- a/Main/System/Battle/BattleHUDWin.cs
+++ b/Main/System/Battle/BattleHUDWin.cs
@@ -54,9 +54,9 @@
ClearContent(guid);
}
- private void ClearContent(string guid)
+ private void ClearContent(string guid, bool force = false)
{
- if (battleField.guid == guid)
+ if ((battleField != null && battleField.guid == guid) || force)
{
for (int i = damageContentList.Count - 1; i >= 0; i--)
{
@@ -105,9 +105,6 @@
private void OnDamageTaken(BattleDmgInfo damageInfo)
{
- if (battleField.IsBattleEnd())
- return;
-
GameObject damageContent = damagePrefabPool.Request();
DamageContent content = damageContent.GetComponent<DamageContent>();
damageContent.transform.SetParent(damageNode, false);
@@ -141,9 +138,8 @@
if (battleField != null)
{
battleField.OnBattlePause -= OnBattlePause;
- ClearContent(battleField.guid);
}
-
+ ClearContent(string.Empty, true);
battleField = _battleField;
battleField.OnBattlePause += OnBattlePause;
}
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 9e688d8..2d8d217 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -261,7 +261,7 @@
{
str += " " + list[i].GetType().Name + "\n";
}
- BattleDebug.LogError(str);
+ // BattleDebug.LogError(str);
return list;
}
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 03d2cda..3a5e7ee 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -102,12 +102,54 @@
var numChar = (char)GetDamageNumKey(config, basePowerStr[i]);
if (numChar > 0)
{
- result += numChar;
+ result += numChar;
}
}
return result;
}
+ public static string DisplayDamageNum(BattleDmg damage)
+ {
+ var config = DamageNumConfig.Get(damage.attackType);
+
+ string result = string.Empty;
+
+ // 濡傛灉鏄棯閬� 鍒欏彧鏄剧ず闂伩涓や釜瀛�
+ if (damage.IsType(DamageType.Dodge))
+ {
+ result += (char)config.prefix;
+ }
+ else
+ {
+ result = ConvertToArtFont(config, damage.damage);
+ }
+
+ return result;
+ }
+
+ static string ConvertToArtFont(DamageNumConfig config, float _num)
+ {
+ var stringBuild = new System.Text.StringBuilder();
+
+ if (0 != config.plus)
+ stringBuild.Append((char)config.plus);
+ if (0 != config.prefix)
+ stringBuild.Append((char)config.prefix);
+
+ var chars = UIHelper.ReplaceLargeArtNum(_num);
+ for (var i = 0; i < chars.Length; i++)
+ {
+ int numChar = GetDamageNumKey(config, (int)chars[i]);
+
+ if (numChar > 0)
+ {
+ stringBuild.Append((char)numChar);
+ }
+ }
+
+ return stringBuild.ToString();
+ }
+
public static int GetMainTargetPositionNum(BattleObject caster, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> targetList, SkillConfig skillConfig)
{
int returnIndex = 0;
diff --git a/Main/System/Battle/Define/BattleDmgInfo.cs b/Main/System/Battle/Define/BattleDmgInfo.cs
index a299f39..c68f1c1 100644
--- a/Main/System/Battle/Define/BattleDmgInfo.cs
+++ b/Main/System/Battle/Define/BattleDmgInfo.cs
@@ -4,8 +4,14 @@
{
public long damage;
public int attackType;
+
+ public bool IsType(DamageType damageType)
+ {
+ return (attackType & (int)damageType) == (int)damageType;
+ }
}
+
public class BattleDmgInfo
{
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 8bcad86..efaefc5 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -224,6 +224,13 @@
updateLocalHandler = () =>
{
+ if (skillBase.IsFinished())
+ {
+ isPlaySkillAnimation = false;
+ RemoveRunAction(updateLocalHandler);
+ return;
+ }
+
float frame = (skillTrackEntry.TrackTime * skillTrackEntry.TimeScale * (float)BattleConst.skillMotionFps);
if (currentTrackEntry != skillTrackEntry)
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 8d1ca4b..2d26c5f 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -17,6 +17,8 @@
private float speedRatio = 1.5f;
+ private bool isForceFinish = false;
+
public void Init(BattleField _battleField)
{
Release();
@@ -33,6 +35,11 @@
public void PlayRecord(RecordAction recordAction)
{
BattleDebug.LogError("Enqueue record action " + recordAction.GetType());
+ if (isForceFinish)
+ {
+ recordAction.ForceFinish();
+ return;
+ }
recordActionQueue.Enqueue(recordAction);
}
@@ -46,6 +53,12 @@
public void InsertRecord(RecordAction recordAction)
{
+ if (isForceFinish)
+ {
+ recordAction.ForceFinish();
+ return;
+ }
+
BattleDebug.LogError("Insert record action " + recordAction.GetType());
if (currentRecordAction != null)
{
@@ -65,6 +78,11 @@
public void ImmediatelyPlay(RecordAction recordAction)
{
+ if (isForceFinish)
+ {
+ recordAction.ForceFinish();
+ return;
+ }
immediatelyActionList.Add(recordAction);
}
@@ -159,28 +177,28 @@
}
+
public void HaveRest()
{
- while (IsPlaying())
- {
- ForceFinish();
- }
+ ForceFinish();
}
public void ForceFinish()
{
- for (int i = 0; i < immediatelyActionList.Count; i++)
+ isForceFinish = true;
+ for (int i = immediatelyActionList.Count - 1; i >= 0; i--)
{
- immediatelyActionList[i].ForceFinish();
+ var action = immediatelyActionList[i];
+ action.ForceFinish();
+ immediatelyActionList.Remove(action);
}
- immediatelyActionList.Clear();
-
- if (currentRecordAction != null)
+ while (currentRecordAction != null)
{
- currentRecordAction.ForceFinish();
+ var temp = currentRecordAction;
+ currentRecordAction = null;
+ temp.ForceFinish();
}
- currentRecordAction = null;
while (recordActionQueue.Count > 0)
{
@@ -197,6 +215,7 @@
currentRecordAction = null;
recordActionQueue.Clear();
immediatelyActionList.Clear();
+ isForceFinish = false;
}
public void SetSpeedRatio(float ratio)
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 1d1ae26..829b7e8 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -686,6 +686,7 @@
otherSkillAction.ForceFinish();
otherSkillAction = null;
}
+ HandleDead();
isFinished = true;
moveFinished = true;
isPlay = true;
diff --git a/Main/System/Battle/UIComp/DamageLine.cs b/Main/System/Battle/UIComp/DamageLine.cs
index 5d231df..3f37cd5 100644
--- a/Main/System/Battle/UIComp/DamageLine.cs
+++ b/Main/System/Battle/UIComp/DamageLine.cs
@@ -24,6 +24,6 @@
public void SetDamage(BattleDmg damage)
{
damageTypeLabel.SetActive(false);
- damageValueLabel.text = BattleUtility.DisplayDamageNum(damage.damage, damage.attackType);
+ damageValueLabel.text = BattleUtility.DisplayDamageNum(damage);
}
}
--
Gitblit v1.8.0