Varied and semi-sprited atmos markers (#4944)

This commit is contained in:
20kdc
2021-10-19 20:07:47 +01:00
committed by GitHub
parent 88c8f3400b
commit 7ccf9668d4
14 changed files with 165 additions and 40 deletions

View File

@@ -29,9 +29,24 @@ namespace Content.Server.Atmos.Commands
var entityManager = IoCManager.Resolve<IEntityManager>();
var atmosphereSystem = EntitySystem.Get<AtmosphereSystem>();
var mixture = new GasMixture(Atmospherics.CellVolume) { Temperature = Atmospherics.T20C };
mixture.AdjustMoles(Gas.Oxygen, Atmospherics.OxygenMolesStandard);
mixture.AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard);
var mixtures = new GasMixture[5];
for (var i = 0; i < mixtures.Length; i++)
mixtures[i] = new GasMixture(Atmospherics.CellVolume) { Temperature = Atmospherics.T20C };
// 0: Air
mixtures[0].AdjustMoles(Gas.Oxygen, Atmospherics.OxygenMolesStandard);
mixtures[0].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard);
// 1: Vaccum
// 2: Oxygen (GM)
mixtures[2].AdjustMoles(Gas.Oxygen, Atmospherics.MolesCellGasMiner);
// 3: Nitrogen (GM)
mixtures[3].AdjustMoles(Gas.Nitrogen, Atmospherics.MolesCellGasMiner);
// 4: Plasma (GM)
mixtures[4].AdjustMoles(Gas.Plasma, Atmospherics.MolesCellGasMiner);
foreach (var gid in args)
{
@@ -63,18 +78,15 @@ namespace Content.Server.Atmos.Commands
continue;
tile.Clear();
var blocker = false;
var mixtureId = 0;
foreach (var entUid in mapGrid.GetAnchoredEntities(indices))
{
if (!entityManager.TryGetComponent(entUid, out TagComponent? tags))
if (!entityManager.TryGetComponent(entUid, out AtmosFixMarkerComponent? afm))
continue;
if (tags.HasTag("AtmosFixBlocking"))
{
blocker = true;
mixtureId = afm.Mode;
break;
}
}
if (!blocker)
var mixture = mixtures[mixtureId];
atmosphereSystem.Merge(tile, mixture);
tile.Temperature = mixture.Temperature;

View File

@@ -0,0 +1,21 @@
using Content.Server.Atmos.EntitySystems;
using Content.Server.Temperature.Components;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Server.Atmos.Components
{
/// <summary>
/// Used by FixGridAtmos. Entities with this may get magically auto-deleted on map initialization in future.
/// </summary>
[RegisterComponent]
public class AtmosFixMarkerComponent : Component
{
public override string Name => "AtmosFixMarker";
// See FixGridAtmos for more details
[DataField("mode")]
public int Mode { get; set; } = 0;
}
}

View File

@@ -20,7 +20,7 @@ namespace Content.Server.Atmos.Piping.Other.Components
[ViewVariables(VVAccess.ReadWrite)]
[DataField("maxExternalPressure")]
public float MaxExternalPressure { get; set; } = 6500f;
public float MaxExternalPressure { get; set; } = Atmospherics.GasMinerDefaultMaxExternalPressure;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("spawnGas")]

View File

@@ -26,6 +26,12 @@ namespace Content.Shared.Atmos
/// </summary>
public const float OneAtmosphere = 101.325f;
/// <summary>
/// Maximum external pressure (in kPA) a gas miner will, by default, output to.
/// This is used to initialize roundstart atmos rooms.
/// </summary>
public const float GasMinerDefaultMaxExternalPressure = 6500f;
/// <summary>
/// -270.3ºC in K. CMB stands for Cosmic Microwave Background.
/// </summary>
@@ -57,6 +63,11 @@ namespace Content.Shared.Atmos
/// </summary>
public const float MolesCellStandard = (OneAtmosphere * CellVolume / (T20C * R));
/// <summary>
/// Moles in a 2.5 m^3 cell at GasMinerDefaultMaxExternalPressure kPa and 20ºC
/// </summary>
public const float MolesCellGasMiner = (GasMinerDefaultMaxExternalPressure * CellVolume / (T20C * R));
/// <summary>
/// Compared against for superconduction.
/// </summary>

