StickyVisualizerSystem.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Content.Shared.Sticky.Components;
  2. using Robust.Client.GameObjects;
  3. namespace Content.Client.Sticky.Visualizers;
  4. public sealed class StickyVisualizerSystem : VisualizerSystem<StickyVisualizerComponent>
  5. {
  6. private EntityQuery<SpriteComponent> _spriteQuery;
  7. public override void Initialize()
  8. {
  9. base.Initialize();
  10. _spriteQuery = GetEntityQuery<SpriteComponent>();
  11. SubscribeLocalEvent<StickyVisualizerComponent, ComponentInit>(OnInit);
  12. }
  13. private void OnInit(Entity<StickyVisualizerComponent> ent, ref ComponentInit args)
  14. {
  15. if (!_spriteQuery.TryComp(ent, out var sprite))
  16. return;
  17. ent.Comp.OriginalDrawDepth = sprite.DrawDepth;
  18. }
  19. protected override void OnAppearanceChange(EntityUid uid, StickyVisualizerComponent comp, ref AppearanceChangeEvent args)
  20. {
  21. if (args.Sprite == null)
  22. return;
  23. if (!AppearanceSystem.TryGetData<bool>(uid, StickyVisuals.IsStuck, out var isStuck, args.Component))
  24. return;
  25. var drawDepth = isStuck ? comp.StuckDrawDepth : comp.OriginalDrawDepth;
  26. args.Sprite.DrawDepth = drawDepth;
  27. }
  28. }