/* * @Author: 白哉 * @Description: * @Date: 2025年10月21日 星期二 17:10:56 * @Modify: */ using System; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Name("筛选目标是己方单位")] [Category("AI节点")] [Serializable] public class AIParamIsTargetSelfUnit : BaseActionTask { public bool Not; protected override string desc { get { if (Not) return string.Format($"筛选目标是非己方单位"); return string.Format($"筛选目标是己方单位"); } } protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) { EndAction(false); return; } for (int i = data.value.AIActions.Count - 1; i >= 0; i--) { var unit = data.value.AIActions[i].Param.UnitData; var targetUnit = data.value.AIActions[i].Param.TargetUnitData; var player = unit.Player(data.value.AIActions[i].Param.MapData); var targetPlayer = targetUnit.Player(data.value.AIActions[i].Param.MapData); if (player != null && targetPlayer != null && Not && player != targetPlayer) continue; if (player != null && targetPlayer != null && !Not && player == targetPlayer) continue; data.value.AIActions.RemoveAt(i); } EndAction(data.value.AIActions.Count > 0); } } }