Skip to content

Commit

Permalink
rnd servers exlusive to parent grids (#268)
Browse files Browse the repository at this point in the history
  • Loading branch information
Cheackraze committed Aug 27, 2023
1 parent 89b1d23 commit 9d60c7c
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Content.Server/Research/Systems/ResearchSystem.Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ private void UpdateClientInterface(EntityUid uid, ResearchClientComponent? compo
if (!TryGetClientServer(uid, out _, out var serverComponent, component))
return;

var names = GetServerNames();
var names = GetNFServerNames(uid);
var state = new ResearchClientBoundInterfaceState(names.Length, names,
GetServerIds(), component.ConnectedToServer ? serverComponent.Id : -1);
GetNFServerIds(uid), component.ConnectedToServer ? serverComponent.Id : -1);

_uiSystem.TrySetUiState(uid, ResearchClientUiKey.Key, state);
}
Expand Down
45 changes: 45 additions & 0 deletions Content.Server/Research/Systems/ResearchSystem.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Station.Systems;
using Content.Shared.Access.Systems;
using Content.Shared.Popups;
using Content.Shared.Research.Components;
Expand All @@ -19,6 +20,7 @@ public sealed partial class ResearchSystem : SharedResearchSystem
[Dependency] private readonly AccessReaderSystem _accessReader = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly StationSystem _station = default!;

public override void Initialize()
{
Expand Down Expand Up @@ -87,6 +89,49 @@ public int[] GetServerIds()
return list;
}

/// <summary>
/// Frontier copies of the original get servers. We need our research system to be isolated on a per-grid basis.
/// </summary>
/// <param name="gridUid"></param>
/// <returns></returns>
public string[] GetNFServerNames(EntityUid gridUid)
{
var allServers = EntityQueryEnumerator<ResearchServerComponent>();
var list = new List<string>();
var station = _station.GetOwningStation(gridUid);

if (station is { } stationUid)
{
while (allServers.MoveNext(out var uid, out var comp))
{
if (_station.GetOwningStation(uid) == stationUid)
list.Add(comp.ServerName);
}
}

var serverList = list.ToArray();
return serverList;
}

public int[] GetNFServerIds(EntityUid gridUid)
{
var allServers = EntityQueryEnumerator<ResearchServerComponent>();
var list = new List<int>();
var station = _station.GetOwningStation(gridUid);

if (station is { } stationUid)
{
while (allServers.MoveNext(out var uid, out var comp))
{
if (_station.GetOwningStation(uid) == stationUid)
list.Add(comp.Id);
}
}

var serverList = list.ToArray();
return serverList;
}

public override void Update(float frameTime)
{
foreach (var server in EntityQuery<ResearchServerComponent>())
Expand Down

0 comments on commit 9d60c7c

Please sign in to comment.