1
0

PowerReceiverSystem.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Diagnostics.CodeAnalysis;
  2. using Content.Client.Power.Components;
  3. using Content.Shared.Power.Components;
  4. using Content.Shared.Power.EntitySystems;
  5. using Content.Shared.Examine;
  6. using Robust.Shared.GameStates;
  7. namespace Content.Client.Power.EntitySystems;
  8. public sealed class PowerReceiverSystem : SharedPowerReceiverSystem
  9. {
  10. public override void Initialize()
  11. {
  12. base.Initialize();
  13. SubscribeLocalEvent<ApcPowerReceiverComponent, ExaminedEvent>(OnExamined);
  14. SubscribeLocalEvent<ApcPowerReceiverComponent, ComponentHandleState>(OnHandleState);
  15. }
  16. private void OnExamined(Entity<ApcPowerReceiverComponent> ent, ref ExaminedEvent args)
  17. {
  18. if (ent.Comp.NeedsPower){
  19. args.PushMarkup(GetExamineText(ent.Comp.Powered));
  20. }
  21. }
  22. private void OnHandleState(EntityUid uid, ApcPowerReceiverComponent component, ref ComponentHandleState args)
  23. {
  24. if (args.Current is not ApcPowerReceiverComponentState state)
  25. return;
  26. component.Powered = state.Powered;
  27. component.NeedsPower = state.NeedsPower;
  28. component.PowerDisabled = state.PowerDisabled;
  29. }
  30. public override bool ResolveApc(EntityUid entity, [NotNullWhen(true)] ref SharedApcPowerReceiverComponent? component)
  31. {
  32. if (component != null)
  33. return true;
  34. if (!TryComp(entity, out ApcPowerReceiverComponent? receiver))
  35. return false;
  36. component = receiver;
  37. return true;
  38. }
  39. }