GhostKickManager.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Content.Shared.GhostKick;
  2. using Robust.Client;
  3. using Robust.Shared;
  4. using Robust.Shared.Configuration;
  5. using Robust.Shared.Network;
  6. namespace Content.Client.GhostKick;
  7. public sealed class GhostKickManager
  8. {
  9. private bool _fakeLossEnabled;
  10. [Dependency] private readonly IBaseClient _baseClient = default!;
  11. [Dependency] private readonly IClientNetManager _netManager = default!;
  12. [Dependency] private readonly IConfigurationManager _cfg = default!;
  13. public void Initialize()
  14. {
  15. _netManager.RegisterNetMessage<MsgGhostKick>(RxCallback);
  16. _baseClient.RunLevelChanged += BaseClientOnRunLevelChanged;
  17. }
  18. private void BaseClientOnRunLevelChanged(object? sender, RunLevelChangedEventArgs e)
  19. {
  20. if (_fakeLossEnabled && e.OldLevel == ClientRunLevel.InGame)
  21. {
  22. _cfg.SetCVar(CVars.NetFakeLoss, 0);
  23. _fakeLossEnabled = false;
  24. }
  25. }
  26. private void RxCallback(MsgGhostKick message)
  27. {
  28. _fakeLossEnabled = true;
  29. _cfg.SetCVar(CVars.NetFakeLoss, 1);
  30. }
  31. }