diff --git a/Content.Client/Audio/Jukebox/JukeboxSystem.cs b/Content.Client/Audio/Jukebox/JukeboxSystem.cs index dd4a5bbb9b..feb4aef3b2 100644 --- a/Content.Client/Audio/Jukebox/JukeboxSystem.cs +++ b/Content.Client/Audio/Jukebox/JukeboxSystem.cs @@ -12,6 +12,7 @@ public sealed class JukeboxSystem : SharedJukeboxSystem [Dependency] private readonly AnimationPlayerSystem _animationPlayer = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; [Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -64,7 +65,7 @@ public sealed class JukeboxSystem : SharedJukeboxSystem visualState = JukeboxVisualState.On; } - UpdateAppearance(uid, visualState, component, sprite); + UpdateAppearance((uid, sprite), visualState, component); } private void OnAppearanceChange(EntityUid uid, JukeboxComponent component, ref AppearanceChangeEvent args) @@ -78,25 +79,25 @@ public sealed class JukeboxSystem : SharedJukeboxSystem visualState = JukeboxVisualState.On; } - UpdateAppearance(uid, visualState, component, args.Sprite); + UpdateAppearance((uid, args.Sprite), visualState, component); } - private void UpdateAppearance(EntityUid uid, JukeboxVisualState visualState, JukeboxComponent component, SpriteComponent sprite) + private void UpdateAppearance(Entity entity, JukeboxVisualState visualState, JukeboxComponent component) { - SetLayerState(JukeboxVisualLayers.Base, component.OffState, sprite); + SetLayerState(JukeboxVisualLayers.Base, component.OffState, entity); switch (visualState) { case JukeboxVisualState.On: - SetLayerState(JukeboxVisualLayers.Base, component.OnState, sprite); + SetLayerState(JukeboxVisualLayers.Base, component.OnState, entity); break; case JukeboxVisualState.Off: - SetLayerState(JukeboxVisualLayers.Base, component.OffState, sprite); + SetLayerState(JukeboxVisualLayers.Base, component.OffState, entity); break; case JukeboxVisualState.Select: - PlayAnimation(uid, JukeboxVisualLayers.Base, component.SelectState, 1.0f, sprite); + PlayAnimation(entity.Owner, JukeboxVisualLayers.Base, component.SelectState, 1.0f, entity); break; } } @@ -109,7 +110,7 @@ public sealed class JukeboxSystem : SharedJukeboxSystem if (!_animationPlayer.HasRunningAnimation(uid, state)) { var animation = GetAnimation(layer, state, animationTime); - sprite.LayerSetVisible(layer, true); + _sprite.LayerSetVisible((uid, sprite), layer, true); _animationPlayer.Play(uid, animation, state); } } @@ -133,13 +134,13 @@ public sealed class JukeboxSystem : SharedJukeboxSystem }; } - private void SetLayerState(JukeboxVisualLayers layer, string? state, SpriteComponent sprite) + private void SetLayerState(JukeboxVisualLayers layer, string? state, Entity sprite) { if (string.IsNullOrEmpty(state)) return; - sprite.LayerSetVisible(layer, true); - sprite.LayerSetAutoAnimated(layer, true); - sprite.LayerSetState(layer, state); + _sprite.LayerSetVisible(sprite.AsNullable(), layer, true); + _sprite.LayerSetAutoAnimated(sprite.AsNullable(), layer, true); + _sprite.LayerSetRsiState(sprite.AsNullable(), layer, state); } } diff --git a/Content.Client/Buckle/BuckleSystem.cs b/Content.Client/Buckle/BuckleSystem.cs index 748f15922f..536c60ed7a 100644 --- a/Content.Client/Buckle/BuckleSystem.cs +++ b/Content.Client/Buckle/BuckleSystem.cs @@ -13,6 +13,7 @@ internal sealed class BuckleSystem : SharedBuckleSystem [Dependency] private readonly RotationVisualizerSystem _rotationVisualizerSystem = default!; [Dependency] private readonly IEyeManager _eye = default!; [Dependency] private readonly SharedTransformSystem _xformSystem = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -69,11 +70,11 @@ internal sealed class BuckleSystem : SharedBuckleSystem { // This will only assign if empty, it won't get overwritten by new depth on multiple calls, which do happen easily buckle.OriginalDrawDepth ??= buckledSprite.DrawDepth; - buckledSprite.DrawDepth = strapSprite.DrawDepth - 1; + _sprite.SetDrawDepth((buckledEntity, buckledSprite), strapSprite.DrawDepth - 1); } else if (buckle.OriginalDrawDepth.HasValue) { - buckledSprite.DrawDepth = buckle.OriginalDrawDepth.Value; + _sprite.SetDrawDepth((buckledEntity, buckledSprite), buckle.OriginalDrawDepth.Value); buckle.OriginalDrawDepth = null; } } @@ -97,7 +98,7 @@ internal sealed class BuckleSystem : SharedBuckleSystem return; ent.Comp.OriginalDrawDepth ??= buckledSprite.DrawDepth; - buckledSprite.DrawDepth = strapSprite.DrawDepth - 1; + _sprite.SetDrawDepth((ent.Owner, buckledSprite), strapSprite.DrawDepth - 1); } /// @@ -111,7 +112,7 @@ internal sealed class BuckleSystem : SharedBuckleSystem if (!ent.Comp.OriginalDrawDepth.HasValue) return; - buckledSprite.DrawDepth = ent.Comp.OriginalDrawDepth.Value; + _sprite.SetDrawDepth((ent.Owner, buckledSprite), ent.Comp.OriginalDrawDepth.Value); ent.Comp.OriginalDrawDepth = null; } diff --git a/Content.Client/Clock/ClockSystem.cs b/Content.Client/Clock/ClockSystem.cs index 7097ada9df..bbd86a2ef3 100644 --- a/Content.Client/Clock/ClockSystem.cs +++ b/Content.Client/Clock/ClockSystem.cs @@ -5,6 +5,8 @@ namespace Content.Client.Clock; public sealed class ClockSystem : SharedClockSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + public override void Update(float frameTime) { base.Update(frameTime); @@ -12,15 +14,15 @@ public sealed class ClockSystem : SharedClockSystem var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var comp, out var sprite)) { - if (!sprite.LayerMapTryGet(ClockVisualLayers.HourHand, out var hourLayer) || - !sprite.LayerMapTryGet(ClockVisualLayers.MinuteHand, out var minuteLayer)) + if (!_sprite.LayerMapTryGet((uid, sprite), ClockVisualLayers.HourHand, out var hourLayer, false) || + !_sprite.LayerMapTryGet((uid, sprite), ClockVisualLayers.MinuteHand, out var minuteLayer, false)) continue; var time = GetClockTime((uid, comp)); var hourState = $"{comp.HoursBase}{time.Hours % 12}"; var minuteState = $"{comp.MinutesBase}{time.Minutes / 5}"; - sprite.LayerSetState(hourLayer, hourState); - sprite.LayerSetState(minuteLayer, minuteState); + _sprite.LayerSetRsiState((uid, sprite), hourLayer, hourState); + _sprite.LayerSetRsiState((uid, sprite), minuteLayer, minuteState); } } } diff --git a/Content.Client/Cuffs/CuffableSystem.cs b/Content.Client/Cuffs/CuffableSystem.cs index aa5ff81f8a..1056778712 100644 --- a/Content.Client/Cuffs/CuffableSystem.cs +++ b/Content.Client/Cuffs/CuffableSystem.cs @@ -4,12 +4,14 @@ using Content.Shared.Cuffs.Components; using Content.Shared.Humanoid; using Robust.Client.GameObjects; using Robust.Shared.GameStates; +using Robust.Shared.Utility; namespace Content.Client.Cuffs; public sealed class CuffableSystem : SharedCuffableSystem { [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -22,7 +24,7 @@ public sealed class CuffableSystem : SharedCuffableSystem private void OnCuffableShutdown(EntityUid uid, CuffableComponent component, ComponentShutdown args) { if (TryComp(uid, out var sprite)) - sprite.LayerSetVisible(HumanoidVisualLayers.Handcuffs, false); + _sprite.LayerSetVisible((uid, sprite), HumanoidVisualLayers.Handcuffs, false); } private void OnCuffableHandleState(EntityUid uid, CuffableComponent component, ref ComponentHandleState args) @@ -39,22 +41,22 @@ public sealed class CuffableSystem : SharedCuffableSystem if (!TryComp(uid, out var sprite)) return; var cuffed = cuffState.NumHandsCuffed > 0; - sprite.LayerSetVisible(HumanoidVisualLayers.Handcuffs, cuffed); + _sprite.LayerSetVisible((uid, sprite), HumanoidVisualLayers.Handcuffs, cuffed); // if they are not cuffed, that means that we didn't get a valid color, // iconstate, or RSI. that also means we don't need to update the sprites. if (!cuffed) return; - sprite.LayerSetColor(HumanoidVisualLayers.Handcuffs, cuffState.Color!.Value); + _sprite.LayerSetColor((uid, sprite), HumanoidVisualLayers.Handcuffs, cuffState.Color!.Value); if (!Equals(component.CurrentRSI, cuffState.RSI) && cuffState.RSI != null) // we don't want to keep loading the same RSI { component.CurrentRSI = cuffState.RSI; - sprite.LayerSetState(HumanoidVisualLayers.Handcuffs, cuffState.IconState, component.CurrentRSI); + _sprite.LayerSetRsi((uid, sprite), _sprite.LayerMapGet((uid, sprite), HumanoidVisualLayers.Handcuffs), new ResPath(component.CurrentRSI), cuffState.IconState); } else { - sprite.LayerSetState(HumanoidVisualLayers.Handcuffs, cuffState.IconState); + _sprite.LayerSetRsiState((uid, sprite), HumanoidVisualLayers.Handcuffs, cuffState.IconState); } } } diff --git a/Content.Client/Doors/DoorSystem.cs b/Content.Client/Doors/DoorSystem.cs index 5e3de813d6..cb17cfaf21 100644 --- a/Content.Client/Doors/DoorSystem.cs +++ b/Content.Client/Doors/DoorSystem.cs @@ -11,6 +11,7 @@ public sealed class DoorSystem : SharedDoorSystem { [Dependency] private readonly AnimationPlayerSystem _animationSystem = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -85,7 +86,7 @@ public sealed class DoorSystem : SharedDoorSystem state = DoorState.Closed; if (AppearanceSystem.TryGetData(entity, DoorVisuals.BaseRSI, out var baseRsi, args.Component)) - UpdateSpriteLayers(args.Sprite, baseRsi); + UpdateSpriteLayers((entity.Owner, args.Sprite), baseRsi); if (_animationSystem.HasRunningAnimation(entity, DoorComponent.AnimationKey)) _animationSystem.Stop(entity.Owner, DoorComponent.AnimationKey); @@ -95,21 +96,21 @@ public sealed class DoorSystem : SharedDoorSystem private void UpdateAppearanceForDoorState(Entity entity, SpriteComponent sprite, DoorState state) { - sprite.DrawDepth = state is DoorState.Open ? entity.Comp.OpenDrawDepth : entity.Comp.ClosedDrawDepth; + _sprite.SetDrawDepth((entity.Owner, sprite), state is DoorState.Open ? entity.Comp.OpenDrawDepth : entity.Comp.ClosedDrawDepth); switch (state) { case DoorState.Open: foreach (var (layer, layerState) in entity.Comp.OpenSpriteStates) { - sprite.LayerSetState(layer, layerState); + _sprite.LayerSetRsiState((entity.Owner, sprite), layer, layerState); } return; case DoorState.Closed: foreach (var (layer, layerState) in entity.Comp.ClosedSpriteStates) { - sprite.LayerSetState(layer, layerState); + _sprite.LayerSetRsiState((entity.Owner, sprite), layer, layerState); } return; @@ -138,7 +139,7 @@ public sealed class DoorSystem : SharedDoorSystem } } - private void UpdateSpriteLayers(SpriteComponent sprite, string baseRsi) + private void UpdateSpriteLayers(Entity sprite, string baseRsi) { if (!_resourceCache.TryGetResource(SpriteSpecifierSerializer.TextureRoot / baseRsi, out var res)) { @@ -146,6 +147,6 @@ public sealed class DoorSystem : SharedDoorSystem return; } - sprite.BaseRSI = res.RSI; + _sprite.SetBaseRsi(sprite.AsNullable(), res.RSI); } } diff --git a/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs b/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs index 452e70b5a3..11ccc86550 100644 --- a/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs +++ b/Content.Client/Light/EntitySystems/EmergencyLightSystem.cs @@ -6,6 +6,8 @@ namespace Content.Client.Light.EntitySystems; public sealed class EmergencyLightSystem : VisualizerSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + protected override void OnAppearanceChange(EntityUid uid, EmergencyLightComponent comp, ref AppearanceChangeEvent args) { if (args.Sprite == null) @@ -14,13 +16,13 @@ public sealed class EmergencyLightSystem : VisualizerSystem(uid, EmergencyLightVisuals.On, out var on, args.Component)) on = false; - args.Sprite.LayerSetVisible(EmergencyLightVisualLayers.LightOff, !on); - args.Sprite.LayerSetVisible(EmergencyLightVisualLayers.LightOn, on); + _sprite.LayerSetVisible((uid, args.Sprite), EmergencyLightVisualLayers.LightOff, !on); + _sprite.LayerSetVisible((uid, args.Sprite), EmergencyLightVisualLayers.LightOn, on); if (AppearanceSystem.TryGetData(uid, EmergencyLightVisuals.Color, out var color, args.Component)) { - args.Sprite.LayerSetColor(EmergencyLightVisualLayers.LightOn, color); - args.Sprite.LayerSetColor(EmergencyLightVisualLayers.LightOff, color); + _sprite.LayerSetColor((uid, args.Sprite), EmergencyLightVisualLayers.LightOn, color); + _sprite.LayerSetColor((uid, args.Sprite), EmergencyLightVisualLayers.LightOff, color); } } } diff --git a/Content.Client/Light/EntitySystems/LightBulbSystem.cs b/Content.Client/Light/EntitySystems/LightBulbSystem.cs index 09cf3780e2..099a8fa76d 100644 --- a/Content.Client/Light/EntitySystems/LightBulbSystem.cs +++ b/Content.Client/Light/EntitySystems/LightBulbSystem.cs @@ -5,6 +5,8 @@ namespace Content.Client.Light.Visualizers; public sealed class LightBulbSystem : VisualizerSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + protected override void OnAppearanceChange(EntityUid uid, LightBulbComponent comp, ref AppearanceChangeEvent args) { if (args.Sprite == null) @@ -16,13 +18,13 @@ public sealed class LightBulbSystem : VisualizerSystem switch (state) { case LightBulbState.Normal: - args.Sprite.LayerSetState(LightBulbVisualLayers.Base, comp.NormalSpriteState); + _sprite.LayerSetRsiState((uid, args.Sprite), LightBulbVisualLayers.Base, comp.NormalSpriteState); break; case LightBulbState.Broken: - args.Sprite.LayerSetState(LightBulbVisualLayers.Base, comp.BrokenSpriteState); + _sprite.LayerSetRsiState((uid, args.Sprite), LightBulbVisualLayers.Base, comp.BrokenSpriteState); break; case LightBulbState.Burned: - args.Sprite.LayerSetState(LightBulbVisualLayers.Base, comp.BurnedSpriteState); + _sprite.LayerSetRsiState((uid, args.Sprite), LightBulbVisualLayers.Base, comp.BurnedSpriteState); break; } } @@ -30,7 +32,7 @@ public sealed class LightBulbSystem : VisualizerSystem // also update sprites color if (AppearanceSystem.TryGetData(uid, LightBulbVisuals.Color, out var color, args.Component)) { - args.Sprite.Color = color; + _sprite.SetColor((uid, args.Sprite), color); } } } diff --git a/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs b/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs index c07742462b..ba83e69af7 100644 --- a/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs +++ b/Content.Client/Light/Visualizers/PoweredLightVisualizerSystem.cs @@ -11,6 +11,7 @@ public sealed class PoweredLightVisualizerSystem : VisualizerSystem(uid, out var light)) { - args.Sprite.LayerSetColor(PoweredLightLayers.Glow, light.Color); + _sprite.LayerSetColor((uid, args.Sprite), PoweredLightLayers.Glow, light.Color); } - args.Sprite.LayerSetVisible(PoweredLightLayers.Glow, state == PoweredLightState.On); + _sprite.LayerSetVisible((uid, args.Sprite), PoweredLightLayers.Glow, state == PoweredLightState.On); } SetBlinkingAnimation( @@ -56,7 +57,7 @@ public sealed class PoweredLightVisualizerSystem : VisualizerSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + protected override void OnAppearanceChange(EntityUid uid, PaperVisualsComponent component, ref AppearanceChangeEvent args) { if (args.Sprite == null) return; if (AppearanceSystem.TryGetData(uid, PaperVisuals.Status, out var writingStatus, args.Component)) - args.Sprite.LayerSetVisible(PaperVisualLayers.Writing, writingStatus == PaperStatus.Written); + _sprite.LayerSetVisible((uid, args.Sprite), PaperVisualLayers.Writing, writingStatus == PaperStatus.Written); if (AppearanceSystem.TryGetData(uid, PaperVisuals.Stamp, out var stampState, args.Component)) { if (stampState != string.Empty) { - args.Sprite.LayerSetState(PaperVisualLayers.Stamp, stampState); - args.Sprite.LayerSetVisible(PaperVisualLayers.Stamp, true); + _sprite.LayerSetRsiState((uid, args.Sprite), PaperVisualLayers.Stamp, stampState); + _sprite.LayerSetVisible((uid, args.Sprite), PaperVisualLayers.Stamp, true); } else { - args.Sprite.LayerSetVisible(PaperVisualLayers.Stamp, false); + _sprite.LayerSetVisible((uid, args.Sprite), PaperVisualLayers.Stamp, false); } } diff --git a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs index bcfcc64e21..0f27da360c 100644 --- a/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs +++ b/Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.Singularity.Components; using Robust.Client.GameObjects; @@ -6,12 +5,14 @@ namespace Content.Client.ParticleAccelerator; public sealed class ParticleAcceleratorPartVisualizerSystem : VisualizerSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + protected override void OnAppearanceChange(EntityUid uid, ParticleAcceleratorPartVisualsComponent comp, ref AppearanceChangeEvent args) { if (args.Sprite == null) return; - if (!args.Sprite.LayerMapTryGet(ParticleAcceleratorVisualLayers.Unlit, out var index)) + if (!_sprite.LayerMapTryGet((uid, args.Sprite), ParticleAcceleratorVisualLayers.Unlit, out var index, false)) return; if (!AppearanceSystem.TryGetData(uid, ParticleAcceleratorVisuals.VisualState, out var state, args.Component)) @@ -21,12 +22,12 @@ public sealed class ParticleAcceleratorPartVisualizerSystem : VisualizerSystem

(uid, PowerCellVisuals.ChargeLevel, out var level, args.Component)) { if (level == 0) { - unshadedLayer.Visible = false; + _sprite.LayerSetVisible((uid, args.Sprite), PowerCellVisualLayers.Unshaded, false); return; } - unshadedLayer.Visible = true; - args.Sprite.LayerSetState(PowerCellVisualLayers.Unshaded, $"o{level}"); + _sprite.LayerSetVisible((uid, args.Sprite), PowerCellVisualLayers.Unshaded, false); + _sprite.LayerSetRsiState((uid, args.Sprite), PowerCellVisualLayers.Unshaded, $"o{level}"); } } diff --git a/Content.Client/Sprite/RandomSpriteSystem.cs b/Content.Client/Sprite/RandomSpriteSystem.cs index c4aa43a65b..bd87705a3e 100644 --- a/Content.Client/Sprite/RandomSpriteSystem.cs +++ b/Content.Client/Sprite/RandomSpriteSystem.cs @@ -11,6 +11,7 @@ public sealed class RandomSpriteSystem : SharedRandomSpriteSystem { [Dependency] private readonly IReflectionManager _reflection = default!; [Dependency] private readonly ClientClothingSystem _clothing = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -63,10 +64,10 @@ public sealed class RandomSpriteSystem : SharedRandomSpriteSystem int index; if (_reflection.TryParseEnumReference(layer.Key, out var @enum)) { - if (!sprite.LayerMapTryGet(@enum, out index, logError: true)) + if (!_sprite.LayerMapTryGet((uid, sprite), @enum, out index, logMissing: true)) continue; } - else if (!sprite.LayerMapTryGet(layer.Key, out index)) + else if (!_sprite.LayerMapTryGet((uid, sprite), layer.Key, out index, false)) { if (layer.Key is not { } strKey || !int.TryParse(strKey, out index)) { @@ -74,8 +75,8 @@ public sealed class RandomSpriteSystem : SharedRandomSpriteSystem continue; } } - sprite.LayerSetState(index, layer.Value.State); - sprite.LayerSetColor(index, layer.Value.Color ?? Color.White); + _sprite.LayerSetRsiState((uid, sprite), index, layer.Value.State); + _sprite.LayerSetColor((uid, sprite), index, layer.Value.Color ?? Color.White); } } } diff --git a/Content.Client/Storage/Systems/ItemCounterSystem.cs b/Content.Client/Storage/Systems/ItemCounterSystem.cs index fcb1ca17dc..25a93abdbc 100644 --- a/Content.Client/Storage/Systems/ItemCounterSystem.cs +++ b/Content.Client/Storage/Systems/ItemCounterSystem.cs @@ -10,6 +10,7 @@ namespace Content.Client.Storage.Systems; public sealed class ItemCounterSystem : SharedItemCounterSystem { [Dependency] private readonly AppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -41,23 +42,23 @@ public sealed class ItemCounterSystem : SharedItemCounterSystem public void ProcessOpaqueSprite(EntityUid uid, string layer, int count, int maxCount, List states, bool hide = false, SpriteComponent? sprite = null) { if (!Resolve(uid, ref sprite) - || !sprite.LayerMapTryGet(layer, out var layerKey, logError: true)) + || !_sprite.LayerMapTryGet((uid, sprite), layer, out var layerKey, logMissing: true)) return; - + var activeState = ContentHelpers.RoundToEqualLevels(count, maxCount, states.Count); - sprite.LayerSetState(layerKey, states[activeState]); - sprite.LayerSetVisible(layerKey, !hide); + _sprite.LayerSetRsiState((uid, sprite), layerKey, states[activeState]); + _sprite.LayerSetVisible((uid, sprite), layerKey, !hide); } public void ProcessCompositeSprite(EntityUid uid, int count, int maxCount, List layers, bool hide = false, SpriteComponent? sprite = null) { - if(!Resolve(uid, ref sprite)) + if (!Resolve(uid, ref sprite)) return; - + var activeTill = ContentHelpers.RoundToNearestLevels(count, maxCount, layers.Count); - for(var i = 0; i < layers.Count; ++i) + for (var i = 0; i < layers.Count; ++i) { - sprite.LayerSetVisible(layers[i], !hide && i < activeTill); + _sprite.LayerSetVisible((uid, sprite), layers[i], !hide && i < activeTill); } } diff --git a/Content.Client/Storage/Systems/ItemMapperSystem.cs b/Content.Client/Storage/Systems/ItemMapperSystem.cs index 79fbc96491..aecede645b 100644 --- a/Content.Client/Storage/Systems/ItemMapperSystem.cs +++ b/Content.Client/Storage/Systems/ItemMapperSystem.cs @@ -9,6 +9,7 @@ namespace Content.Client.Storage.Systems; public sealed class ItemMapperSystem : SharedItemMapperSystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -48,9 +49,9 @@ public sealed class ItemMapperSystem : SharedItemMapperSystem foreach (var sprite in component.SpriteLayers) { - spriteComponent.LayerMapReserveBlank(sprite); - spriteComponent.LayerSetSprite(sprite, new SpriteSpecifier.Rsi(component.RSIPath!.Value, sprite)); - spriteComponent.LayerSetVisible(sprite, false); + _sprite.LayerMapReserve((owner, spriteComponent), sprite); + _sprite.LayerSetSprite((owner, spriteComponent), sprite, new SpriteSpecifier.Rsi(component.RSIPath!.Value, sprite)); + _sprite.LayerSetVisible((owner, spriteComponent), sprite, false); } } @@ -63,7 +64,7 @@ public sealed class ItemMapperSystem : SharedItemMapperSystem foreach (var layerName in component.SpriteLayers) { var show = wrapper.QueuedEntities.Contains(layerName); - spriteComponent.LayerSetVisible(layerName, show); + _sprite.LayerSetVisible((owner, spriteComponent), layerName, show); } } } diff --git a/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs b/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs index a13d6cba22..4753b308aa 100644 --- a/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs +++ b/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs @@ -8,6 +8,8 @@ namespace Content.Client.Storage.Systems; /// public sealed class StorageContainerVisualsSystem : VisualizerSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + protected override void OnAppearanceChange(EntityUid uid, StorageContainerVisualsComponent component, ref AppearanceChangeEvent args) { if (args.Sprite == null) @@ -19,9 +21,9 @@ public sealed class StorageContainerVisualsSystem : VisualizerSystem(uid, StorageVisuals.Capacity, out var capacity, args.Component)) return; - var fraction = used / (float) capacity; + var fraction = used / (float)capacity; - if (!args.Sprite.LayerMapTryGet(component.FillLayer, out var fillLayer)) + if (!_sprite.LayerMapTryGet((uid, args.Sprite), component.FillLayer, out var fillLayer, false)) return; var closestFillSprite = Math.Min(ContentHelpers.RoundToNearestLevels(fraction, 1, component.MaxFillLevels + 1), @@ -32,13 +34,13 @@ public sealed class StorageContainerVisualsSystem : VisualizerSystem 0); - sprite.LayerSetVisible(PowerDeviceVisualLayers.Powered, HasAmmo(ent) && targetState == DeployableTurretState.Retracted); + _sprite.LayerSetVisible((ent.Owner, sprite), DeployableTurretVisuals.Weapon, (targetState & DeployableTurretState.Deployed) > 0); + _sprite.LayerSetVisible((ent.Owner, sprite), PowerDeviceVisualLayers.Powered, HasAmmo(ent) && targetState == DeployableTurretState.Retracted); // Change the visual state switch (targetState) @@ -110,11 +111,11 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste break; case DeployableTurretState.Deployed: - sprite.LayerSetState(DeployableTurretVisuals.Turret, ent.Comp.DeployedState); + _sprite.LayerSetRsiState((ent.Owner, sprite), DeployableTurretVisuals.Turret, ent.Comp.DeployedState); break; case DeployableTurretState.Retracted: - sprite.LayerSetState(DeployableTurretVisuals.Turret, ent.Comp.RetractedState); + _sprite.LayerSetRsiState((ent.Owner, sprite), DeployableTurretVisuals.Turret, ent.Comp.RetractedState); break; } } diff --git a/Content.Client/Weapons/Marker/DamageMarkerSystem.cs b/Content.Client/Weapons/Marker/DamageMarkerSystem.cs index 43ef216af7..bdd95305de 100644 --- a/Content.Client/Weapons/Marker/DamageMarkerSystem.cs +++ b/Content.Client/Weapons/Marker/DamageMarkerSystem.cs @@ -7,6 +7,7 @@ namespace Content.Client.Weapons.Marker; public sealed class DamageMarkerSystem : SharedDamageMarkerSystem { [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -20,16 +21,16 @@ public sealed class DamageMarkerSystem : SharedDamageMarkerSystem if (!_timing.ApplyingState || component.Effect == null || !TryComp(uid, out var sprite)) return; - var layer = sprite.LayerMapReserveBlank(DamageMarkerKey.Key); - sprite.LayerSetState(layer, component.Effect.RsiState, component.Effect.RsiPath); + var layer = _sprite.LayerMapReserve((uid, sprite), DamageMarkerKey.Key); + _sprite.LayerSetRsi((uid, sprite), layer, component.Effect.RsiPath, component.Effect.RsiState); } private void OnMarkerShutdown(EntityUid uid, DamageMarkerComponent component, ComponentShutdown args) { - if (!_timing.ApplyingState || !TryComp(uid, out var sprite) || !sprite.LayerMapTryGet(DamageMarkerKey.Key, out var weh)) + if (!_timing.ApplyingState || !TryComp(uid, out var sprite) || !_sprite.LayerMapTryGet((uid, sprite), DamageMarkerKey.Key, out var weh, false)) return; - sprite.RemoveLayer(weh); + _sprite.RemoveLayer((uid, sprite), weh); } private enum DamageMarkerKey : byte