diff --git a/Content.Client/BarSign/BarSignSystem.cs b/Content.Client/BarSign/BarSignSystem.cs index 9fd8ba2e4b..02e33861b7 100644 --- a/Content.Client/BarSign/BarSignSystem.cs +++ b/Content.Client/BarSign/BarSignSystem.cs @@ -41,12 +41,12 @@ public sealed class BarSignSystem : VisualizerSystem && sign.Current != null && _prototypeManager.TryIndex(sign.Current, out var proto)) { - sprite.LayerSetSprite(0, proto.Icon); + SpriteSystem.LayerSetSprite((id, sprite), 0, proto.Icon); sprite.LayerSetShader(0, "unshaded"); } else { - sprite.LayerSetState(0, "empty"); + SpriteSystem.LayerSetRsiState((id, sprite), 0, "empty"); sprite.LayerSetShader(0, null, null); } } diff --git a/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs b/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs index 1f09ae9eeb..d6e4508f54 100644 --- a/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs +++ b/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs @@ -32,7 +32,7 @@ public sealed class FlippableClothingVisualizerSystem : VisualizerSystem(ent, FoldableSystem.FoldedVisuals.State, out var folding) || - !sprite.LayerMapTryGet(folding ? ent.Comp.FoldingLayer : ent.Comp.UnfoldingLayer, out var idx)) + !SpriteSystem.LayerMapTryGet((ent.Owner, sprite), folding ? ent.Comp.FoldingLayer : ent.Comp.UnfoldingLayer, out var idx, false)) return; // add each layer to the visuals diff --git a/Content.Client/Construction/FlatpackSystem.cs b/Content.Client/Construction/FlatpackSystem.cs index f39c2327ca..7d9b5faaa2 100644 --- a/Content.Client/Construction/FlatpackSystem.cs +++ b/Content.Client/Construction/FlatpackSystem.cs @@ -9,6 +9,7 @@ namespace Content.Client.Construction; public sealed class FlatpackSystem : SharedFlatpackSystem { [Dependency] private readonly AppearanceSystem _appearance = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; /// public override void Initialize() @@ -43,6 +44,6 @@ public sealed class FlatpackSystem : SharedFlatpackSystem } if (color != null) - args.Sprite.LayerSetColor(FlatpackVisualLayers.Overlay, color.Value); + _sprite.LayerSetColor((ent.Owner, args.Sprite), FlatpackVisualLayers.Overlay, color.Value); } } diff --git a/Content.Client/Explosion/ClusterGrenadeVisualizerSystem.cs b/Content.Client/Explosion/ClusterGrenadeVisualizerSystem.cs index c8171742dc..025d72270e 100644 --- a/Content.Client/Explosion/ClusterGrenadeVisualizerSystem.cs +++ b/Content.Client/Explosion/ClusterGrenadeVisualizerSystem.cs @@ -12,6 +12,6 @@ public sealed class ClusterGrenadeVisualizerSystem : VisualizerSystem(uid, ClusterGrenadeVisuals.GrenadesCounter, out var grenadesCounter, args.Component)) - args.Sprite.LayerSetState(0, $"{comp.State}-{grenadesCounter}"); + SpriteSystem.LayerSetRsiState((uid, args.Sprite), 0, $"{comp.State}-{grenadesCounter}"); } } diff --git a/Content.Client/Materials/RecyclerVisualizerSystem.cs b/Content.Client/Materials/RecyclerVisualizerSystem.cs index 646ae406aa..9c6006c5de 100644 --- a/Content.Client/Materials/RecyclerVisualizerSystem.cs +++ b/Content.Client/Materials/RecyclerVisualizerSystem.cs @@ -8,7 +8,7 @@ public sealed class RecyclerVisualizerSystem : VisualizerSystem(uid, ConveyorVisuals.State, out var running); @@ -22,6 +22,6 @@ public sealed class RecyclerVisualizerSystem : VisualizerSystem(uid, MechAssemblyVisuals.State, out var stage, args.Component)) return; var state = component.StatePrefix + stage; - - args.Sprite?.LayerSetState(0, state); + SpriteSystem.LayerSetRsiState((uid, args.Sprite), 0, state); } } diff --git a/Content.Client/Mining/MiningOverlay.cs b/Content.Client/Mining/MiningOverlay.cs index b23835b36e..f4140f064f 100644 --- a/Content.Client/Mining/MiningOverlay.cs +++ b/Content.Client/Mining/MiningOverlay.cs @@ -62,7 +62,7 @@ public sealed class MiningOverlay : Overlay if (xform.MapID != args.MapId || !sprite.Visible) continue; - if (!sprite.LayerMapTryGet(MiningScannerVisualLayers.Overlay, out var idx)) + if (!_sprite.LayerMapTryGet((ore, sprite), MiningScannerVisualLayers.Overlay, out var idx, false)) continue; var layer = sprite[idx]; @@ -85,10 +85,10 @@ public sealed class MiningOverlay : Overlay var alpha = animTime < viewerComp.AnimationDuration ? 0 - : (float) Math.Clamp((animTime - viewerComp.AnimationDuration) / viewerComp.AnimationDuration, 0f, 1f); + : (float)Math.Clamp((animTime - viewerComp.AnimationDuration) / viewerComp.AnimationDuration, 0f, 1f); var color = Color.White.WithAlpha(alpha); - handle.DrawTexture(texture, -(Vector2) texture.Size / 2f / EyeManager.PixelsPerMeter, layer.Rotation, modulate: color); + handle.DrawTexture(texture, -(Vector2)texture.Size / 2f / EyeManager.PixelsPerMeter, layer.Rotation, modulate: color); } handle.SetTransform(Matrix3x2.Identity); diff --git a/Content.Client/Movement/Systems/ClientSpriteMovementSystem.cs b/Content.Client/Movement/Systems/ClientSpriteMovementSystem.cs index a6265204b7..eb60e4fbb6 100644 --- a/Content.Client/Movement/Systems/ClientSpriteMovementSystem.cs +++ b/Content.Client/Movement/Systems/ClientSpriteMovementSystem.cs @@ -9,6 +9,8 @@ namespace Content.Client.Movement.Systems; /// public sealed class ClientSpriteMovementSystem : SharedSpriteMovementSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + private EntityQuery _spriteQuery; public override void Initialize() @@ -29,14 +31,14 @@ public sealed class ClientSpriteMovementSystem : SharedSpriteMovementSystem { foreach (var (layer, state) in ent.Comp.MovementLayers) { - sprite.LayerSetData(layer, state); + _sprite.LayerSetData((ent.Owner, sprite), layer, state); } } else { foreach (var (layer, state) in ent.Comp.NoMovementLayers) { - sprite.LayerSetData(layer, state); + _sprite.LayerSetData((ent.Owner, sprite), layer, state); } } } diff --git a/Content.Client/Options/OptionsVisualizerSystem.cs b/Content.Client/Options/OptionsVisualizerSystem.cs index 2a297e3802..1876b9bf55 100644 --- a/Content.Client/Options/OptionsVisualizerSystem.cs +++ b/Content.Client/Options/OptionsVisualizerSystem.cs @@ -18,6 +18,7 @@ public sealed class OptionsVisualizerSystem : EntitySystem [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IReflectionManager _reflection = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; private OptionVisualizerOptions _currentOptions; @@ -55,9 +56,9 @@ public sealed class OptionsVisualizerSystem : EntitySystem private void UpdateAllComponents() { var query = EntityQueryEnumerator(); - while (query.MoveNext(out _, out var component, out var sprite)) + while (query.MoveNext(out var uid, out var component, out var sprite)) { - UpdateComponent(component, sprite); + UpdateComponent(uid, component, sprite); } } @@ -66,17 +67,13 @@ public sealed class OptionsVisualizerSystem : EntitySystem if (!TryComp(uid, out SpriteComponent? sprite)) return; - UpdateComponent(component, sprite); + UpdateComponent(uid, component, sprite); } - private void UpdateComponent(OptionsVisualizerComponent component, SpriteComponent sprite) + private void UpdateComponent(EntityUid uid, OptionsVisualizerComponent component, SpriteComponent sprite) { foreach (var (layerKeyRaw, layerData) in component.Visuals) { - object layerKey = _reflection.TryParseEnumReference(layerKeyRaw, out var @enum) - ? @enum - : layerKeyRaw; - OptionsVisualizerComponent.LayerDatum? matchedDatum = null; foreach (var datum in layerData) { @@ -89,8 +86,11 @@ public sealed class OptionsVisualizerSystem : EntitySystem if (matchedDatum == null) continue; - var layerIndex = sprite.LayerMapReserveBlank(layerKey); - sprite.LayerSetData(layerIndex, matchedDatum.Data); + var layerIndex = _reflection.TryParseEnumReference(layerKeyRaw, out var @enum) + ? _sprite.LayerMapReserve((uid, sprite), @enum) + : _sprite.LayerMapReserve((uid, sprite), layerKeyRaw); + + _sprite.LayerSetData((uid, sprite), layerIndex, matchedDatum.Data); } } } diff --git a/Content.Client/Pinpointer/PinpointerSystem.cs b/Content.Client/Pinpointer/PinpointerSystem.cs index 486241b56b..5cab063958 100644 --- a/Content.Client/Pinpointer/PinpointerSystem.cs +++ b/Content.Client/Pinpointer/PinpointerSystem.cs @@ -7,6 +7,7 @@ namespace Content.Client.Pinpointer; public sealed class PinpointerSystem : SharedPinpointerSystem { [Dependency] private readonly IEyeManager _eyeManager = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Update(float frameTime) { @@ -18,7 +19,7 @@ public sealed class PinpointerSystem : SharedPinpointerSystem // because eye can change it rotation anytime // we need to update this arrow in a update loop var query = EntityQueryEnumerator(); - while (query.MoveNext(out var _, out var pinpointer, out var sprite)) + while (query.MoveNext(out var uid, out var pinpointer, out var sprite)) { if (!pinpointer.HasTarget) continue; @@ -30,10 +31,10 @@ public sealed class PinpointerSystem : SharedPinpointerSystem case Distance.Close: case Distance.Medium: case Distance.Far: - sprite.LayerSetRotation(PinpointerLayers.Screen, angle); + _sprite.LayerSetRotation((uid, sprite), PinpointerLayers.Screen, angle); break; default: - sprite.LayerSetRotation(PinpointerLayers.Screen, Angle.Zero); + _sprite.LayerSetRotation((uid, sprite), PinpointerLayers.Screen, Angle.Zero); break; } } diff --git a/Content.Client/Stack/StackSystem.cs b/Content.Client/Stack/StackSystem.cs index 17e502675c..d12e9900a6 100644 --- a/Content.Client/Stack/StackSystem.cs +++ b/Content.Client/Stack/StackSystem.cs @@ -12,6 +12,7 @@ namespace Content.Client.Stack { [Dependency] private readonly AppearanceSystem _appearanceSystem = default!; [Dependency] private readonly ItemCounterSystem _counterSystem = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -37,7 +38,7 @@ namespace Content.Client.Stack for (var i = 0; i < sprite.AllLayers.Count(); i++) { - sprite.LayerSetColor(i, color); + _sprite.LayerSetColor((uid, sprite), i, color); } } @@ -107,7 +108,7 @@ namespace Content.Client.Stack /// The maximum possible number of items in the stack. Will be set to the number of selectable layers. private static void ApplyThreshold(StackLayerThresholdComponent comp, ref int actual, ref int maxCount) { - // We must stop before we run out of thresholds or layers, whichever's smaller. + // We must stop before we run out of thresholds or layers, whichever's smaller. maxCount = Math.Min(comp.Thresholds.Count + 1, maxCount); var newActual = 0; foreach (var threshold in comp.Thresholds) diff --git a/Content.Client/Tools/ToolSystem.cs b/Content.Client/Tools/ToolSystem.cs index 2207242918..39d6e67ac9 100644 --- a/Content.Client/Tools/ToolSystem.cs +++ b/Content.Client/Tools/ToolSystem.cs @@ -9,6 +9,8 @@ namespace Content.Client.Tools { public sealed class ToolSystem : SharedToolSystem { + [Dependency] private readonly SpriteSystem _sprite = default!; + public override void Initialize() { base.Initialize(); @@ -36,7 +38,7 @@ namespace Content.Client.Tools { var current = multiple.Entries[multiple.CurrentEntry]; if (current.Sprite != null) - sprite.LayerSetSprite(0, current.Sprite); + _sprite.LayerSetSprite((uid, sprite), 0, current.Sprite); } } } diff --git a/Content.Client/UserInterface/Systems/Alerts/Controls/AlertControl.cs b/Content.Client/UserInterface/Systems/Alerts/Controls/AlertControl.cs index 4e803a20b1..847b253586 100644 --- a/Content.Client/UserInterface/Systems/Alerts/Controls/AlertControl.cs +++ b/Content.Client/UserInterface/Systems/Alerts/Controls/AlertControl.cs @@ -14,6 +14,8 @@ namespace Content.Client.UserInterface.Systems.Alerts.Controls { [Dependency] private readonly IEntityManager _entityManager = default!; + private readonly SpriteSystem _sprite; + public AlertPrototype Alert { get; } /// @@ -52,6 +54,7 @@ namespace Content.Client.UserInterface.Systems.Alerts.Controls MuteSounds = true; IoCManager.InjectDependencies(this); + _sprite = _entityManager.System(); TooltipSupplier = SupplyTooltip; Alert = alert; _severity = severity; @@ -74,7 +77,7 @@ namespace Content.Client.UserInterface.Systems.Alerts.Controls { var msg = FormattedMessage.FromMarkupOrThrow(Loc.GetString(Alert.Name)); var desc = FormattedMessage.FromMarkupOrThrow(Loc.GetString(Alert.Description)); - return new ActionAlertTooltip(msg, desc) {Cooldown = Cooldown}; + return new ActionAlertTooltip(msg, desc) { Cooldown = Cooldown }; } /// @@ -89,8 +92,8 @@ namespace Content.Client.UserInterface.Systems.Alerts.Controls if (!_entityManager.TryGetComponent(_spriteViewEntity, out var sprite)) return; var icon = Alert.GetIcon(_severity); - if (sprite.LayerMapTryGet(AlertVisualLayers.Base, out var layer)) - sprite.LayerSetSprite(layer, icon); + if (_sprite.LayerMapTryGet((_spriteViewEntity, sprite), AlertVisualLayers.Base, out var layer, false)) + _sprite.LayerSetSprite((_spriteViewEntity, sprite), layer, icon); } protected override void FrameUpdate(FrameEventArgs args) @@ -117,8 +120,8 @@ namespace Content.Client.UserInterface.Systems.Alerts.Controls if (_entityManager.TryGetComponent(_spriteViewEntity, out var sprite)) { var icon = Alert.GetIcon(_severity); - if (sprite.LayerMapTryGet(AlertVisualLayers.Base, out var layer)) - sprite.LayerSetSprite(layer, icon); + if (_sprite.LayerMapTryGet((_spriteViewEntity, sprite), AlertVisualLayers.Base, out var layer, false)) + _sprite.LayerSetSprite((_spriteViewEntity, sprite), layer, icon); } _icon.SetEntity(_spriteViewEntity); diff --git a/Content.Client/Zombies/ZombieSystem.cs b/Content.Client/Zombies/ZombieSystem.cs index d250e41850..822f116e47 100644 --- a/Content.Client/Zombies/ZombieSystem.cs +++ b/Content.Client/Zombies/ZombieSystem.cs @@ -12,6 +12,7 @@ namespace Content.Client.Zombies; public sealed class ZombieSystem : SharedZombieSystem { [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { @@ -47,7 +48,7 @@ public sealed class ZombieSystem : SharedZombieSystem for (var i = 0; i < sprite.AllLayers.Count(); i++) { - sprite.LayerSetColor(i, component.SkinColor); + _sprite.LayerSetColor((uid, sprite), i, component.SkinColor); } } }