From 7ccf9668d4d914ad90fecc78fa153d70ca5b5bed Mon Sep 17 00:00:00 2001 From: 20kdc Date: Tue, 19 Oct 2021 20:07:47 +0100 Subject: [PATCH] Varied and semi-sprited atmos markers (#4944) --- Content.Server/Atmos/Commands/FixGridAtmos.cs | 36 ++++++---- .../Components/AtmosFixMarkerComponent.cs | 21 ++++++ .../Other/Components/GasMinerComponent.cs | 2 +- Content.Shared/Atmos/Atmospherics.cs | 11 +++ Resources/Maps/saltern.yml | 36 +++++----- .../Entities/Markers/atmos_blocker.yml | 67 ++++++++++++++++-- Resources/Prototypes/tags.yml | 3 - Resources/Textures/Markers/atmos.rsi/base.png | Bin 0 -> 250 bytes .../Textures/Markers/atmos.rsi/meta.json | 29 ++++++++ .../Textures/Markers/atmos.rsi/nitrogen.png | Bin 0 -> 217 bytes .../Textures/Markers/atmos.rsi/oxygen.png | Bin 0 -> 213 bytes .../Textures/Markers/atmos.rsi/plasma.png | Bin 0 -> 216 bytes .../Textures/Markers/atmos.rsi/vacuum.png | Bin 0 -> 212 bytes .../Markers/atmos.rsi/watervapour.png | Bin 0 -> 215 bytes 14 files changed, 165 insertions(+), 40 deletions(-) create mode 100644 Content.Server/Atmos/Components/AtmosFixMarkerComponent.cs create mode 100644 Resources/Textures/Markers/atmos.rsi/base.png create mode 100644 Resources/Textures/Markers/atmos.rsi/meta.json create mode 100644 Resources/Textures/Markers/atmos.rsi/nitrogen.png create mode 100644 Resources/Textures/Markers/atmos.rsi/oxygen.png create mode 100644 Resources/Textures/Markers/atmos.rsi/plasma.png create mode 100644 Resources/Textures/Markers/atmos.rsi/vacuum.png create mode 100644 Resources/Textures/Markers/atmos.rsi/watervapour.png diff --git a/Content.Server/Atmos/Commands/FixGridAtmos.cs b/Content.Server/Atmos/Commands/FixGridAtmos.cs index c60d9ec0c3..4dd76ba00c 100644 --- a/Content.Server/Atmos/Commands/FixGridAtmos.cs +++ b/Content.Server/Atmos/Commands/FixGridAtmos.cs @@ -29,9 +29,24 @@ namespace Content.Server.Atmos.Commands var entityManager = IoCManager.Resolve(); var atmosphereSystem = EntitySystem.Get(); - 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,19 +78,16 @@ 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; - break; - } + mixtureId = afm.Mode; + break; } - if (!blocker) - atmosphereSystem.Merge(tile, mixture); + var mixture = mixtures[mixtureId]; + atmosphereSystem.Merge(tile, mixture); tile.Temperature = mixture.Temperature; atmosphereSystem.InvalidateTile(gridAtmosphere, indices); diff --git a/Content.Server/Atmos/Components/AtmosFixMarkerComponent.cs b/Content.Server/Atmos/Components/AtmosFixMarkerComponent.cs new file mode 100644 index 0000000000..36b28497fd --- /dev/null +++ b/Content.Server/Atmos/Components/AtmosFixMarkerComponent.cs @@ -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 +{ + /// + /// Used by FixGridAtmos. Entities with this may get magically auto-deleted on map initialization in future. + /// + [RegisterComponent] + public class AtmosFixMarkerComponent : Component + { + public override string Name => "AtmosFixMarker"; + + // See FixGridAtmos for more details + [DataField("mode")] + public int Mode { get; set; } = 0; + } +} diff --git a/Content.Server/Atmos/Piping/Other/Components/GasMinerComponent.cs b/Content.Server/Atmos/Piping/Other/Components/GasMinerComponent.cs index 9c7ffc5905..ac7fc7a617 100644 --- a/Content.Server/Atmos/Piping/Other/Components/GasMinerComponent.cs +++ b/Content.Server/Atmos/Piping/Other/Components/GasMinerComponent.cs @@ -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")] diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 53d34fa40c..e045aeb567 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -26,6 +26,12 @@ namespace Content.Shared.Atmos /// public const float OneAtmosphere = 101.325f; + /// + /// Maximum external pressure (in kPA) a gas miner will, by default, output to. + /// This is used to initialize roundstart atmos rooms. + /// + public const float GasMinerDefaultMaxExternalPressure = 6500f; + /// /// -270.3ºC in K. CMB stands for Cosmic Microwave Background. /// @@ -57,6 +63,11 @@ namespace Content.Shared.Atmos /// public const float MolesCellStandard = (OneAtmosphere * CellVolume / (T20C * R)); + /// + /// Moles in a 2.5 m^3 cell at GasMinerDefaultMaxExternalPressure kPa and 20ºC + /// + public const float MolesCellGasMiner = (GasMinerDefaultMaxExternalPressure * CellVolume / (T20C * R)); + /// /// Compared against for superconduction. /// diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 9bb730bffe..8f54be39da 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Markers/atmos_blocker.yml b/Resources/Prototypes/Entities/Markers/atmos_blocker.yml index 35ce1c7632..18973d03c8 100644 --- a/Resources/Prototypes/Entities/Markers/atmos_blocker.yml +++ b/Resources/Prototypes/Entities/Markers/atmos_blocker.yml @@ -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 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index af17b818da..c4f82499ac 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -214,6 +214,3 @@ - type: Tag id: HideContextMenu -- type: Tag - id: AtmosFixBlocking - diff --git a/Resources/Textures/Markers/atmos.rsi/base.png b/Resources/Textures/Markers/atmos.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..ee77bb448aca3d323b31aa128d8ba2832b121ae9 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7lsBP{NFO^{{x^1XMsm# zF$061G6*wPEVVBK3bL1Y`ns||!MP|ku_QG` zp**uBL&4qCHz2%`PaLQy$l=9+40u>Ca-Z^uY_M~#Tye!9N<)Bofx?|T z@(1cB#ok!DHF?qut_#2CU8?E%%*Nm{WoeS&=iEll4HIP;UpDO8;L_*Nz`)4F!XcpG n(9n>7{?qgD-`1+XZTB;HckoTPJ9nxQ&^887S3j3^P6b!`4lK5S>hT|;+&tGo0?a`;9QiNSdyBe zP@Y+mq2TW68xY>eCk|BP=;`7Z5^?zLIYTZ61s>;%M}FVm>DQ{Hx9HJ>`ryl|6Fz`VlFzi8%cBf*}`!0f%$o<=^*r&TUb;v9jqweYcfrMw{Qa yqwlZlXbLbV-FW|D>eLUhlQv!0N`KwM8(KbLh*2~7Z&T|>J7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/atmos.rsi/plasma.png b/Resources/Textures/Markers/atmos.rsi/plasma.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab5257d5098a90d2114af2d9ba4e991772c18c0 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7lsBP{NFO^{{x^1XMsm# zF$061G6*wPEVVBK3bL1Y`ns||JQpY=S>hT|;+&tGo0?a`;9QiNSdyBe zP@Y+mq2TW68xY>eCk|BP;OXKR5^?zL1xGHRy)J>vf8XC}#wx_=sK@j_+Ovyq=0o+` zsIT|B)8e<>PFOB5X^Pwd{jcnczxTugH8V8aVhb$Le!8}h#~H-+boFyt=akR{0E~J- AegFUf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/atmos.rsi/vacuum.png b/Resources/Textures/Markers/atmos.rsi/vacuum.png new file mode 100644 index 0000000000000000000000000000000000000000..e52184c3be31ea236a39071e22a1af04bde01585 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7lsBP{NFO^{{x^1XMsm# zF$061G6*wPEVVBK3bL1Y`ns||hT|;+&tGo0?a`;9QiNSdyBe zP@Y+mq2TW68xY>eCk|9(;%*M8r(j1}oB5!B-Nw|z^r)0q!K xo~O3|n!fH#VbqD`ueC#1zp+|P2Wn(!sAoOTXMO(3R`CK5*VEO{Wt~$(696TLK}i4r literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/atmos.rsi/watervapour.png b/Resources/Textures/Markers/atmos.rsi/watervapour.png new file mode 100644 index 0000000000000000000000000000000000000000..8c07c112b1fe57e3357eee45380bccee9fc43a13 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7lsBP{NFO^{{x^1XMsm# zF$061G6*wPEVVBK3bL1Y`ns||zv5&X5miuk*!gzwb+m`*K|L^p*J+-Jln8$X`k6 z)tu^m#bvABdU;IBeZMK4^%XP!>L#FGh6ZUX;YsQruTLz02;zFW`njxgN@xNA`K&+n literal 0 HcmV?d00001