From af6e207c6d185ed66125e85e18c02c63bea597f9 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 22 十月 2025 14:25:56 +0800
Subject: [PATCH] 0312 mainwin的内部显示
---
Main/System/Battle/BattleObject/BattleObject.cs | 125 ++++++++++++++++++++++++++---------------
1 files changed, 78 insertions(+), 47 deletions(-)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index d086b64..3c0bb25 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -32,13 +32,13 @@
public BattleObjectBuffMgr buffMgr;
+ public BattleObjectLayerMgr layerMgr;
+
public int ObjID { get; set; }
public BattleCamp Camp { get; protected set; }
public TeamHero teamHero { get; protected set; }
-
- // public BuffMgr buffMgr;
public MotionBase motionBase;
@@ -65,8 +65,6 @@
}
}
- public int sortingOrder = 0;
-
protected Action onDeathAnimationComplete;
protected Renderer[] renderers;
@@ -85,9 +83,12 @@
teamHero = _teamHero;
Camp = _camp;
motionBase = new MotionBase();
- motionBase.Init(heroGo.GetComponentInChildren<SkeletonGraphic>(true));
+ motionBase.Init(heroGo.GetComponentInChildren<SkeletonAnimation>(true));
buffMgr = new BattleObjectBuffMgr();
buffMgr.Init(this);
+
+ layerMgr = new BattleObjectLayerMgr();
+ layerMgr.Init(this);
renderers = heroGo.GetComponentsInChildren<Renderer>(true);
@@ -100,7 +101,7 @@
heroInfoBar.transform.localScale = heroInfoBarScale;
heroInfoBar.SetActive(true);
- SetToFront();
+ SetFront();
}
@@ -108,6 +109,7 @@
{
motionBase.Run();
heroInfoBar.Run();
+ buffMgr.Run();
}
public virtual void Pause()
@@ -125,6 +127,8 @@
motionBase.Release();
motionBase = null;
+ buffMgr.Release();
+ buffMgr = null;
teamHero = null;
ObjID = 0;
@@ -266,33 +270,77 @@
return true;
}
- public virtual void Hurt(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig)
+ public virtual void Hurt(List<long> damageValues, long _totalDamage,
+ HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, int hitIndex,
+ BattleDrops battleDrops, HB422_tagMCTurnFightObjDead deadPack)
{
- BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig);
+ bool isLastHit = hitIndex >= skillConfig.DamageDivide.Length - 1;
+ bool firstHit = hitIndex == 0;
+ BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig, isLastHit);
- if (dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage())
+
+ // 杩欓噷
+ if (dmgInfo.IsType(DamageType.Dodge))
{
- motionBase.PlayAnimation(MotionName.hit, false);
+ if (isLastHit)
+ {
+ DodgeFinishAction dodgeFinish = new DodgeFinishAction(battleField, this);
+ battleField.recordPlayer.InsertRecord(dodgeFinish);
+ }
+
+ if (firstHit)
+ {
+ OnDodgeBegin();
+ }
}
+
+ bool isFatalAttack = (null != deadPack) && isLastHit;
+
+ if (isFatalAttack)
+ {
+ if (null != battleDrops)
+ {
+ PushDropItems(battleDrops);
+ }
+ battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>() { deadPack });
+
+ }
+ else
+ {
+ if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()))
+ {
+ motionBase.PlayAnimation(MotionName.hit, false);
+ }
+ }
+
+
}
public void SuckHp(uint suckHP, SkillConfig skillConfig)
{
-
+ teamHero.curHp = Math.Min(teamHero.maxHp, teamHero.curHp + (int)suckHP);
}
public void HurtByReflect(uint bounceHP, SkillConfig skillConfig)
{
-
+ teamHero.curHp = Math.Max(0, teamHero.curHp - (int)bounceHP);
}
+
+ const float pingpongTime = 0.4f;
// 闂伩寮�濮�
public virtual void OnDodgeBegin()
{
- float pingpongTime = 0.2f;
RectTransform rectTrans = heroRectTrans;
var tween = rectTrans.DOAnchorPos(new Vector3(-30, 0, 0), pingpongTime)
.SetEase(Ease.OutCubic);
+
+ motionBase.ShowIllusionShadow(true);
+
+ tween.onComplete += () =>
+ {
+ motionBase.ShowIllusionShadow(false);
+ };
battleField.battleTweenMgr.OnPlayTween(tween);
}
@@ -300,7 +348,6 @@
// 闂伩缁撴潫
public virtual void OnDodgeEnd(Action _complete = null)
{
- float pingpongTime = 0.2f;
RectTransform rectTrans = heroRectTrans;
var tween = rectTrans.DOAnchorPos(Vector3.zero, pingpongTime)
@@ -328,6 +375,8 @@
{
// 鎴栬鐪嬬湅婧惰В鐗规晥锛� YYL TODO
heroGo.SetActive(false);
+
+ buffMgr.RemoveAllBuff();
}
public void OnReborn(HB423_tagMCTurnFightObjReborn vNetData)
@@ -339,16 +388,9 @@
}
// 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
- protected virtual BattleDmgInfo PopDamage(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig)
+ protected virtual BattleDmgInfo PopDamage(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool isLastHit)
{
- BattleDmgInfo battleDmgInfo = new BattleDmgInfo(battleField.guid, damageValues, this, hurt, skillConfig);
-
- if (battleDmgInfo.IsType(DamageType.Dodge))
- {
- OnDodgeBegin();
- DodgeFinishAction dodgeFinish = new DodgeFinishAction(battleField, this);
- battleField.recordPlayer.InsertRecord(dodgeFinish);
- }
+ BattleDmgInfo battleDmgInfo = new BattleDmgInfo(battleField.guid, damageValues, this, hurt, skillConfig, isLastHit);
int currentHurtHp = 0;
for (int i = 0; i < damageValues.Count; i++)
@@ -356,8 +398,12 @@
currentHurtHp += (int)damageValues[i];
}
- heroInfoBar.UpdateHP(teamHero.curHp, Math.Max(0, teamHero.curHp - currentHurtHp), teamHero.maxHp);
- teamHero.curHp = Math.Max(0, teamHero.curHp - currentHurtHp);
+ bool isRecovery = battleDmgInfo.IsType(DamageType.Recovery);
+
+ long toHp = Math.Max(0, teamHero.curHp + (isRecovery ? currentHurtHp : -currentHurtHp));
+
+ heroInfoBar.UpdateHP(teamHero.curHp, toHp, teamHero.maxHp);
+ teamHero.curHp = toHp;
// YYL TODO 鏄惁闇�瑕佹寕鍦ㄥ湪鑷韩鐨刦ollow鐐逛笂
EventBroadcast.Instance.Broadcast(EventName.BATTLE_DAMAGE_TAKEN, battleDmgInfo);
@@ -389,7 +435,7 @@
heroRectTrans.anchoredPosition = Vector2.zero;
heroInfoBar.SetActive(false);
- SetToFront();
+ SetFront();
}
public void PushDropItems(BattleDrops _battleDrops)
@@ -411,34 +457,19 @@
battleDrops = null;
}
- public void SetToBack()
+ public void SetBack()
{
- sortingOrder = BattleConst.UnactiveHeroSortingOrder;
- UpdateSortingOrder();
+ layerMgr.SetBack();
}
- public void SetToFront()
+ public void SetFront()
{
- sortingOrder = BattleConst.ActiveHeroSortingOrder;
- UpdateSortingOrder();
+ layerMgr.SetFront();
}
- private void UpdateSortingOrder()
+ public void SetSpeedRatio(float ratio)
{
- if (null == renderers) return;
-
- foreach (var renderer in renderers)
- {
- if (renderer != null)
- {
- renderer.sortingOrder = sortingOrder;
- }
- }
- }
-
- public int GetSortingOrder()
- {
- return sortingOrder;
+ motionBase.SetSpeedRatio(ratio);
}
--
Gitblit v1.8.0