View File

@@ -69368,109 +69368,109 @@ entities:
parent: 853
type: Transform
- uid: 6651
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 37.5,22.5
parent: 853
type: Transform
- uid: 6652
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 37.5,21.5
parent: 853
type: Transform
- uid: 6653
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 38.5,22.5
parent: 853
type: Transform
- uid: 6654
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 38.5,21.5
parent: 853
type: Transform
- uid: 6655
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 39.5,22.5
parent: 853
type: Transform
- uid: 6656
type: AtmosFixBlockerMarker
type: AtmosFixOxygenMarker
components:
- pos: 39.5,21.5
parent: 853
type: Transform
- uid: 6657
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 41.5,22.5
parent: 853
type: Transform
- uid: 6658
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 41.5,21.5
parent: 853
type: Transform
- uid: 6659
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 42.5,22.5
parent: 853
type: Transform
- uid: 6660
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 42.5,21.5
parent: 853
type: Transform
- uid: 6661
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 43.5,22.5
parent: 853
type: Transform
- uid: 6662
type: AtmosFixBlockerMarker
type: AtmosFixNitrogenMarker
components:
- pos: 43.5,21.5
parent: 853
type: Transform
- uid: 6663
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 45.5,22.5
parent: 853
type: Transform
- uid: 6664
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 45.5,21.5
parent: 853
type: Transform
- uid: 6665
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 46.5,22.5
parent: 853
type: Transform
- uid: 6666
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 46.5,21.5
parent: 853
type: Transform
- uid: 6667
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 47.5,22.5
parent: 853
type: Transform
- uid: 6668
type: AtmosFixBlockerMarker
type: AtmosFixPlasmaMarker
components:
- pos: 47.5,21.5
parent: 853

View File

@@ -1,13 +1,68 @@
- type: entity
name: Atmos Fix Blocker Marker
name: Atmos Fix Vacuum Marker
id: AtmosFixBlockerMarker
description: "Vacuum, T20C"
parent: MarkerBase
components:
- type: Sprite
layers:
- state: red
- texture: Objects/Specific/Atmos/gasanalyzer.rsi/icon.png
- type: Tag
tags:
- AtmosFixBlocking
- sprite: Markers/atmos.rsi # {
state: base
shader: unshaded
- sprite: Markers/atmos.rsi
shader: unshaded # }
state: vacuum
- type: AtmosFixMarker
mode: 1
- type: entity
name: Atmos Fix Oxygen Marker
id: AtmosFixOxygenMarker
description: "Oxygen @ gas miner pressure, T20C"
parent: MarkerBase
components:
- type: Sprite
layers:
- sprite: Markers/atmos.rsi # {
state: base
shader: unshaded
- sprite: Markers/atmos.rsi
shader: unshaded # }
state: oxygen
- type: AtmosFixMarker
mode: 2
- type: entity
name: Atmos Fix Nitrogen Marker
id: AtmosFixNitrogenMarker
description: "Nitrogen @ gas miner pressure, T20C"
parent: MarkerBase
components:
- type: Sprite
layers:
- sprite: Markers/atmos.rsi # {
state: base
shader: unshaded
- sprite: Markers/atmos.rsi
shader: unshaded # }
state: nitrogen
- type: AtmosFixMarker
mode: 3
- type: entity
name: Atmos Fix Plasma Marker
id: AtmosFixPlasmaMarker
description: "Plasma @ gas miner pressure, T20C"
parent: MarkerBase
components:
- type: Sprite
layers:
- sprite: Markers/atmos.rsi # {
state: base
shader: unshaded
- sprite: Markers/atmos.rsi
shader: unshaded # }
state: plasma
- type: AtmosFixMarker
mode: 4

View File

@@ -214,6 +214,3 @@
- type: Tag
id: HideContextMenu
- type: Tag
id: AtmosFixBlocking

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

View File

@@ -0,0 +1,29 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Space Wizards Federation",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "vacuum"
},
{
"name": "oxygen"
},
{
"name": "nitrogen"
},
{
"name": "plasma"
},
{
"name": "watervapour"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B