diff --git a/HumanReadableMissionName.cs b/HumanReadableMissionName.cs index 07cd3b4..82409af 100644 --- a/HumanReadableMissionName.cs +++ b/HumanReadableMissionName.cs @@ -1,70 +1,49 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.IO; +using System.Xml; namespace EDJournal { public class HumanReadableMissionName { - /* TODO: make this a file at some point for easier editing. - */ - private static readonly Dictionary humanreadable = new Dictionary { - { "Mission_Assassinate_name", "Assassination" }, - { "Mission_AltruismCredits_Bust_name", "Donate Credits (Bust)" }, - { "Mission_AltruismCredits_name", "Donate Credits" }, - { "Mission_Collect_Bust_name", "Provide (Bust)" }, - { "Mission_Collect_CivilLiberty_name", "Provide (Civil Liberty)" }, - { "Mission_Collect_CivilUnrest_name", "Provide (Civil Unrest)" }, - { "Mission_Collect_Famine_name", "Provide (Famine)" }, - { "Mission_Collect_Industrial_name", "Provide (Industrial)" }, - { "Mission_Collect_name", "Provide" }, - { "Mission_Courier_Democracy_name", "Courier (Democracy)" }, - { "Mission_Courier_Elections_name", "Courier (Elections)" }, - { "Mission_Courier_Expansion_name", "Courier (Expansion)" }, - { "Mission_Courier_Famine_name", "Courier (Famine)" }, - { "Mission_Courier_Lockdown_name", "Courier (Lockdown)" }, - { "Mission_Courier_name", "Courier" }, - { "Mission_Courier_RankEmp_name", "Courier (Empire)" }, - { "Mission_Delivery_Agriculture_name", "Delivery (Agriculture)" }, - { "Mission_Delivery_Boom_name", "Delivery (Boom)" }, - { "Mission_Delivery_Democracy_name", "Delivery (Democracy)" }, - { "Mission_Delivery_Investment_name", "Delivery (Investment)" }, - { "Mission_Delivery_name", "Delivery" }, - { "Mission_Delivery_RankEmp_name", "Delivery (Imperial Rank)" }, - { "Mission_Delivery_Retreat_name", "Delivery (Retreat)" }, - { "Mission_Hack_BLOPS_Boom_name", "Hack Surface Installation (Boom)" }, - { "Mission_Hack_BLOPS_Expansion_name", "Hack Surface Installation (Expansion)" }, - { "Mission_HackMegaship_name", "Hack Megaship" }, - { "Mission_LongDistanceExpedition_name", "Long Distance Expedition" }, - { "Mission_Massacre_Conflict_CivilWar_name", "Massacre (Civil War)" }, - { "Mission_Massacre_name", "Massacre" }, - { "Mission_Massacre_RankEmp_name", "Massacre (Imperial Navy)" }, - { "Mission_MassacreWing_Legal_Bust_name", "Massacre (Wing) (Bust)" }, - { "Mission_MassacreWing_name", "Massacre (Wing)" }, - { "Mission_OnFoot_Collect_MB_name", "On Foot Collection" }, - { "Mission_OnFoot_Onslaught_MB_name", "On Foot Onslaught" }, - { "Mission_OnFoot_Onslaught_Offline_MB_name", "On Foot Onslaught (Offline)" }, - { "Mission_OnFoot_ProductionHeist_Covert_MB_name", "On Foot Production Heist (Covert)" }, - { "Mission_OnFoot_Reboot_MB_name", "On Foot Reboot" }, - { "Mission_OnFoot_RebootRestore_MB_name", "On Foot Reboot/Restore" }, - { "Mission_OnFoot_Sabotage_Production_Covert_MB_name", "On Foot Sabotage Production (Covert)" }, - { "Mission_OnFoot_Salvage_MB_name", "On Foot Salvage" }, - { "Mission_PassengerVIP_name", "Passenger (VIP)" }, - { "Mission_PassengerVIP_Scientist_FAMINE_name", "Passenger (VIP) (Famine)" }, - { "Mission_Rescue_Planet_name", "Planet Rescue" }, - { "MISSION_Salvage_CivilUnrest_name", "Salvage (Civil Unrest)" }, - { "MISSION_Salvage_Expansion_name", "Salvage (Expansion)" }, - { "MISSION_Salvage_Illegal_name", "Salvage (Illegal)" }, - { "Mission_Salvage_name", "Salvage" }, - { "Mission_Salvage_RankEmp_name", "Salvage (Imperial Navy)" }, - { "MISSION_Salvage_Retreat_name", "Salvage (Retreat)" }, - { "MISSION_Scan_name", "Scan" }, - { "Mission_Sightseeing_Criminal_FAMINE_name", "Sightseeing (Criminal) (Famine)" }, - { "Mission_Sightseeing_name", "Sightseeing" }, - }; + private static Dictionary humanreadable = null; + + private static void LoadMissions() { + try { + string dir = AppDomain.CurrentDomain.BaseDirectory; + string file = Path.Combine(dir, "MissionNames.xml"); + + XmlDocument document = new XmlDocument(); + + using (FileStream stream = new FileStream(file, FileMode.Open)) { + document.Load(stream); + XmlNode missions = document.DocumentElement; + + if (missions == null || missions.Name != "Missions") { + throw new ApplicationException("Invalid XML"); + } + + humanreadable = new Dictionary(); + + foreach (XmlNode mission in missions.ChildNodes) { + string mission_key = mission.Attributes["Name"]?.Value; + string mission_name = mission.InnerText; + + if (mission_key == null || mission_name == null) { + continue; + } + + humanreadable.Add(mission_key, mission_name); + } + } + } catch (Exception) { + humanreadable = null; + } + } public static string MakeHumanReadableName(string name) { - if (name == null) { + LoadMissions(); + + if (humanreadable == null || name == null) { return null; } diff --git a/MissionNames.xml b/MissionNames.xml new file mode 100644 index 0000000..8bf9b66 --- /dev/null +++ b/MissionNames.xml @@ -0,0 +1,65 @@ + + + Regain Footing (Chain) + Donate + Donate Credits (Bust) + Donate Credits + Corporate Assassination (Legal) + Assassination + Provide (Bust) + Provide (Civil Liberty) + Provide (Civil Unrest) + Provide (Famine) + Provide (Industrial) + Provide + Courier (Democracy) + Courier (Elections) + Courier (Expansion) + Courier (Famine) + Courier (Lockdown) + Courier + Courier (Empire) + Delivery (Agriculture) + Delivery (Boom) + Delivery (Democracy) + Delivery (Investment) + Delivery + Delivery (Imperial Rank) + Delivery (Retreat) + Hack Surface Installation (Boom) + Hack Surface Installation (Expansion) + Hack Surface Installation + Hack Megaship + Long Distance Expedition + Massacre (Civil War) + Massacre + Massacre (Imperial Navy) + Massacre (Wing) (Bust) + Massacre (Wing) + On Foot Assassination + On Foot Assassination (Illegal) + On Foot Collect + On Foot Collection + On Foot Delivery (Contact) + On Foot Heist (POI) + On Foot Onslaught + On Foot Onslaught (Offline) + On Foot Production Heist (Covert) + On Foot Production Heist + On Foot Reboot + On Foot Reboot/Restore + On Foot Sabotage Production (Covert) + On Foot Salvage + Passenger (VIP) + Passenger (VIP) (Famine) + Planet Rescue + Salvage (Civil Unrest) + Salvage (Expansion) + Salvage (Illegal) + Salvage + Salvage (Imperial Navy) + Salvage (Retreat) + Scan + Sightseeing (Criminal) (Famine) + Sightseeing + diff --git a/edjournal.csproj b/edjournal.csproj index 5d34b78..eb5cd49 100644 --- a/edjournal.csproj +++ b/edjournal.csproj @@ -37,6 +37,8 @@ + + @@ -77,6 +79,9 @@ + + Always + \ No newline at end of file