/* * @Author: 白哉 * @Description: * @Date: 2025年06月06日 星期五 19:06:16 * @Modify: */ using System; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] public class AIParamTargetCityInAttackRange : ActionTask { public bool CheckInAttackRange = true; protected override string info { get { if (CheckInAttackRange) return string.Format($"目标城市在射程内"); return string.Format($"目标城市不在射程内"); } } protected override void OnExecute() { // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null || data.value.TargetParam.TargetGridData == null) { EndAction(false); return; } var param = data.value.TargetParam; if (!param.MapData.GetGridDataByUnitId(param.UnitData.Id, out var unitGrid)) { EndAction(false); return; } var range = param.UnitData.GetAttackRange(); if (range == 0) { EndAction(false); return; } var set = param.MapData.GridMap.GetAroundGridData(range, range, unitGrid); if (CheckInAttackRange) EndAction(set.Contains(param.TargetGridData)); EndAction(!set.Contains(param.TargetGridData)); } } }