CargoSystem.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using Content.Server.Cargo.Components;
  2. using Content.Server.DeviceLinking.Systems;
  3. using Content.Server.Popups;
  4. using Content.Server.Shuttles.Systems;
  5. using Content.Server.Stack;
  6. using Content.Server.Station.Systems;
  7. using Content.Shared.Access.Systems;
  8. using Content.Shared.Administration.Logs;
  9. using Content.Server.Radio.EntitySystems;
  10. using Content.Shared.Cargo;
  11. using Content.Shared.Cargo.Components;
  12. using Content.Shared.Containers.ItemSlots;
  13. using Content.Shared.Mobs.Components;
  14. using Content.Shared.Paper;
  15. using JetBrains.Annotations;
  16. using Robust.Server.GameObjects;
  17. using Robust.Shared.Audio.Systems;
  18. using Robust.Shared.Prototypes;
  19. using Robust.Shared.Timing;
  20. using Robust.Shared.Random;
  21. namespace Content.Server.Cargo.Systems;
  22. public sealed partial class CargoSystem : SharedCargoSystem
  23. {
  24. [Dependency] private readonly IGameTiming _timing = default!;
  25. [Dependency] private readonly IPrototypeManager _protoMan = default!;
  26. [Dependency] private readonly IRobustRandom _random = default!;
  27. [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
  28. [Dependency] private readonly AccessReaderSystem _accessReaderSystem = default!;
  29. [Dependency] private readonly DeviceLinkSystem _linker = default!;
  30. [Dependency] private readonly EntityLookupSystem _lookup = default!;
  31. [Dependency] private readonly ItemSlotsSystem _slots = default!;
  32. [Dependency] private readonly PaperSystem _paperSystem = default!;
  33. [Dependency] private readonly PopupSystem _popup = default!;
  34. [Dependency] private readonly PricingSystem _pricing = default!;
  35. [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
  36. [Dependency] private readonly SharedAudioSystem _audio = default!;
  37. [Dependency] private readonly ShuttleConsoleSystem _console = default!;
  38. [Dependency] private readonly StackSystem _stack = default!;
  39. [Dependency] private readonly StationSystem _station = default!;
  40. [Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
  41. [Dependency] private readonly MetaDataSystem _metaSystem = default!;
  42. [Dependency] private readonly RadioSystem _radio = default!;
  43. private EntityQuery<TransformComponent> _xformQuery;
  44. private EntityQuery<CargoSellBlacklistComponent> _blacklistQuery;
  45. private EntityQuery<MobStateComponent> _mobQuery;
  46. private EntityQuery<TradeStationComponent> _tradeQuery;
  47. private HashSet<EntityUid> _setEnts = new();
  48. private List<EntityUid> _listEnts = new();
  49. private List<(EntityUid, CargoPalletComponent, TransformComponent)> _pads = new();
  50. public override void Initialize()
  51. {
  52. base.Initialize();
  53. _xformQuery = GetEntityQuery<TransformComponent>();
  54. _blacklistQuery = GetEntityQuery<CargoSellBlacklistComponent>();
  55. _mobQuery = GetEntityQuery<MobStateComponent>();
  56. _tradeQuery = GetEntityQuery<TradeStationComponent>();
  57. InitializeConsole();
  58. InitializeShuttle();
  59. InitializeTelepad();
  60. InitializeBounty();
  61. }
  62. public override void Update(float frameTime)
  63. {
  64. base.Update(frameTime);
  65. UpdateConsole(frameTime);
  66. UpdateTelepad(frameTime);
  67. UpdateBounty();
  68. }
  69. [PublicAPI]
  70. public void UpdateBankAccount(Entity<StationBankAccountComponent?> ent, int balanceAdded)
  71. {
  72. if (!Resolve(ent, ref ent.Comp))
  73. return;
  74. ent.Comp.Balance += balanceAdded;
  75. var ev = new BankBalanceUpdatedEvent(ent, ent.Comp.Balance);
  76. var query = EntityQueryEnumerator<BankClientComponent, TransformComponent>();
  77. while (query.MoveNext(out var client, out var comp, out var xform))
  78. {
  79. var station = _station.GetOwningStation(client, xform);
  80. if (station != ent)
  81. continue;
  82. comp.Balance = ent.Comp.Balance;
  83. Dirty(client, comp);
  84. RaiseLocalEvent(client, ref ev);
  85. }
  86. }
  87. }