mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +03:00
# Description <!-- Explain this PR in as much detail as applicable Some example prompts to consider: How might this affect the game? The codebase? What might be some alternatives to this? How/Who does this benefit/hurt [the game/codebase]? --> Ports https://github.com/space-wizards/space-station-14/pull/32294 Ports https://github.com/ss14-harmony/ss14-harmony/pull/310 (and everything needed for it to function) Early-merges https://github.com/space-wizards/space-station-14/pull/34302 Adds the ability for multiple central command maps that get randomly selected. Tested and works. --- # Changelog <!-- You can add an author after the `🆑` to change the name that appears in the changelog (ex: `🆑 Death`) Leaving it blank will default to your GitHub display name This includes all available types for the changelog --> 🆑 Several contributors - add: Added a new central command map that is randomly picked alongside the old one (thank you to Spanky from Harmony) - add: Added Advanced SMES for mappers. - add: Added the atmospheric network monitor for seeing what the temperature, moles, and pressure is on every pipe everywhere through a computer. - add: Nukie med bundle now contains a compact defibrillator. - add: Ported a better mapping editor. - add: Added the throngler plushie. - remove: Removed the Throngler as a possible loot spawn for gamble crates. --------- Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com> (cherry picked from commit 9272f65b64392f66a7cd4fd7c84bb152dc93b65a)
70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
using Content.Shared.Atmos.Components;
|
|
using Content.Shared.Atmos.Consoles;
|
|
using Robust.Shared.GameStates;
|
|
|
|
namespace Content.Client.Atmos.Consoles;
|
|
|
|
public sealed class AtmosMonitoringConsoleSystem : SharedAtmosMonitoringConsoleSystem
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<AtmosMonitoringConsoleComponent, ComponentHandleState>(OnHandleState);
|
|
}
|
|
|
|
private void OnHandleState(EntityUid uid, AtmosMonitoringConsoleComponent component, ref ComponentHandleState args)
|
|
{
|
|
Dictionary<Vector2i, Dictionary<(int, string), ulong>> modifiedChunks;
|
|
Dictionary<NetEntity, AtmosDeviceNavMapData> atmosDevices;
|
|
|
|
switch (args.Current)
|
|
{
|
|
case AtmosMonitoringConsoleDeltaState delta:
|
|
{
|
|
modifiedChunks = delta.ModifiedChunks;
|
|
atmosDevices = delta.AtmosDevices;
|
|
|
|
foreach (var index in component.AtmosPipeChunks.Keys)
|
|
{
|
|
if (!delta.AllChunks!.Contains(index))
|
|
component.AtmosPipeChunks.Remove(index);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case AtmosMonitoringConsoleState state:
|
|
{
|
|
modifiedChunks = state.Chunks;
|
|
atmosDevices = state.AtmosDevices;
|
|
|
|
foreach (var index in component.AtmosPipeChunks.Keys)
|
|
{
|
|
if (!state.Chunks.ContainsKey(index))
|
|
component.AtmosPipeChunks.Remove(index);
|
|
}
|
|
|
|
break;
|
|
}
|
|
default:
|
|
return;
|
|
}
|
|
|
|
foreach (var (origin, chunk) in modifiedChunks)
|
|
{
|
|
var newChunk = new AtmosPipeChunk(origin);
|
|
newChunk.AtmosPipeData = new Dictionary<(int, string), ulong>(chunk);
|
|
|
|
component.AtmosPipeChunks[origin] = newChunk;
|
|
}
|
|
|
|
component.AtmosDevices.Clear();
|
|
|
|
foreach (var (nuid, atmosDevice) in atmosDevices)
|
|
{
|
|
component.AtmosDevices[nuid] = atmosDevice;
|
|
}
|
|
}
|
|
}
|