/* * @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 { [Name("设置移动目标点")] [Category("AI节点")] [Serializable] public class AIParamSetMoveTargetGrid : BaseActionTask { 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; } var map = data.value.TargetParam.MapData; var player = data.value.TargetParam.PlayerData; var unit = data.value.TargetParam.UnitData; var start = unit?.Grid(map); var end = data.value.TargetParam.TargetGridData; if (start == null || end == null) { EndAction(false); return; } var path = PathFinder.FindPath((int)map.MapConfig.Width, (int)map.MapConfig.Height, new (start.Pos.X, start.Pos.Y), new (end.Pos.X, end.Pos.Y), map, player); if (path.found && path.path != null) { for (int i = 1; i < path.path.Length; i++) { if (map.GridMap.GetGridDataByPos(path.path[i].x, path.path[i].y, out var grid) ) data.value.TargetList.Add(grid.Id); } } EndAction(data.value.TargetList.Count > 0); } } }