SharedHolopadSystem.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Robust.Shared.Timing;
  2. namespace Content.Shared.Holopad;
  3. public abstract class SharedHolopadSystem : EntitySystem
  4. {
  5. [Dependency] private readonly IGameTiming _timing = default!;
  6. public bool IsHolopadControlLocked(Entity<HolopadComponent> entity, EntityUid? user = null)
  7. {
  8. if (entity.Comp.ControlLockoutStartTime == TimeSpan.Zero)
  9. return false;
  10. if (entity.Comp.ControlLockoutStartTime + TimeSpan.FromSeconds(entity.Comp.ControlLockoutDuration) < _timing.CurTime)
  11. return false;
  12. if (entity.Comp.ControlLockoutOwner == null || entity.Comp.ControlLockoutOwner == user)
  13. return false;
  14. return true;
  15. }
  16. public TimeSpan GetHolopadControlLockedPeriod(Entity<HolopadComponent> entity)
  17. {
  18. return entity.Comp.ControlLockoutStartTime + TimeSpan.FromSeconds(entity.Comp.ControlLockoutDuration) - _timing.CurTime;
  19. }
  20. public bool IsHolopadBroadcastOnCoolDown(Entity<HolopadComponent> entity)
  21. {
  22. if (entity.Comp.ControlLockoutStartTime == TimeSpan.Zero)
  23. return false;
  24. if (entity.Comp.ControlLockoutStartTime + TimeSpan.FromSeconds(entity.Comp.ControlLockoutCoolDown) < _timing.CurTime)
  25. return false;
  26. return true;
  27. }
  28. public TimeSpan GetHolopadBroadcastCoolDown(Entity<HolopadComponent> entity)
  29. {
  30. return entity.Comp.ControlLockoutStartTime + TimeSpan.FromSeconds(entity.Comp.ControlLockoutCoolDown) - _timing.CurTime;
  31. }
  32. }