EDBGS/EDPlayerJournal/BGS/MissionFailed.cs

61 lines
1.6 KiB
C#

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;
}
public int Amount {
get { return 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?.FriendlyName
);
return builder.ToString();
}
}