using System.Collections.Generic; using Gameplay.AI; using Gameplay.Unit; public static class AITargetFinder { public static Dictionary FindUnits(GameUnit owner, List candidates, IAITargetFilter filter) { var results = new Dictionary(candidates.Count); var ownerCell = owner.transData?.cellIndex; if (!ownerCell.HasValue) return results; foreach (var unit in candidates) { var cell = unit.transData?.cellIndex; if (!cell.HasValue) continue; if (filter.IsValid(unit)) { int distance = AIUtils.GetDistance(ownerCell.Value, cell.Value); results[unit] = distance; } } return results; } }