using System.Linq;
using Content.Server.Power.EntitySystems;
using Content.Shared.Research.Components;
+using Robust.Shared.Utility;
namespace Content.Server.Research.Systems;
private void OnClientMapInit(EntityUid uid, ResearchClientComponent component, MapInitEvent args)
{
- var allServers = GetServers(uid).ToList();
-
- if (allServers.Count > 0)
- RegisterClient(uid, allServers[0], component, allServers[0]);
+ if (GetServers(uid).FirstOrNull() is { } server)
+ RegisterClient(uid, server, component, server);
}
private void OnClientShutdown(EntityUid uid, ResearchClientComponent component, ComponentShutdown args)
if (ent.Comp.Server is not null)
return;
- var allServers = GetServers(ent).ToList();
-
- if (allServers.Count > 0)
- RegisterClient(ent, allServers[0], ent, allServers[0]);
+ if (GetServers(ent).FirstOrNull() is { } server)
+ RegisterClient(ent, server, ent, server);
}
else
{
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly RadioSystem _radio = default!;
- private static readonly HashSet<Entity<ResearchServerComponent>> ClientLookup = new();
-
public override void Initialize()
{
base.Initialize();
serverUid = null;
serverComponent = null;
- var query = GetServers(client).ToList();
+ var query = GetServers(client);
foreach (var (uid, server) in query)
{
if (server.Id != id)
/// <returns></returns>
public string[] GetServerNames(EntityUid client)
{
- var allServers = GetServers(client).ToArray();
- var list = new string[allServers.Length];
-
- for (var i = 0; i < allServers.Length; i++)
- {
- list[i] = allServers[i].Comp.ServerName;
- }
-
- return list;
+ return GetServers(client).Select(x => x.Comp.ServerName).ToArray();
}
/// <summary>
/// <returns></returns>
public int[] GetServerIds(EntityUid client)
{
- var allServers = GetServers(client).ToArray();
- var list = new int[allServers.Length];
-
- for (var i = 0; i < allServers.Length; i++)
- {
- list[i] = allServers[i].Comp.Id;
- }
-
- return list;
+ return GetServers(client).Select(x => x.Comp.Id).ToArray();
}
public HashSet<Entity<ResearchServerComponent>> GetServers(EntityUid client)
{
- ClientLookup.Clear();
-
var clientXform = Transform(client);
if (clientXform.GridUid is not { } grid)
- return ClientLookup;
+ return [];
- _lookup.GetGridEntities(grid, ClientLookup);
- return ClientLookup;
+ var set = new HashSet<Entity<ResearchServerComponent>>();
+ _lookup.GetGridEntities(grid, set);
+ return set;
}
public override void Update(float frameTime)