Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }