using System.Collections.Generic; using Content.Server.GameObjects.Components.Movement; using Content.Shared.GameObjects.Components.Damage; using JetBrains.Annotations; using Robust.Server.Interfaces.Player; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; namespace Content.Server.AI.WorldState.States.Mobs { [UsedImplicitly] public sealed class NearbyPlayersState : CachedStateData> { public override string Name => "NearbyPlayers"; protected override List GetTrueValue() { var result = new List(); if (!Owner.TryGetComponent(out AiControllerComponent controller)) { return result; } var playerManager = IoCManager.Resolve(); var nearbyPlayers = playerManager.GetPlayersInRange(Owner.Transform.GridPosition, (int) controller.VisionRadius); foreach (var player in nearbyPlayers) { if (player.AttachedEntity != Owner && player.AttachedEntity.HasComponent()) { result.Add(player.AttachedEntity); } } return result; } } }