EDBGS/EDPlayerJournal/Faction.cs

120 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace EDPlayerJournal;
public class FactionState {
public string? State { get; set; }
public long? Trend { get; set; }
public static FactionState? FromJSON(JObject j) {
if (j == null) {
return null;
}
FactionState s = new FactionState() {
State = j.Value<string>("State"),
Trend = j.Value<long?>("Trend"),
};
if (string.IsNullOrEmpty(s.State)) {
return null;
}
return s;
}
}
public class Factions {
/// <summary>
/// Internal name for the Pilots Federation faction
/// </summary>
public static string PilotsFederationInternal = "$faction_PilotsFederation;";
/// <summary>
/// Name used for Pilots Federation in vouchers
/// </summary>
public static string PilotsFederationVouchers = "PilotsFederation";
/// <summary>
/// Internal name for the Thargoid faction
/// </summary>
public static string Thargoid = "$faction_Thargoid;";
}
public class Faction {
public string? Name { get; set; }
public string? FactionState { get; set; }
public string? Government { get; set; }
public double Influence { get; set; }
public string? Allegiance { get; set; }
public string? Happiness { get; set; }
public string? HappinessLocalised { get; set; }
public double MyReputation { get; set; }
public bool SquadronFaction { get; set; } = false;
public bool HomeSystem { get; set; } = false;
public List<FactionState> RecoveringStates { get; set; } = new List<FactionState>();
public List<FactionState> ActiveStates { get; set; } = new List<FactionState>();
public List<FactionState> PendingStates { get; set; } = new List<FactionState>();
public static Faction? FromJSON(JObject j) {
if (j == null) {
return null;
}
Faction f = new Faction() {
Name = j.Value<string>("Name") ?? "",
FactionState = j.Value<string>("FactionState") ?? "",
Government = j.Value<string>("Government") ?? "",
Influence = j.Value<double?>("Influence") ?? 1.0,
Allegiance = j.Value<string>("Allegiance") ?? "",
Happiness = j.Value<string>("Happiness") ?? "",
HappinessLocalised = j.Value<string>("Happiness_Localised") ?? "",
MyReputation = j.Value<double?>("MyReputation") ?? 1.0,
SquadronFaction = (j.Value<bool?>("SquadronFaction") ?? false),
HomeSystem = (j.Value<bool?>("HomeSystem") ?? false),
};
if (string.IsNullOrEmpty(f.Name)) {
return null;
}
JArray? recovering_states = j.Value<JArray>("RecoveringStates");
if (recovering_states != null) {
foreach (JObject s in recovering_states) {
FactionState? state = EDPlayerJournal.FactionState.FromJSON(s);
if (state != null) {
f.RecoveringStates.Add(state);
}
}
}
JArray? active_states = j.Value<JArray>("ActiveStates");
if (active_states != null) {
foreach (JObject s in active_states) {
FactionState? state = EDPlayerJournal.FactionState.FromJSON(s);
if (state != null) {
f.ActiveStates.Add(state);
}
}
}
JArray? pending_states = j.Value<JArray>("PendingStates");
if (pending_states != null) {
foreach (JObject s in pending_states) {
FactionState? state = EDPlayerJournal.FactionState.FromJSON(s);
if (state != null) {
f.PendingStates.Add(state);
}
}
}
return f;
}
}