/* * @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 AIParamIsAroundUnitInOtherCity : 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 selfUnit = data.value.TargetParam.UnitData; var selfGrid = selfUnit.Grid(data.value.TargetParam.MapData); var selfPlayer = selfUnit.Player(data.value.TargetParam.MapData); if (selfGrid != null && selfPlayer != null) { var arounds = data.value.TargetParam.MapData.GridMap.GetAroundGridData(1, 1, selfGrid); foreach (var around in arounds) { var unit = around.Unit(data.value.TargetParam.MapData); var player = unit.Player(data.value.TargetParam.MapData); var grid = unit.Grid(data.value.TargetParam.MapData); var city = grid?.CityOnGrid(data.value.TargetParam.MapData); var cityPlayer = city?.Player(data.value.TargetParam.MapData); if (cityPlayer == null || player == null || player != selfPlayer || cityPlayer == player) continue; EndAction(true); return; } } EndAction(false); } } }