Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
@@ -30,6 +30,7 @@ { battleField.DistributeNextPackage(); } } Main/System/Battle/BattleField/BattleField.cs
@@ -508,12 +508,11 @@ public virtual void HaveRest() { // 休息状态 battleObjMgr.HaveRest(BattleCamp.Red); battleObjMgr.DestroyTeam(BattleCamp.Blue); battleEffectMgr.HaveRest(); battleTweenMgr.HaveRest(); recordPlayer.HaveRest(); battleObjMgr.HaveRest(BattleCamp.Red); battleObjMgr.DestroyTeam(BattleCamp.Blue); SetBattleMode(BattleMode.Stop); } Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
@@ -27,6 +27,12 @@ isFinish = true; } public override void ForceFinish() { onComplete?.Invoke(); base.ForceFinish(); } public override bool IsFinished() { return isFinish; Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
@@ -37,5 +37,14 @@ }); isRun = true; } public override void ForceFinish() { //正常开始之后到界面出现之前都点不了 所以这边不用强制完成 接口留着 base.ForceFinish(); // 完成就开始显示UI } } Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
@@ -44,5 +44,11 @@ return; } } public override void ForceFinish() { // 1帧就结束了 不管 base.ForceFinish(); } } Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -55,5 +55,11 @@ { deadObj.PerformDrop(); } } public override void ForceFinish() { // 设置结束flag 记得清空motionBase里的事件 base.ForceFinish(); } } Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -22,6 +22,15 @@ return skillBase.IsFinished(); } public override void ForceFinish() { // 设置结束flag 记得清空motionBase里的事件 if (null != skillBase) { skillBase.ForceFinished(); } base.ForceFinish(); } public override void Run() { Main/System/Battle/BattleManager.cs
@@ -159,6 +159,8 @@ } } // 合并所有相关包 CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList); @@ -191,7 +193,17 @@ // b421跟b426的包已经处理完了 packQueue = new Queue<GameNetPackBasic>(newPackList); packQueue.Clear(); for (int i = 0; i < newPackList.Count; i++) { var pack = newPackList[i]; packQueue.Enqueue(pack); } // packQueue = new Queue<GameNetPackBasic>(newPackList); DistributeNextPackage(); } Main/System/Battle/BattleUtility.cs
@@ -251,6 +251,12 @@ else if (_num == 109) return config.nums[12]; // 'm' else if (_num == 98) return config.nums[13]; // 'b' else if (_num == 116) return config.nums[14]; // 't' int targetNum = _num - 48; if (targetNum >= config.nums.Length || targetNum < 0) { Debug.LogError("damage config " + config.TypeID + " _num is " + _num + " out of range"); return _num; } return config.nums[_num - 48]; } Main/System/Battle/RecordPlayer/RecordAction.cs
@@ -31,6 +31,11 @@ public virtual void Run() { } public virtual void ForceFinish() { isFinish = true; } } Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -72,14 +72,13 @@ for (int i = immediatelyActionList.Count - 1; i >= 0; i--) { var action = immediatelyActionList[i]; if (action.IsFinished()) { removeIndexList.Add(i); } else if (!action.IsFinished()) { action.Run(); continue; } removeIndexList.Add(i); } for (int i = removeIndexList.Count - 1; i >= 0; i--) @@ -154,8 +153,23 @@ public void HaveRest() { for (int i = 0; i < immediatelyActionList.Count; i++) { immediatelyActionList[i].ForceFinish(); } immediatelyActionList.Clear(); if (currentRecordAction != null) { currentRecordAction.ForceFinish(); } currentRecordAction = null; recordActionQueue.Clear(); while (recordActionQueue.Count > 0) { recordActionQueue.Dequeue().ForceFinish(); } } public void Release() Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -15,33 +15,24 @@ } public override void Run() { if (null != skillEffect) { skillEffect.Run(); } base.Run(); } // // 前摇结束 // public override void OnStartSkillFrameEnd() // { // skillEffect = SkillEffectFactory.CreateSkillEffect( // caster, // skillConfig, // tagUseSkillAttack // ); // if (skillEffect != null) // { // skillEffect.Play(OnHitTargets); // } // } // 前摇结束 public override void OnStartSkillFrameEnd() { skillEffect = SkillEffectFactory.CreateSkillEffect( caster, skillConfig, tagUseSkillAttack ); if (skillEffect != null) { skillEffect.Play(OnHitTargets); } } protected override void OnHitTargets(int _healIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> healList) { base.OnHitTargets(_healIndex, healList); } // protected override void OnHitTargets(int _healIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> healList) // { // base.OnHitTargets(_healIndex, healList); // } } Main/System/Battle/Skill/RebornSkill.cs
@@ -6,7 +6,6 @@ public class RebornSkill : SkillBase { protected SkillEffect skillEffect; public RebornSkill(BattleObject _caster, SkillConfig _skillCfg, HB427_tagSCUseSkill _vNetData, List<GameNetPackBasic> _packList, BattleField _battleField) @@ -15,29 +14,6 @@ } public override void Run() { if (null != skillEffect) { skillEffect.Run(); } base.Run(); } // 前摇结束 public override void OnStartSkillFrameEnd() { skillEffect = SkillEffectFactory.CreateSkillEffect( caster, skillConfig, tagUseSkillAttack ); if (skillEffect != null) { skillEffect.Play(OnHitTargets); } } 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() Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -74,5 +74,10 @@ caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, bulletEffect); } public virtual void ForceFinish() { finished = true; } public bool IsFinished => finished; } Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -127,6 +127,8 @@ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, (index, hitList) => { if (isFinish) return; // 击中就销毁子弹 caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer); // 播放子弹爆炸特效 @@ -165,6 +167,10 @@ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, (index, hitList) => { if (isFinish) return; foreach (var hurt in hitList) { BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID); @@ -218,6 +224,15 @@ } } public override void ForceFinished() { base.ForceFinished(); foreach (var bulletCurve in bulletCurves) { bulletCurve.ForceFinish(); } } public override bool IsFinished() { bool isCurveFinish = false; Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -47,6 +47,14 @@ } onHit?.Invoke(hitIndex, tagUseSkillAttack.HurtList.ToList()); } /// <summary> /// 后摇结束 /// </summary> public override void OnFinalFrameEnd() { base.OnFinalFrameEnd(); isFinish = true; } } Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -51,8 +51,29 @@ caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp); } /// <summary> /// 后摇开始 /// </summary> public virtual void OnFinalFrameStart() { } /// <summary> /// 后摇结束 /// </summary> public virtual void OnFinalFrameEnd() { } public virtual bool IsFinished() { return isFinish; } public virtual void ForceFinished() { isFinish = true; } }