From 8ebd3864c65c83be13481f647fa99e3fb9e69000 Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Tue, 22 Jul 2025 17:56:04 +0800 Subject: [PATCH] 1 --- Assets/ModuleCore/ModuleBattle/BattleCharacter.cs | 5 +++++ .../ModuleBattle/BattlePhase/PhaseAction.cs | 12 +++++++++--- Assets/ModuleCore/ModuleBattle/BattleQueue.cs | 8 ++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Assets/ModuleCore/ModuleBattle/BattleCharacter.cs b/Assets/ModuleCore/ModuleBattle/BattleCharacter.cs index 7a76e7e..eb11ee7 100644 --- a/Assets/ModuleCore/ModuleBattle/BattleCharacter.cs +++ b/Assets/ModuleCore/ModuleBattle/BattleCharacter.cs @@ -34,4 +34,9 @@ public class BattleCharacter : DataAttribute { hitPoint = new Vector2Int(character.HitPoint, character.HitPoint); armorClass = character.ArmorClass; } + + /// 攻击目标 + public bool AttackTarget(BattleCharacter target) { + return team != target.team && target.hitPoint.x > 0; + } } diff --git a/Assets/ModuleCore/ModuleBattle/BattlePhase/PhaseAction.cs b/Assets/ModuleCore/ModuleBattle/BattlePhase/PhaseAction.cs index 9ac3326..b1dc613 100644 --- a/Assets/ModuleCore/ModuleBattle/BattlePhase/PhaseAction.cs +++ b/Assets/ModuleCore/ModuleBattle/BattlePhase/PhaseAction.cs @@ -16,9 +16,9 @@ public class PhaseAction : BattlePhase { // 选择行动目标,没有行动目标则进入结算阶段 if (!BattleQueue.Dequeue(out BattleCharacter character)) { simulator.Transition(PhaseType.结算阶段); return; } // 判断是否可以行动 - - // 选择一个目标 - + if (ActionPredicate(character)) { return; } + // 选择一个可以攻击的目标 + BattleCharacter target = BattleQueue.FirstOrDefault(obj => character.AttackTarget(obj)); // 对目标进行攻击 // TODO:记录器 @@ -27,4 +27,10 @@ public class PhaseAction : BattlePhase { public override void QuitPhase() { // throw new System.NotImplementedException(); } + + /// 行动判断 + private bool ActionPredicate(BattleCharacter character) { + return character.hitPoint.x > 0; + } + } diff --git a/Assets/ModuleCore/ModuleBattle/BattleQueue.cs b/Assets/ModuleCore/ModuleBattle/BattleQueue.cs index b70baff..354d94e 100644 --- a/Assets/ModuleCore/ModuleBattle/BattleQueue.cs +++ b/Assets/ModuleCore/ModuleBattle/BattleQueue.cs @@ -29,6 +29,14 @@ public class BattleQueue { public void OrderByDescending(Func func) { characters = characters.OrderByDescending(func).ToList(); } + /// 根据条件查询元素 + public List Where(Func predicate) { + return characters.Where(predicate).ToList(); + } + /// 根据条件查询第一个匹配的元素 + public BattleCharacter FirstOrDefault(Func predicate) { + return characters.FirstOrDefault(predicate); + } /// 更新队列 public void UpdateQueue() { queue = new Queue(characters);