| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using Content.Server.Power.Components;
- using Content.Server.Power.EntitySystems;
- using Content.Shared.Gravity;
- namespace Content.Server.Gravity;
- public sealed class GravityGeneratorSystem : EntitySystem
- {
- [Dependency] private readonly GravitySystem _gravitySystem = default!;
- [Dependency] private readonly SharedPointLightSystem _lights = default!;
- public override void Initialize()
- {
- base.Initialize();
- SubscribeLocalEvent<GravityGeneratorComponent, EntParentChangedMessage>(OnParentChanged);
- SubscribeLocalEvent<GravityGeneratorComponent, ChargedMachineActivatedEvent>(OnActivated);
- SubscribeLocalEvent<GravityGeneratorComponent, ChargedMachineDeactivatedEvent>(OnDeactivated);
- }
- public override void Update(float frameTime)
- {
- base.Update(frameTime);
- var query = EntityQueryEnumerator<GravityGeneratorComponent, PowerChargeComponent>();
- while (query.MoveNext(out var uid, out var grav, out var charge))
- {
- if (!_lights.TryGetLight(uid, out var pointLight))
- continue;
- _lights.SetEnabled(uid, charge.Charge > 0, pointLight);
- _lights.SetRadius(uid, MathHelper.Lerp(grav.LightRadiusMin, grav.LightRadiusMax, charge.Charge),
- pointLight);
- }
- }
- private void OnActivated(Entity<GravityGeneratorComponent> ent, ref ChargedMachineActivatedEvent args)
- {
- ent.Comp.GravityActive = true;
- var xform = Transform(ent);
- if (TryComp(xform.ParentUid, out GravityComponent? gravity))
- {
- _gravitySystem.EnableGravity(xform.ParentUid, gravity);
- }
- }
- private void OnDeactivated(Entity<GravityGeneratorComponent> ent, ref ChargedMachineDeactivatedEvent args)
- {
- ent.Comp.GravityActive = false;
- var xform = Transform(ent);
- if (TryComp(xform.ParentUid, out GravityComponent? gravity))
- {
- _gravitySystem.RefreshGravity(xform.ParentUid, gravity);
- }
- }
- private void OnParentChanged(EntityUid uid, GravityGeneratorComponent component, ref EntParentChangedMessage args)
- {
- if (component.GravityActive && TryComp(args.OldParent, out GravityComponent? gravity))
- {
- _gravitySystem.RefreshGravity(args.OldParent.Value, gravity);
- }
- }
- }
|