using System.Text; using EDPlayerJournal.Entries; namespace EDPlayerJournal.BGS; public class MissionFailed : Transaction { public MissionFailedEntry? Failed { get; set; } public MissionAcceptedEntry? Accepted { get; set; } public MissionFailed() { } public MissionFailed(MissionAcceptedEntry accepted) { if (accepted.Mission == null) { throw new Exception("Mission cannot be null"); } Accepted = accepted; Faction = accepted.Mission.Faction; } public override int CompareTo(Transaction? other) { if (other == null || other.GetType() != typeof(MissionFailed)) { return -1; } MissionFailed? failed = other as MissionFailed; if (failed == null) { return -1; } /* if it is the same mission name, the same faction and the same system, * collate mission failures together */ if (string.Compare(failed.Failed?.Mission?.Name, Failed?.Mission?.Name) == 0 && failed.Faction == Faction && failed.System == System) { return 0; } return -1; } // +1 since the other entries are just copies of the one we have in our properties public int Amount => Entries.Count + 1; public override string ToString() { StringBuilder builder = new StringBuilder(); if (Failed == null || Accepted == null) { return ""; } builder.AppendFormat("{0}x Mission failed: \"{1}\"", Amount, Failed?.Mission?.LocalisedName != null ? Failed?.Mission?.LocalisedName : Failed?.Mission?.Name ); return builder.ToString(); } }