1
0

BlurryVisionSystem.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Content.Shared.Eye.Blinding.Components;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.Player;
  4. using Robust.Shared.Player;
  5. namespace Content.Client.Eye.Blinding;
  6. public sealed class BlurryVisionSystem : EntitySystem
  7. {
  8. [Dependency] private readonly IPlayerManager _player = default!;
  9. [Dependency] private readonly IOverlayManager _overlayMan = default!;
  10. private BlurryVisionOverlay _overlay = default!;
  11. public override void Initialize()
  12. {
  13. base.Initialize();
  14. SubscribeLocalEvent<BlurryVisionComponent, ComponentInit>(OnBlurryInit);
  15. SubscribeLocalEvent<BlurryVisionComponent, ComponentShutdown>(OnBlurryShutdown);
  16. SubscribeLocalEvent<BlurryVisionComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
  17. SubscribeLocalEvent<BlurryVisionComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
  18. _overlay = new();
  19. }
  20. private void OnPlayerAttached(EntityUid uid, BlurryVisionComponent component, LocalPlayerAttachedEvent args)
  21. {
  22. _overlayMan.AddOverlay(_overlay);
  23. }
  24. private void OnPlayerDetached(EntityUid uid, BlurryVisionComponent component, LocalPlayerDetachedEvent args)
  25. {
  26. _overlayMan.RemoveOverlay(_overlay);
  27. }
  28. private void OnBlurryInit(EntityUid uid, BlurryVisionComponent component, ComponentInit args)
  29. {
  30. if (_player.LocalEntity == uid)
  31. _overlayMan.AddOverlay(_overlay);
  32. }
  33. private void OnBlurryShutdown(EntityUid uid, BlurryVisionComponent component, ComponentShutdown args)
  34. {
  35. if (_player.LocalEntity == uid)
  36. {
  37. _overlayMan.RemoveOverlay(_overlay);
  38. }
  39. }
  40. }