private List<String> GetSimplifiedModes()
{
List<String> r = new List<String>();
if (fModeToSimple.Count < 1) {
List<CMap> raw = this.GetMapDefines();
foreach (CMap m in raw) {
String simple = null;
if (fGameVersion == GameVersion.BF3) {
switch (m.GameMode) {
case "Conquest Large":
case "Assault64":
simple = "Conquest Large";
break;
case "Conquest Small": // Fix for Issue #34
case "Assault":
case "Assault #2":
case "Conquest Domination":
case "Scavenger":
simple = "Conq Small, Dom, Scav";
break;
case "TDM":
case "TDM Close Quarters":
simple = "Team Deathmatch";
break;
case "Tank Superiority":
case "Air Superiority":
simple = "Superiority";
break;
case "Rush":
case "CTF":
case "Squad Deathmatch":
case "Gun Master":
case "Squad Rush":
simple = m.GameMode;
break;
default:
simple = "Unknown or New Mode";
break;
}
} else if (fGameVersion == GameVersion.BF4) {
switch (m.GameMode) {
case "Conquest Large":
case "Conquest Small":
case "Domination":
case "Defuse":
case "Obliteration":
case "Squad Obliteration":
case "Rush":
case "Squad Deathmatch":
case "Team Deathmatch":
case "CTF":
case "Gun Master":
simple = m.GameMode;
break;
case "Air Superiority":
simple = "Superiority";
break;
case "Carrier Assault Large":
simple = "NS Carrier Large";
break;
case "Carrier Assault Small":
simple = "NS Carrier Small";
break;
case "Chain Link":
simple = "DT Chain Link";
break;
default:
simple = "Unknown or New Mode";
break;
}
} else if (fGameVersion == GameVersion.BFH) {
switch (m.GameMode) {
case "Blood Money":
case "Conquest Large":
case "Conquest Small":
case "Crosshair":
case "Heist":
case "Hotwire":
case "Rescue":
case "Team Deathmatch":
case "Bounty Hunter":
simple = m.GameMode;
break;
default:
simple = "Unknown or New Mode";
break;
}
} else {
simple = "Unknown or New Mode";
}
if (fModeToSimple.ContainsKey(m.PlayList)) {
if (fModeToSimple[m.PlayList] != simple) {
ConsoleWarn("For mode " + m.PlayList + " old value " + fModeToSimple[m.PlayList] + " != new value " + simple);
}
} else {
fModeToSimple[m.PlayList] = simple;
}
}
}
bool last = false;
foreach (KeyValuePair<String,String> p in fModeToSimple) {
if (r.Contains(p.Value)) continue;
if (p.Value == "Unknown or New Mode") { last = true; continue; }
r.Add(p.Value); // collect up all the simple GameMode names
}
if (last) r.Add("Unknown or New Mode"); // make sure this is last
return r;
}