using Content.Server.Station.Components;
using Content.Shared.Cargo;
using Content.Shared.Cargo.BUI;
+using Content.Shared.Cargo.Components;
using Content.Shared.Cargo.Events;
using Content.Shared.Cargo.Prototypes;
using Content.Shared.Database;
+using Content.Shared.Interaction;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
SubscribeLocalEvent<CargoOrderConsoleComponent, CargoConsoleApproveOrderMessage>(OnApproveOrderMessage);
SubscribeLocalEvent<CargoOrderConsoleComponent, BoundUIOpenedEvent>(OnOrderUIOpened);
SubscribeLocalEvent<CargoOrderConsoleComponent, ComponentInit>(OnInit);
+ SubscribeLocalEvent<CargoOrderConsoleComponent, InteractUsingEvent>(OnInteractUsing);
Reset();
}
+ private void OnInteractUsing(EntityUid uid, CargoOrderConsoleComponent component, ref InteractUsingEvent args)
+ {
+ if (!HasComp<CashComponent>(args.Used))
+ return;
+
+ var price = _pricing.GetPrice(args.Used);
+
+ if (price == 0)
+ return;
+
+ var stationUid = _station.GetOwningStation(args.Used);
+
+ if (!TryComp(stationUid, out StationBankAccountComponent? bank))
+ return;
+
+ _audio.PlayPvs(component.ConfirmSound, uid);
+ UpdateBankAccount(stationUid.Value, bank, (int) price);
+ QueueDel(args.Used);
+ }
+
private void OnInit(EntityUid uid, CargoOrderConsoleComponent orderConsole, ComponentInit args)
{
var station = _station.GetOwningStation(uid);
--- /dev/null
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Cargo.Components;
+
+/// <summary>
+/// Can be inserted into a <see cref="Content.Server.Cargo.Components.CargoOrderConsoleComponent"/> to increase the station's bank account.
+/// </summary>
+[RegisterComponent, NetworkedComponent]
+public sealed partial class CashComponent : Component
+{
+
+}