1
0

MetabolismMovespeedModifierSystem.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Content.Shared.Chemistry.Components;
  2. using Content.Shared.Movement.Systems;
  3. using Robust.Shared.Timing;
  4. namespace Content.Shared.Chemistry
  5. {
  6. // TODO CONVERT THIS TO A STATUS EFFECT!!!!!!!!!!!!!!!!!!!!!!!!
  7. public sealed class MetabolismMovespeedModifierSystem : EntitySystem
  8. {
  9. [Dependency] private readonly IGameTiming _gameTiming = default!;
  10. [Dependency] private readonly MovementSpeedModifierSystem _movespeed = default!;
  11. private readonly List<Entity<MovespeedModifierMetabolismComponent>> _components = new();
  12. public override void Initialize()
  13. {
  14. base.Initialize();
  15. UpdatesOutsidePrediction = true;
  16. SubscribeLocalEvent<MovespeedModifierMetabolismComponent, ComponentStartup>(AddComponent);
  17. SubscribeLocalEvent<MovespeedModifierMetabolismComponent, RefreshMovementSpeedModifiersEvent>(OnRefreshMovespeed);
  18. }
  19. private void OnRefreshMovespeed(EntityUid uid, MovespeedModifierMetabolismComponent component, RefreshMovementSpeedModifiersEvent args)
  20. {
  21. args.ModifySpeed(component.WalkSpeedModifier, component.SprintSpeedModifier);
  22. }
  23. private void AddComponent(Entity<MovespeedModifierMetabolismComponent> metabolism, ref ComponentStartup args)
  24. {
  25. _components.Add(metabolism);
  26. }
  27. public override void Update(float frameTime)
  28. {
  29. base.Update(frameTime);
  30. var currentTime = _gameTiming.CurTime;
  31. for (var i = _components.Count - 1; i >= 0; i--)
  32. {
  33. var metabolism = _components[i];
  34. if (metabolism.Comp.Deleted)
  35. {
  36. _components.RemoveAt(i);
  37. continue;
  38. }
  39. if (metabolism.Comp.ModifierTimer > currentTime)
  40. continue;
  41. _components.RemoveAt(i);
  42. EntityManager.RemoveComponent<MovespeedModifierMetabolismComponent>(metabolism);
  43. _movespeed.RefreshMovementSpeedModifiers(metabolism);
  44. }
  45. }
  46. }
  47. }