/* * @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 AIParamSelfTerritory : BaseActionTask { public bool IsIn = true; protected override string desc { get { if (IsIn) return string.Format($"在我方领土"); return string.Format($"不在我方领土"); } } protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) { EndAction(false); return; } var unit = data.value.TargetParam.UnitData; var set = data.value.TargetParam.MapData.GetPlayerTerritoryGridIdSet(data.value.TargetParam.PlayerData.Id); if (data.value.TargetParam.MapData.GetGridDataByUnitId(unit.Id, out var grid)) { if (IsIn && set.Contains(grid.Id)) { EndAction(true); return; } if (!IsIn && !set.Contains(grid.Id)) { EndAction(true); return; } } EndAction(false); } } }