RevenantOverloadedLightsSystem.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Content.Shared.Revenant.Components;
  2. using Content.Shared.Revenant.EntitySystems;
  3. using Robust.Client.GameObjects;
  4. namespace Content.Client.Revenant;
  5. public sealed class RevenantOverloadedLightsSystem : SharedRevenantOverloadedLightsSystem
  6. {
  7. [Dependency] private readonly SharedPointLightSystem _lights = default!;
  8. public override void Initialize()
  9. {
  10. base.Initialize();
  11. SubscribeLocalEvent<RevenantOverloadedLightsComponent, ComponentStartup>(OnStartup);
  12. SubscribeLocalEvent<RevenantOverloadedLightsComponent, ComponentShutdown>(OnShutdown);
  13. }
  14. public override void Update(float frameTime)
  15. {
  16. base.Update(frameTime);
  17. var enumerator = EntityQueryEnumerator<RevenantOverloadedLightsComponent, PointLightComponent>();
  18. while (enumerator.MoveNext(out var uid, out var comp, out var light))
  19. {
  20. //this looks cool :HECK:
  21. _lights.SetEnergy(uid, 2f * Math.Abs((float) Math.Sin(0.25 * Math.PI * comp.Accumulator)), light);
  22. }
  23. }
  24. private void OnStartup(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentStartup args)
  25. {
  26. var light = _lights.EnsureLight(uid);
  27. component.OriginalEnergy = light.Energy;
  28. component.OriginalEnabled = light.Enabled;
  29. _lights.SetEnabled(uid, component.OriginalEnabled, light);
  30. Dirty(uid, light);
  31. }
  32. private void OnShutdown(EntityUid uid, RevenantOverloadedLightsComponent component, ComponentShutdown args)
  33. {
  34. if (!_lights.TryGetLight(uid, out var light))
  35. return;
  36. if (component.OriginalEnergy == null)
  37. {
  38. RemComp(uid, light);
  39. return;
  40. }
  41. _lights.SetEnergy(uid, component.OriginalEnergy.Value, light);
  42. _lights.SetEnabled(uid, component.OriginalEnabled, light);
  43. Dirty(uid, light);
  44. }
  45. protected override void OnZap(Entity<RevenantOverloadedLightsComponent> component)
  46. {
  47. }
  48. }