EDBGS/EDPlayerJournal/BGS/CombatZone.cs

78 lines
1.9 KiB
C#

using System;
using System.Linq;
namespace EDPlayerJournal.BGS;
public class CombatZone : Transaction {
/// <summary>
/// Type, either on foot or ship
/// </summary>
public string Type { get; set; } = "Ship";
/// <summary>
/// Difficulty type, low, medium or high.
/// </summary>
public string Grade { get; set; } = "Low";
/// <summary>
/// How many?
/// </summary>
public int Amount { get; set; } = 1;
/// <summary>
/// Whether spec ops were won.
/// </summary>
public bool? SpecOps { get; set; }
/// <summary>
/// Whether captain was won
/// </summary>
public bool? Captain { get; set; }
/// <summary>
/// Whether correspondent objective was won
/// </summary>
public bool? Correspondent { get; set; }
/// <summary>
/// Whether cap ship objective was won
/// </summary>
public bool? CapitalShip { get; set; }
/// <summary>
/// How many optional objectives were completed?
/// </summary>
public int OptionalObjectivesCompleted {
get {
return new List<bool?>() { SpecOps, Captain, Correspondent, CapitalShip }
.Where(x => x != null && x == true)
.Count()
;
}
}
public override int CompareTo(Transaction? obj) {
if (obj == null || obj.GetType() != typeof(CombatZone)) {
return -1;
}
CombatZone? b = obj as CombatZone;
if (b == null) {
return -1;
}
if (b.Faction != Faction || b.System != System) {
return -1; // System and faction don't match
}
if (b.Type != b.Type || b.Grade != b.Grade) {
return -1; // grade and type don't match
}
return 0;
}
public override string ToString() {
return string.Format("Won {0} x {1} {2} Combat Zone(s)", Amount, Grade, Type);
}
}