Delta-v/Content.Shared/_DV/Cargo/Systems/LogisticStatsSystem.cs

65 lines
2.0 KiB
C#

using Content.Shared._DV.Cargo.Components;
using JetBrains.Annotations;
namespace Content.Shared._DV.Cargo.Systems;
public sealed partial class LogisticStatsSystem : EntitySystem
{
[PublicAPI]
public void AddOpenedMailEarnings(EntityUid uid, StationLogisticStatsComponent component, int earnedMoney)
{
component.Metrics = component.Metrics with
{
Earnings = component.Metrics.Earnings + earnedMoney,
OpenedCount = component.Metrics.OpenedCount + 1
};
UpdateLogisticsStats(uid);
}
[PublicAPI]
public void AddExpiredMailLosses(EntityUid uid, StationLogisticStatsComponent component, int lostMoney)
{
component.Metrics = component.Metrics with
{
ExpiredLosses = component.Metrics.ExpiredLosses + lostMoney,
ExpiredCount = component.Metrics.ExpiredCount + 1
};
UpdateLogisticsStats(uid);
}
[PublicAPI]
public void AddDamagedMailLosses(EntityUid uid, StationLogisticStatsComponent component, int lostMoney)
{
component.Metrics = component.Metrics with
{
DamagedLosses = component.Metrics.DamagedLosses + lostMoney,
DamagedCount = component.Metrics.DamagedCount + 1
};
UpdateLogisticsStats(uid);
}
[PublicAPI]
public void AddTamperedMailLosses(EntityUid uid, StationLogisticStatsComponent component, int lostMoney)
{
component.Metrics = component.Metrics with
{
TamperedLosses = component.Metrics.TamperedLosses + lostMoney,
TamperedCount = component.Metrics.TamperedCount + 1
};
UpdateLogisticsStats(uid);
}
private void UpdateLogisticsStats(EntityUid uid)
{
var ev = new LogisticStatsUpdatedEvent(uid);
RaiseLocalEvent(uid, ref ev);
}
}
[ByRefEvent]
public record struct LogisticStatsUpdatedEvent(EntityUid Station)
{
public EntityUid Station = Station;
public bool Handled = false;
}