From 8a5e8796337776fae63fc098b571687732c2d4d7 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 23 Feb 2020 17:37:57 +0100 Subject: [PATCH] Glass airlocks actually let light through. --- .../Components/Doors/ServerDoorComponent.cs | 16 ++++++++++++++-- .../Entities/buildings/airlock_base.yml | 10 ++++++++++ .../Entities/buildings/airlock_types.yml | 5 +++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs index e4b6202f45..ee13193892 100644 --- a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs @@ -8,7 +8,9 @@ using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Network; using Robust.Shared.Maths; +using Robust.Shared.Serialization; using Robust.Shared.Timers; +using Robust.Shared.ViewVariables; using CancellationTokenSource = System.Threading.CancellationTokenSource; namespace Content.Server.GameObjects @@ -38,6 +40,16 @@ namespace Content.Server.GameObjects private static readonly TimeSpan OpenTimeTwo = TimeSpan.FromSeconds(0.9f); private static readonly TimeSpan DenyTime = TimeSpan.FromSeconds(0.45f); + [ViewVariables] + private bool _occludes; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _occludes, "occludes", true); + } + public override void Initialize() { base.Initialize(); @@ -136,7 +148,7 @@ namespace Content.Server.GameObjects State = DoorState.Opening; SetAppearance(DoorVisualState.Opening); - if (Owner.TryGetComponent(out OccluderComponent occluder)) + if (_occludes && Owner.TryGetComponent(out OccluderComponent occluder)) { occluder.Enabled = false; } @@ -194,7 +206,7 @@ namespace Content.Server.GameObjects { State = DoorState.Closed; SetAppearance(DoorVisualState.Closed); - if (Owner.TryGetComponent(out OccluderComponent occluder)) + if (_occludes && Owner.TryGetComponent(out OccluderComponent occluder)) { occluder.Enabled = true; } diff --git a/Resources/Prototypes/Entities/buildings/airlock_base.yml b/Resources/Prototypes/Entities/buildings/airlock_base.yml index e7b361ec8a..5f6753de72 100644 --- a/Resources/Prototypes/Entities/buildings/airlock_base.yml +++ b/Resources/Prototypes/Entities/buildings/airlock_base.yml @@ -50,3 +50,13 @@ placement: mode: SnapgridCenter + +- type: entity + id: airlock_glass + parent: airlock + components: + - type: Airlock + occludes: false + + - type: Occluder + enabled: false diff --git a/Resources/Prototypes/Entities/buildings/airlock_types.yml b/Resources/Prototypes/Entities/buildings/airlock_types.yml index b8b70fbcfe..a30bdd6495 100644 --- a/Resources/Prototypes/Entities/buildings/airlock_types.yml +++ b/Resources/Prototypes/Entities/buildings/airlock_types.yml @@ -49,7 +49,7 @@ sprite: Buildings/airlock_medical.rsi - type: entity - parent: airlock + parent: airlock_glass id: airlock_medical_glass name: Glass Medical Airlock components: @@ -59,6 +59,7 @@ - type: Icon sprite: Buildings/airlock_medical_glass.rsi + - type: entity parent: airlock id: airlock_science @@ -71,7 +72,7 @@ sprite: Buildings/airlock_science.rsi - type: entity - parent: airlock + parent: airlock_glass id: airlock_science_glass name: Glass Science Airlock components: