/* * @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 AIParamIsUnitAround : BaseActionTask { public int Offset; protected override string desc => $"目标兵是否在周围?"; protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) { EndAction(false); return; } data.value.TargetParam.RefreshParams(); var selfUnit = data.value.TargetParam.UnitData; var targetUnit = data.value.TargetParam.TargetUnitData; if (selfUnit == null || targetUnit == null) { EndAction(false); return; } var selfGrid = selfUnit.Grid(data.value.TargetParam.MapData); var targetGrid = targetUnit.Grid(data.value.TargetParam.MapData); if (selfGrid == null || targetGrid == null) { EndAction(false); return; } var offset = data.value.TargetParam.MapData.GridMap.CalcDistance(selfGrid, targetGrid); EndAction(offset <= Offset); } } }