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; }