diff --git a/EDPlayerJournal/Entries/ColonisationConstructionDepotEntry.cs b/EDPlayerJournal/Entries/ColonisationConstructionDepotEntry.cs new file mode 100644 index 0000000..de16bc7 --- /dev/null +++ b/EDPlayerJournal/Entries/ColonisationConstructionDepotEntry.cs @@ -0,0 +1,60 @@ +using Newtonsoft.Json.Linq; + +namespace EDPlayerJournal.Entries; + +public class ConstructionResource { + public string Name { get; set; } = string.Empty; + + public string NameLocalised { get; set; } = string.Empty; + + public ulong RequiredAmount { get; set; } = 0; + + public ulong ProvidedAmount { get; set; } = 0; + + public ulong Payment { get; set; } = 0; + + public static ConstructionResource FromJSON(JObject obj) { + ConstructionResource res = new(); + + res.Name = obj.Value("Name") ?? string.Empty; + res.NameLocalised = obj.Value("Name_Localised") ?? string.Empty; + res.RequiredAmount = obj.Value("RequiredAmount") ?? 0; + res.ProvidedAmount = obj.Value("ProvidedAmount") ?? 0; + res.Payment = obj.Value("Payment") ?? 0; + + return res; + } +} + +public class ColonisationConstructionDepotEntry : Entry { + public ulong MarketID { get; set; } = 0; + + public double ConstructionProgress { get; set; } = 0.0; + + public double ConstructionProgressInPercent { + get { + return ConstructionProgress * 100; + } + } + + public bool ConstructionComplete { get; set; } = false; + + public bool ConstructionFailed { get; set; } = false; + + public List ResourcesRequired { get; set; } = new(); + + protected override void Initialise() { + MarketID = JSON.Value("MarketID") ?? 0; + ConstructionProgress = JSON.Value("ConstructionProgress") ?? 0; + ConstructionComplete = JSON.Value("ConstructionComplete") ?? false; + ConstructionFailed = JSON.Value("ConstructionFailed") ?? false; + + JArray? resources = JSON.Value("ResourcesRequired"); + if (resources != null) { + foreach (JObject res in resources) { + ConstructionResource resource = ConstructionResource.FromJSON(res); + ResourcesRequired.Add(resource); + } + } + } +} diff --git a/EDPlayerJournal/Entries/ColonisationContributionEntry.cs b/EDPlayerJournal/Entries/ColonisationContributionEntry.cs new file mode 100644 index 0000000..6493ab3 --- /dev/null +++ b/EDPlayerJournal/Entries/ColonisationContributionEntry.cs @@ -0,0 +1,39 @@ +using Newtonsoft.Json.Linq; + +namespace EDPlayerJournal.Entries; + +public class ConstructionContribution { + public string Name { get; set; } = string.Empty; + + public string NameLocalised { get; set; } = string.Empty; + + public ulong Amount { get; set; } = 0; + + public static ConstructionContribution FromJSON(JObject obj) { + ConstructionContribution res = new(); + + res.Name = obj.Value("Name") ?? string.Empty; + res.NameLocalised = obj.Value("Name_Localised") ?? string.Empty; + res.Amount = obj.Value("Amount") ?? 0; + + return res; + } +} + +public class ColonisationContributionEntry : Entry { + public ulong MarketID { get; set; } = 0; + + public List Contributions { get; set; } = new(); + + protected override void Initialise() { + MarketID = JSON.Value("MarketID") ?? 0; + + JArray? resources = JSON.Value("Contributions"); + if (resources != null) { + foreach (JObject res in resources) { + ConstructionContribution resource = ConstructionContribution.FromJSON(res); + Contributions.Add(resource); + } + } + } +} diff --git a/EDPlayerJournal/Entries/Entry.cs b/EDPlayerJournal/Entries/Entry.cs index c6cad68..9bb0c01 100644 --- a/EDPlayerJournal/Entries/Entry.cs +++ b/EDPlayerJournal/Entries/Entry.cs @@ -16,6 +16,8 @@ public class Entry { { Events.Bounty, typeof(BountyEntry) }, { Events.CapShipBond, typeof(CapShipBondEntry) }, { Events.CarrierJump, typeof(CarrierJump) }, + { Events.ColonisationConstructionDepot, typeof(ColonisationConstructionDepotEntry) }, + { Events.ColonisationContribution, typeof(ColonisationContributionEntry) }, { Events.Commander, typeof(CommanderEntry) }, { Events.CommitCrime, typeof(CommitCrimeEntry) }, { Events.Died, typeof(DiedEntry) }, diff --git a/EDPlayerJournal/Entries/Events.cs b/EDPlayerJournal/Entries/Events.cs index d1b8f05..6ec3909 100644 --- a/EDPlayerJournal/Entries/Events.cs +++ b/EDPlayerJournal/Entries/Events.cs @@ -5,6 +5,8 @@ public class Events { public static readonly string Bounty = "Bounty"; public static readonly string CapShipBond = "CapShipBond"; public static readonly string CarrierJump = "CarrierJump"; + public static readonly string ColonisationConstructionDepot = "ColonisationConstructionDepot"; + public static readonly string ColonisationContribution = "ColonisationContribution"; public static readonly string Commander = "Commander"; public static readonly string CommitCrime = "CommitCrime"; public static readonly string Died = "Died";