Convert piped atmos entity visualizers (#9200)

This commit is contained in:
TekuNut
2022-07-07 04:09:29 +01:00
committed by GitHub
parent fce5f59c55
commit 458d05b29b
17 changed files with 149 additions and 364 deletions

View File

@@ -1,32 +0,0 @@
using System;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public abstract class EnabledAtmosDeviceVisualizer : AppearanceVisualizer
{
[DataField("disabledState")]
private string _disabledState = string.Empty;
[DataField("enabledState")]
private string _enabledState = string.Empty;
protected abstract object LayerMap { get; }
protected abstract Enum DataKey { get; }
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
var entities = IoCManager.Resolve<IEntityManager>();
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
return;
if(component.TryGetData(DataKey, out bool enabled) && sprite.LayerMapTryGet(LayerMap, out var layer))
sprite.LayerSetState(layer, enabled ? _enabledState : _disabledState);
}
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class GasFilterVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => FilterVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class GasValveVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => FilterVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class OutletInjectorVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => OutletInjectorVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class PassiveVentVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => PassiveVentVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,30 +0,0 @@
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class PipeColorVisualizer : AppearanceVisualizer
{
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (!IoCManager.Resolve<IEntityManager>().TryGetComponent(component.Owner, out SpriteComponent? sprite))
return;
if (component.TryGetData(PipeColorVisuals.Color, out Color color))
{
// T-ray scanner / sub floor runs after this visualizer. Lets not bulldoze transparency.
var layer = sprite[Layers.Pipe];
layer.Color = color.WithAlpha(layer.Color.A);
}
}
public enum Layers : byte
{
Pipe,
}
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class PressurePumpVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => PumpVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,54 +0,0 @@
using Content.Shared.Atmos.Piping.Unary.Visuals;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class ScrubberVisualizer : AppearanceVisualizer
{
private string _offState = "scrub_off";
private string _scrubState = "scrub_on";
private string _siphonState = "scrub_purge";
private string _weldedState = "scrub_welded";
private string _wideState = "scrub_wide";
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
var entities = IoCManager.Resolve<IEntityManager>();
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
return;
if (!component.TryGetData(ScrubberVisuals.State, out ScrubberState state))
return;
switch (state)
{
case ScrubberState.Off:
sprite.LayerSetState(ScrubberVisualLayers.Scrubber, _offState);
break;
case ScrubberState.Scrub:
sprite.LayerSetState(ScrubberVisualLayers.Scrubber, _scrubState);
break;
case ScrubberState.Siphon:
sprite.LayerSetState(ScrubberVisualLayers.Scrubber, _siphonState);
break;
case ScrubberState.Welded:
sprite.LayerSetState(ScrubberVisualLayers.Scrubber, _weldedState);
break;
case ScrubberState.WideScrub:
sprite.LayerSetState(ScrubberVisualLayers.Scrubber, _wideState);
break;
}
}
}
public enum ScrubberVisualLayers : byte
{
Scrubber,
}
}

View File

@@ -1,18 +0,0 @@
using System;
using Content.Shared.Atmos.Piping;
using JetBrains.Annotations;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class ThermoMachineVisualizer : EnabledAtmosDeviceVisualizer
{
protected override object LayerMap => Layers.Enabled;
protected override Enum DataKey => ThermoMachineVisuals.Enabled;
enum Layers : byte
{
Enabled,
}
}
}

View File

@@ -1,50 +0,0 @@
using Content.Shared.Atmos.Visuals;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
namespace Content.Client.Atmos.Visualizers
{
[UsedImplicitly]
public sealed class VentPumpVisualizer : AppearanceVisualizer
{
private string _offState = "vent_off";
private string _inState = "vent_in";
private string _outState = "vent_out";
private string _weldedState = "vent_welded";
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
var entities = IoCManager.Resolve<IEntityManager>();
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
return;
if (!component.TryGetData(VentPumpVisuals.State, out VentPumpState state))
return;
switch (state)
{
case VentPumpState.Off:
sprite.LayerSetState(VentVisualLayers.Vent, _offState);
break;
case VentPumpState.In:
sprite.LayerSetState(VentVisualLayers.Vent, _inState);
break;
case VentPumpState.Out:
sprite.LayerSetState(VentVisualLayers.Vent, _outState);
break;
case VentPumpState.Welded:
sprite.LayerSetState(VentVisualLayers.Vent, _weldedState);
break;
}
}
}
public enum VentVisualLayers : byte
{
Vent,
}
}