1
0

PowerNetConnectorSystem.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Content.Server.Power.Components;
  2. using Content.Server.Power.NodeGroups;
  3. namespace Content.Server.Power.EntitySystems;
  4. public sealed class PowerNetConnectorSystem : EntitySystem
  5. {
  6. public override void Initialize()
  7. {
  8. base.Initialize();
  9. SubscribeLocalEvent<ApcComponent, ComponentInit>(OnApcInit);
  10. SubscribeLocalEvent<ApcPowerProviderComponent, ComponentInit>(OnApcPowerProviderInit);
  11. SubscribeLocalEvent<BatteryChargerComponent, ComponentInit>(OnBatteryChargerInit);
  12. SubscribeLocalEvent<BatteryDischargerComponent, ComponentInit>(OnBatteryDischargerInit);
  13. // TODO please end my life
  14. SubscribeLocalEvent<ApcComponent, ComponentRemove>(OnRemove<ApcComponent, IApcNet>);
  15. SubscribeLocalEvent<ApcPowerProviderComponent, ComponentRemove>(OnRemove<ApcPowerProviderComponent, IApcNet>);
  16. SubscribeLocalEvent<BatteryChargerComponent, ComponentRemove>(OnRemove<BatteryChargerComponent, IPowerNet>);
  17. SubscribeLocalEvent<BatteryDischargerComponent, ComponentRemove>(OnRemove<BatteryDischargerComponent, IPowerNet>);
  18. SubscribeLocalEvent<PowerConsumerComponent, ComponentRemove>(OnRemove<PowerConsumerComponent, IBasePowerNet>);
  19. SubscribeLocalEvent<PowerSupplierComponent, ComponentRemove>(OnRemove<PowerSupplierComponent, IBasePowerNet>);
  20. }
  21. private void OnRemove<TComp, TNet>(EntityUid uid, TComp component, ComponentRemove args)
  22. where TComp : BaseNetConnectorComponent<TNet>
  23. where TNet : class
  24. {
  25. component.ClearNet();
  26. }
  27. private void OnPowerSupplierInit(EntityUid uid, PowerSupplierComponent component, ComponentInit args)
  28. {
  29. BaseNetConnectorInit(component);
  30. }
  31. private void OnBatteryDischargerInit(EntityUid uid, BatteryDischargerComponent component, ComponentInit args)
  32. {
  33. BaseNetConnectorInit(component);
  34. }
  35. private void OnBatteryChargerInit(EntityUid uid, BatteryChargerComponent component, ComponentInit args)
  36. {
  37. BaseNetConnectorInit(component);
  38. }
  39. private void OnApcPowerProviderInit(EntityUid uid, ApcPowerProviderComponent component, ComponentInit args)
  40. {
  41. BaseNetConnectorInit(component);
  42. }
  43. private void OnApcInit(EntityUid uid, ApcComponent component, ComponentInit args)
  44. {
  45. BaseNetConnectorInit(component);
  46. }
  47. public void BaseNetConnectorInit<T>(BaseNetConnectorComponent<T> component) where T : class
  48. {
  49. if (component.NeedsNet)
  50. {
  51. component.TryFindAndSetNet();
  52. }
  53. }
  54. }