From bb145d27787e6d54cb4bf0995cf11a41d1c9e67d Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期五, 05 九月 2025 15:25:28 +0800 Subject: [PATCH] 125 【战斗】战斗系统 强制结束战斗(haverest) --- Main/System/Battle/Skill/SkillBase.cs | 87 +++++++++++++++++++++++++++---------------- 1 files changed, 54 insertions(+), 33 deletions(-) diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs index 247d755..46a4383 100644 --- a/Main/System/Battle/Skill/SkillBase.cs +++ b/Main/System/Battle/Skill/SkillBase.cs @@ -106,7 +106,7 @@ switch (skillConfig.castMode) { case SkillCastMode.Self: - CastImpl(); + CastImpl(OnAttackFinish); break; case SkillCastMode.Enemy: CastToEnemy(); @@ -175,12 +175,8 @@ () => { // 鍥炲埌鍘熸潵鐨勪綅缃� - MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => - { - TurnBack(null, 1f); - caster.motionBase.PlayAnimation(MotionName.idle, true); - OnAllAttackMoveFinished(); - }); + MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, + OnAttackFinish); } , -1f); }); @@ -200,17 +196,13 @@ return; } - var mainHurt = tagUseSkillAttack.HurtList[0]; + int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); - BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)mainHurt.ObjID); - if (mainTarget == null) - { - Debug.LogError("鐩爣涓虹┖ mainTarget == null ObjID : " + mainHurt.ObjID); - OnSkillFinished(); - return; - } + BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp(); - MoveToTarget(mainTarget.heroRectTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () => + RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum); + + MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () => { // 鍒颁綅缃浆韬�(涓嶄竴瀹氶潪瑕佽浆韬� 浣嗘槸娴佺▼瑕佸啓) TurnBack(() => @@ -222,12 +214,8 @@ () => { // 鍥炲埌鍘熸潵鐨勪綅缃� - MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => - { - TurnBack(null, 1f); - caster.motionBase.PlayAnimation(MotionName.idle, true); - OnAllAttackMoveFinished(); - }); + MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, + OnAttackFinish); } , -1f); }); @@ -256,17 +244,20 @@ () => { // 鍥炲埌鍘熸潵鐨勪綅缃� - MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => - { - TurnBack(null, 1f); - caster.motionBase.PlayAnimation(MotionName.idle, true); - OnAllAttackMoveFinished(); - }); + MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), + Vector2.zero, moveTime, OnAttackFinish); } , -1f); }); }, -1f); }); + } + + protected void OnAttackFinish() + { + TurnBack(null, 1f); + OnAllAttackMoveFinished(); + caster.motionBase.PlayAnimation(MotionName.idle, true); } @@ -294,7 +285,7 @@ skillConfig, tagUseSkillAttack ); - if (skillEffect != null) + // if (skillEffect != null) { skillEffect.Play(OnHitTargets); } @@ -315,7 +306,7 @@ /// <param name="times"></param> public virtual void OnMiddleFrameStart(int times) { - if (skillEffect != null) + // if (skillEffect != null) { skillEffect.OnMiddleFrameStart(times); } @@ -323,7 +314,7 @@ public virtual void OnMiddleFrameEnd(int times, int hitIndex) { - if (skillEffect != null) + // if (skillEffect != null) { skillEffect.OnMiddleFrameEnd(times, hitIndex); } @@ -334,7 +325,10 @@ /// </summary> public virtual void OnFinalFrameStart() { - + // if (skillEffect != null) + { + skillEffect.OnFinalFrameStart(); + } } /// <summary> @@ -342,7 +336,12 @@ /// </summary> public virtual void OnFinalFrameEnd() { + // if (skillEffect != null) + { + skillEffect.OnFinalFrameEnd(); + } + HandleDead(); } @@ -375,7 +374,7 @@ OnHitEachTarget(_hitIndex, target, hurt); } - HandleDead(); + } @@ -587,7 +586,29 @@ public virtual void ForceFinished() { + skillEffect?.ForceFinished(); isFinished = true; + + while (packList.Count > 0) + { + var pack = packList[0]; + packList.RemoveAt(0); + + if (pack is CustomHB426CombinePack) + { + var combinePack = pack as CustomHB426CombinePack; + if (combinePack.startTag.Tag.StartsWith("Skill_")) + { + BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag); + otherSkillAction = combinePack.CreateSkillAction(); + + // 寮哄埗缁撴潫鍏朵粬鎶�鑳� + otherSkillAction.ForceFinish(); + return; + } + } + PackageRegedit.Distribute(pack); + } } public void OnSkillFinished() -- Gitblit v1.8.0