public List <LaunchBay> GetLaunchBays() // may return null { JObject baylist = json.I("ship").I("launchBays").Object(); if (baylist != null) { List <LaunchBay> list = new List <LaunchBay>(); foreach (var kvpslots in baylist) { JObject subslots = kvpslots.Value.Object(); foreach (var kvpsubslots in subslots) { LaunchBay m = new LaunchBay() { Location = kvpslots.Key, SubSlot = kvpsubslots.Key, Name = kvpsubslots.Value["name"].Str(), LocName = kvpsubslots.Value["locName"].Str(), Rebuilds = kvpsubslots.Value["rebuilds"].Int(), Loadout = kvpsubslots.Value["loadout"].Str(), LoadoutName = kvpsubslots.Value["loadoutName"].Str(), }; list.Add(m); } } return(list); } return(null); }
public static LaunchBay LaunchBayFromJson(dynamic json, Ship ship) { LaunchBay launchbay = new LaunchBay() { name = json.Name }; foreach (Compartment cpt in ship.compartments) { if (cpt.name == launchbay.name) { switch (cpt.module.basename) { case "PlanetaryVehicleHangar": launchbay.type = "SRV"; break; case "FighterHangar": launchbay.type = "Fighter"; break; } } } // Launchbays have name of form "Slotnn_Sizenn", like compartments Match matches = Regex.Match((string)json.Name, @"Size([0-9]+)"); if (matches.Success) { launchbay.size = Int32.Parse(matches.Groups[1].Value); if (json.Value is JObject) { for (int subslot = 0; subslot <= 5; subslot++) { if (json.Value.TryGetValue("SubSlot" + subslot, out JToken value)) { launchbay.vehicles.Add(Vehicle.FromJson(subslot, value)); } } } } return(launchbay); }