fix cargo teleporter (#27255)

* fix cargo teleporter

* don't delete orders

* basado
This commit is contained in:
Nemanja
2024-04-23 08:07:12 -04:00
committed by GitHub
parent 8117131c91
commit 1bfc63c546
8 changed files with 133 additions and 37 deletions

View File

@@ -170,13 +170,20 @@ namespace Content.Server.Cargo.Systems
return;
}
var tradeDestination = TryFulfillOrder(stationData, order, orderDatabase);
var ev = new FulfillCargoOrderEvent((station.Value, stationData), order, (uid, component));
RaiseLocalEvent(ref ev);
ev.FulfillmentEntity ??= station.Value;
if (tradeDestination == null)
if (!ev.Handled)
{
ConsolePopup(args.Session, Loc.GetString("cargo-console-unfulfilled"));
PlayDenySound(uid, component);
return;
ev.FulfillmentEntity = TryFulfillOrder((station.Value, stationData), order, orderDatabase);
if (ev.FulfillmentEntity == null)
{
ConsolePopup(args.Session, Loc.GetString("cargo-console-unfulfilled"));
PlayDenySound(uid, component);
return;
}
}
_idCardSystem.TryFindIdCard(player, out var idCard);
@@ -186,14 +193,14 @@ namespace Content.Server.Cargo.Systems
var approverName = idCard.Comp?.FullName ?? Loc.GetString("access-reader-unknown-id");
var approverJob = idCard.Comp?.JobTitle ?? Loc.GetString("access-reader-unknown-id");
var message = Loc.GetString("cargo-console-unlock-approved-order-broadcast",
var message = Loc.GetString("cargo-console-unlock-approved-order-broadcast",
("productName", Loc.GetString(order.ProductName)),
("orderAmount", order.OrderQuantity),
("approverName", approverName),
("approverJob", approverJob),
("cost", cost));
_radio.SendRadioMessage(uid, message, component.AnnouncementChannel, uid, escapeMarkup: false);
ConsolePopup(args.Session, Loc.GetString("cargo-console-trade-station", ("destination", MetaData(tradeDestination.Value).EntityName)));
ConsolePopup(args.Session, Loc.GetString("cargo-console-trade-station", ("destination", MetaData(ev.FulfillmentEntity.Value).EntityName)));
// Log order approval
_adminLogger.Add(LogType.Action, LogImpact.Low,
@@ -201,10 +208,10 @@ namespace Content.Server.Cargo.Systems
orderDatabase.Orders.Remove(order);
DeductFunds(bank, cost);
UpdateOrders(station.Value, orderDatabase);
UpdateOrders(station.Value);
}
private EntityUid? TryFulfillOrder(StationDataComponent stationData, CargoOrderData order, StationCargoOrderDatabaseComponent orderDatabase)
private EntityUid? TryFulfillOrder(Entity<StationDataComponent> stationData, CargoOrderData order, StationCargoOrderDatabaseComponent orderDatabase)
{
// No slots at the trade station
_listEnts.Clear();
@@ -357,7 +364,7 @@ namespace Content.Server.Cargo.Systems
/// Updates all of the cargo-related consoles for a particular station.
/// This should be called whenever orders change.
/// </summary>
private void UpdateOrders(EntityUid dbUid, StationCargoOrderDatabaseComponent _)
private void UpdateOrders(EntityUid dbUid)
{
// Order added so all consoles need updating.
var orderQuery = AllEntityQuery<CargoOrderConsoleComponent>();
@@ -392,7 +399,7 @@ namespace Content.Server.Cargo.Systems
string description,
string dest,
StationCargoOrderDatabaseComponent component,
StationDataComponent stationData
Entity<StationDataComponent> stationData
)
{
DebugTools.Assert(_protoMan.HasIndex<EntityPrototype>(spawnId));
@@ -414,7 +421,7 @@ namespace Content.Server.Cargo.Systems
private bool TryAddOrder(EntityUid dbUid, CargoOrderData data, StationCargoOrderDatabaseComponent component)
{
component.Orders.Add(data);
UpdateOrders(dbUid, component);
UpdateOrders(dbUid);
return true;
}
@@ -432,7 +439,7 @@ namespace Content.Server.Cargo.Systems
{
orderDB.Orders.RemoveAt(sequenceIdx);
}
UpdateOrders(dbUid, orderDB);
UpdateOrders(dbUid);
}
public void ClearOrders(StationCargoOrderDatabaseComponent component)