1
0

KillSignSystem.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Numerics;
  2. using Content.Client.Administration.Components;
  3. using Robust.Client.GameObjects;
  4. using Robust.Shared.Utility;
  5. namespace Content.Client.Administration.Systems;
  6. public sealed class KillSignSystem : EntitySystem
  7. {
  8. public override void Initialize()
  9. {
  10. SubscribeLocalEvent<KillSignComponent, ComponentStartup>(KillSignAdded);
  11. SubscribeLocalEvent<KillSignComponent, ComponentShutdown>(KillSignRemoved);
  12. }
  13. private void KillSignRemoved(EntityUid uid, KillSignComponent component, ComponentShutdown args)
  14. {
  15. if (!TryComp<SpriteComponent>(uid, out var sprite))
  16. return;
  17. if (!sprite.LayerMapTryGet(KillSignKey.Key, out var layer))
  18. return;
  19. sprite.RemoveLayer(layer);
  20. }
  21. private void KillSignAdded(EntityUid uid, KillSignComponent component, ComponentStartup args)
  22. {
  23. if (!TryComp<SpriteComponent>(uid, out var sprite))
  24. return;
  25. if (sprite.LayerMapTryGet(KillSignKey.Key, out var _))
  26. return;
  27. var adj = sprite.Bounds.Height / 2 + ((1.0f/32) * 6.0f);
  28. var layer = sprite.AddLayer(new SpriteSpecifier.Rsi(new ResPath("Objects/Misc/killsign.rsi"), "sign"));
  29. sprite.LayerMapSet(KillSignKey.Key, layer);
  30. sprite.LayerSetOffset(layer, new Vector2(0.0f, adj));
  31. sprite.LayerSetShader(layer, "unshaded");
  32. }
  33. private enum KillSignKey
  34. {
  35. Key,
  36. }
  37. }