using Content.Shared.Cargo; using Content.Server.Cargo.Components; using JetBrains.Annotations; namespace Content.Server.Cargo.Systems; public sealed partial class LogisticStatsSystem : SharedCargoSystem { [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) => RaiseLocalEvent(new LogisticStatsUpdatedEvent(uid)); } public sealed class LogisticStatsUpdatedEvent : EntityEventArgs { public EntityUid Station; public LogisticStatsUpdatedEvent(EntityUid station) { Station = station; } }