Files
OldThink/Content.Server/NodeContainer/NodeGroups/PipeNet.cs

102 lines
3.0 KiB
C#
Raw Normal View History

using System.Linq;
using Content.Server.Atmos;
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
using Content.Server.Atmos.EntitySystems;
2021-06-09 22:19:39 +02:00
using Content.Server.NodeContainer.Nodes;
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
using Content.Shared.Atmos;
using Robust.Shared.Utility;
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
2021-06-09 22:19:39 +02:00
namespace Content.Server.NodeContainer.NodeGroups
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
public interface IPipeNet : INodeGroup, IGasMixtureHolder
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
/// <summary>
/// Causes gas in the PipeNet to react.
/// </summary>
void Update();
}
[NodeGroup(NodeGroupID.Pipe)]
public sealed class PipeNet : BaseNodeGroup, IPipeNet
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
[ViewVariables] public GasMixture Air { get; set; } = new() {Temperature = Atmospherics.T20C};
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
[ViewVariables] private AtmosphereSystem? _atmosphereSystem;
2022-06-24 00:21:44 +12:00
public EntityUid? Grid { get; private set; }
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
2022-07-07 15:36:07 +12:00
public override void Initialize(Node sourceNode, IEntityManager entMan)
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
2022-06-20 12:14:35 +12:00
base.Initialize(sourceNode, entMan);
2022-06-24 00:21:44 +12:00
Grid = entMan.GetComponent<TransformComponent>(sourceNode.Owner).GridUid;
if (Grid == null)
Refactors the AtmosphereSystem public-facing API to allow for multiple atmos backends. (#8134) * Refactors the entirety of the AtmosphereSystem public-facing API to allow for multiple atmos backends. * actually compiles * Remove commented out code * funny bracket * Move archived moles, temperature from GasMixture to TileAtmosphere. * WIP customizable map default mixture still VERY buggy * broken mess aaaaaaaaaaaaa * Fix lattice, etc not being considered space * visualization for "IsSpace" * help * Update Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs Co-authored-by: Moony <moonheart08@users.noreply.github.com> * Holy SHIT it compiles AGAIN * Fix AtmosDeviceSystem crash at shutdown * Fix immutable tiles on map blueprints not being fixed by fixgridatmos/revalidate. * Use space instead of gasmixture immutable for heat capacity calculations * Remove all LINDA-specific code from GasMixture, move it to TileAtmosphere/AtmosphereSystem instead. * Fix roundstart tiles not processing * Update Content.Server/Atmos/Commands/SetTemperatureCommand.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs Changed Files tab is so large I can't commit both suggestions at once mfw Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Moony <moonheart08@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-07-04 16:51:34 +02:00
{
2022-07-07 15:36:07 +12:00
// This is probably due to a cannister or something like that being spawned in space.
Refactors the AtmosphereSystem public-facing API to allow for multiple atmos backends. (#8134) * Refactors the entirety of the AtmosphereSystem public-facing API to allow for multiple atmos backends. * actually compiles * Remove commented out code * funny bracket * Move archived moles, temperature from GasMixture to TileAtmosphere. * WIP customizable map default mixture still VERY buggy * broken mess aaaaaaaaaaaaa * Fix lattice, etc not being considered space * visualization for "IsSpace" * help * Update Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs Co-authored-by: Moony <moonheart08@users.noreply.github.com> * Holy SHIT it compiles AGAIN * Fix AtmosDeviceSystem crash at shutdown * Fix immutable tiles on map blueprints not being fixed by fixgridatmos/revalidate. * Use space instead of gasmixture immutable for heat capacity calculations * Remove all LINDA-specific code from GasMixture, move it to TileAtmosphere/AtmosphereSystem instead. * Fix roundstart tiles not processing * Update Content.Server/Atmos/Commands/SetTemperatureCommand.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs Changed Files tab is so large I can't commit both suggestions at once mfw Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Moony <moonheart08@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-07-04 16:51:34 +02:00
return;
}
2022-06-24 00:21:44 +12:00
_atmosphereSystem = entMan.EntitySysManager.GetEntitySystem<AtmosphereSystem>();
Refactors the AtmosphereSystem public-facing API to allow for multiple atmos backends. (#8134) * Refactors the entirety of the AtmosphereSystem public-facing API to allow for multiple atmos backends. * actually compiles * Remove commented out code * funny bracket * Move archived moles, temperature from GasMixture to TileAtmosphere. * WIP customizable map default mixture still VERY buggy * broken mess aaaaaaaaaaaaa * Fix lattice, etc not being considered space * visualization for "IsSpace" * help * Update Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs Co-authored-by: Moony <moonheart08@users.noreply.github.com> * Holy SHIT it compiles AGAIN * Fix AtmosDeviceSystem crash at shutdown * Fix immutable tiles on map blueprints not being fixed by fixgridatmos/revalidate. * Use space instead of gasmixture immutable for heat capacity calculations * Remove all LINDA-specific code from GasMixture, move it to TileAtmosphere/AtmosphereSystem instead. * Fix roundstart tiles not processing * Update Content.Server/Atmos/Commands/SetTemperatureCommand.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs Changed Files tab is so large I can't commit both suggestions at once mfw Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Moony <moonheart08@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-07-04 16:51:34 +02:00
_atmosphereSystem.AddPipeNet(Grid.Value, this);
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
public void Update()
{
_atmosphereSystem?.React(Air, this);
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
public override void LoadNodes(List<Node> groupNodes)
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
base.LoadNodes(groupNodes);
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
foreach (var node in groupNodes)
{
var pipeNode = (PipeNode) node;
Air.Volume += pipeNode.Volume;
}
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
public override void RemoveNode(Node node)
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
base.RemoveNode(node);
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
2022-06-03 22:09:51 +12:00
// if the node is simply being removed into a separate group, we do nothing, as gas redistribution will be
// handled by AfterRemake(). But if it is being deleted, we actually want to remove the gas stored in this node.
if (!node.Deleting || node is not PipeNode pipe)
return;
Air.Multiply(1f - pipe.Volume / Air.Volume);
Air.Volume -= pipe.Volume;
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
public override void AfterRemake(IEnumerable<IGrouping<INodeGroup?, Node>> newGroups)
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
{
Atmos pipe rework (#3833) * Initial * Cleanup a bunch of things * some changes dunno * RequireAnchored * a * stuff * more work * Lots of progress * delete pipe visualizer * a * b * pipenet and pipenode cleanup * Fixes * Adds GasValve * Adds GasMiner * Fix stuff, maybe? * More fixes * Ignored components on the client * Adds thermomachine behavior, change a bunch of stuff * Remove Anchored * some work, but it's shitcode * significantly more ECS * ECS AtmosDevices * Cleanup * fix appearance * when the pipe direction is sus * Gas tanks and canisters * pipe anchoring and stuff * coding is my passion * Unsafe pipes take longer to unanchor * turns out we're no longer using eris canisters * Gas canister inserted tank appearance, improvements * Work on a bunch of appearances * Scrubber appearance * Reorganize AtmosphereSystem.Piping into a bunch of different systems * Appearance for vent/scrubber/pump turns off when leaving atmosphere * ThermoMachine appearance * Cleanup gas tanks * Remove passive gate unused imports * remove old canister UI functionality * PipeNode environment air, make everything use AssumeAir instead of merging manually * a * Reorganize atmos to follow new structure * ????? * Canister UI, restructure client * Restructure shared * Fix build tho * listen, at least the canister UI works entirely... * fix build : ) * Atmos device prototypes have names and descriptions * gas canister ui slider doesn't jitter * trinary prototypes * sprite for miners * ignore components * fix YAML * Fix port system doing useless thing * Fix build * fix thinking moment * fix build again because * canister direction * pipenode is a word * GasTank Air will throw on invalid states * fix build.... * Unhardcode volume pump thresholds * Volume pump and filter take time into account * Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event * Gas tank node volume is set by initial mixtuer * I love node container
2021-06-19 13:25:05 +02:00
RemoveFromGridAtmos();
2022-06-03 22:09:51 +12:00
var newAir = new List<GasMixture>(newGroups.Count());
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
foreach (var newGroup in newGroups)
{
2022-06-03 22:09:51 +12:00
if (newGroup.Key is IPipeNet newPipeNet)
newAir.Add(newPipeNet.Air);
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
2022-06-03 22:09:51 +12:00
2022-07-07 15:36:07 +12:00
_atmosphereSystem?.DivideInto(Air, newAir);
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
private void RemoveFromGridAtmos()
{
Refactors the AtmosphereSystem public-facing API to allow for multiple atmos backends. (#8134) * Refactors the entirety of the AtmosphereSystem public-facing API to allow for multiple atmos backends. * actually compiles * Remove commented out code * funny bracket * Move archived moles, temperature from GasMixture to TileAtmosphere. * WIP customizable map default mixture still VERY buggy * broken mess aaaaaaaaaaaaa * Fix lattice, etc not being considered space * visualization for "IsSpace" * help * Update Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs Co-authored-by: Moony <moonheart08@users.noreply.github.com> * Holy SHIT it compiles AGAIN * Fix AtmosDeviceSystem crash at shutdown * Fix immutable tiles on map blueprints not being fixed by fixgridatmos/revalidate. * Use space instead of gasmixture immutable for heat capacity calculations * Remove all LINDA-specific code from GasMixture, move it to TileAtmosphere/AtmosphereSystem instead. * Fix roundstart tiles not processing * Update Content.Server/Atmos/Commands/SetTemperatureCommand.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs Changed Files tab is so large I can't commit both suggestions at once mfw Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Moony <moonheart08@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-07-04 16:51:34 +02:00
if (Grid == null)
return;
_atmosphereSystem?.RemovePipeNet(Grid.Value, this);
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
public override string GetDebugData()
{
return @$"Pressure: { Air.Pressure:G3}
Temperature: {Air.Temperature:G3}
Volume: {Air.Volume:G3}";
}
PipeNet (#1626) * PipeNode * Pipe prototypes * Fixes Default NodeGroup not being registered by NodeGroupFactory * GasNet * PumpComponent * IPipeNet * PipeComponent * misc naming, yaml * PipeComponent rework * PipeNet gas transfer from pipes * PipeNet correctly combines gas on combining with other group * Client ignores piping components * AfterRemake * PipeNet remake simplification * IGasMixtureHolder on PipeComponent, IPipeNet * PipeContainerComponent * BasePump * DebugPump * IgnoredComponent fix * Pipe LocalAir and Air * comments * Pump fix * PipeNet fix * name simplification * PipeDirection name changes * BaseVentComponent and DebugVentComponent * Moves Pipe to own file * DebugVentComponent moved to own file * BaseScrubberComponent * DebugScrubberComponent * IgnoredComponents update * scrubber prototype * vent prototype fix * comments * Removes vent and scrubber PipeDirection check * PipeContainer, Pipe, and PipeNode refactor * Yaml cleanup * pump prototype fix * Removes AssumeAir usage from old IGasMixtureHolders * Simplfies Vent & Scrubber to use AtmosHelper methods * Vents and scrubbers invalidate the coordinate they changed the gas of * UpdatedPipingComponent * ScrubberComponent renamed to SiphonComponent * Removes PumpSystem * Removes framTime from UpdatedPiping * PipeNetDevices * PipeNetDevice updated by GridAtmosphereComponent * PipeNets react from update in GridAtmosphereComponent * GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue * diff fix * Removes debug gas starting in pipes * type safety in IPipeNet when combining groups * null checks * GridAtmos stores PipeNets and PipeNetDevices in List * comments * rogue curly bracket * ProcessPipeNets update fix * RemovePipeNet fix * PipeNet update() unique index * fix diff * Integration test fixes * Error Logging * error fix Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 09:45:27 -06:00
}
}