public sealed class AtmosPipeAppearanceSystem : EntitySystem
{
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+ [Dependency] private readonly SpriteSystem _sprite = default!;
public override void Initialize()
{
if (!TryComp(uid, out SpriteComponent? sprite))
return;
- foreach (PipeConnectionLayer layerKey in Enum.GetValues(typeof(PipeConnectionLayer)))
+ foreach (var layerKey in Enum.GetValues<PipeConnectionLayer>())
{
- sprite.LayerMapReserveBlank(layerKey);
- var layer = sprite.LayerMapGet(layerKey);
- sprite.LayerSetRSI(layer, component.Sprite.RsiPath);
- sprite.LayerSetState(layer, component.Sprite.RsiState);
- sprite.LayerSetDirOffset(layer, ToOffset(layerKey));
+ var layer = _sprite.LayerMapReserve((uid, sprite), layerKey);
+ _sprite.LayerSetRsi((uid, sprite), layer, component.Sprite.RsiPath);
+ _sprite.LayerSetRsiState((uid, sprite), layer, component.Sprite.RsiState);
+ _sprite.LayerSetDirOffset((uid, sprite), layer, ToOffset(layerKey));
}
}
- private void HideAllPipeConnection(SpriteComponent sprite)
+ private void HideAllPipeConnection(Entity<SpriteComponent> entity)
{
- foreach (PipeConnectionLayer layerKey in Enum.GetValues(typeof(PipeConnectionLayer)))
+ var sprite = entity.Comp;
+
+ foreach (var layerKey in Enum.GetValues<PipeConnectionLayer>())
{
- if (!sprite.LayerMapTryGet(layerKey, out var key))
+ if (!_sprite.LayerMapTryGet(entity.AsNullable(), layerKey, out var key, false))
continue;
var layer = sprite[key];
if (!_appearance.TryGetData<PipeDirection>(uid, PipeVisuals.VisualState, out var worldConnectedDirections, args.Component))
{
- HideAllPipeConnection(args.Sprite);
+ HideAllPipeConnection((uid, args.Sprite));
return;
}
// transform connected directions to local-coordinates
var connectedDirections = worldConnectedDirections.RotatePipeDirection(-Transform(uid).LocalRotation);
- foreach (PipeConnectionLayer layerKey in Enum.GetValues(typeof(PipeConnectionLayer)))
+ foreach (var layerKey in Enum.GetValues<PipeConnectionLayer>())
{
- if (!args.Sprite.LayerMapTryGet(layerKey, out var key))
+ if (!_sprite.LayerMapTryGet((uid, args.Sprite), layerKey, out var key, false))
continue;
var layer = args.Sprite[key];
- var dir = (PipeDirection) layerKey;
+ var dir = (PipeDirection)layerKey;
var visible = connectedDirections.HasDirection(dir);
layer.Visible &= visible;