using System.Collections.Generic; using System; using System.Text; using Newtonsoft.Json; namespace NonaBGS.BGS { public class Objective : IComparable { private string system; private string station; private string faction; private List entries = new List(); [JsonIgnore] public List LogEntries { get => entries; set => entries = value; } public void Clear() { if (entries == null) { return; } entries.RemoveAll(x => !x.ManuallyAdded); } public int Matches(LogEntry e) { int match_count = 0; if (e.OnlyControllingFaction) { if (Faction == null || (e.Faction != Faction)) { return 0; } } if (e.System != null && system != null) { if (string.Compare(e.System, system, true) == 0) { ++match_count; } } if (e.Station != null && station != null) { if (string.Compare(e.Station, station, true) == 0) { ++match_count; } } if (e.Faction != null && faction != null) { if (string.Compare(e.Faction, faction, true) == 0) { ++match_count; } } return match_count; } public int CompareTo(Objective other) { return (other.System == System && other.Station == Station && other.Faction == Faction) ? 0 : -1; } public bool IsValid => System != null && Faction != null; public string System { get { return system; } set { system = value; } } public string Station { get { return station; } set { station = value; } } public string Faction { get { return faction; } set { faction = value; } } public override string ToString() { StringBuilder str = new StringBuilder(); if (system != null && system.Length > 0) { str.AppendFormat("System: {0}", system); } if (station != null && station.Length > 0) { if (str.Length > 0) { str.Append(", "); } str.AppendFormat("Station: {0}", station); } if (faction != null && faction.Length > 0) { if (str.Length > 0) { str.Append(", "); } str.AppendFormat("Faction: {0}", faction); } return str.ToString(); } public string ToShortString() { StringBuilder str = new StringBuilder(); if (system != null && system.Length > 0) { str.AppendFormat("{0}", system); } if (station != null && station.Length > 0) { if (str.Length > 0) { str.Append(", "); } str.AppendFormat("{0}", station); } return str.ToString(); } } }