예제 #1
0
        private OrbitalBody(YamlNode node, int _planetID, int _solarSystemID)
        {
            orbitalBodyID = _planetID;
            solarSystemID = _solarSystemID;
            YamlMappingNode mapping = (YamlMappingNode)node;

            foreach (var entry in mapping.Children)
            {
                string paramName = entry.Key.ToString();
                switch (paramName)
                {
                case "celestialIndex":
                    celestialIndex = Int32.Parse(entry.Value.ToString());
                    break;

                case "asteroidBeltNameID":
                case "moonNameID":
                case "planetNameID":
                    orbitalBodyNameID = Int32.Parse(entry.Value.ToString());
                    break;

                case "typeID":
                    typeID = Int32.Parse(entry.Value.ToString());
                    break;

                case "radius":
                    radius = Double.Parse(entry.Value.ToString());
                    break;

                case "position":
                    position = Location.ParseLocation(entry.Value);
                    break;

                case "planetAttributes":
                    attributes = new OrbitalBodyAttributes(entry.Value);
                    break;

                case "statistics":
                    statistics = new OrbitalBodyStatistics(entry.Value);
                    break;

                case "moons":
                    moons = OrbitalBody.LoadYAML(entry.Value, _solarSystemID);
                    break;

                case "asteroidBelts":
                    asteroidBelts = OrbitalBody.LoadYAML(entry.Value, _solarSystemID);
                    break;

                case "npcStations":
                    stations = NPCStation.LoadYAML(entry.Value, _solarSystemID);
                    break;

                default:
                    System.Diagnostics.Debug.WriteLine("OrbitalBody unknown value:" + entry.Key + " = " + entry.Value);
                    break;
                }
            }
        }
예제 #2
0
 public static bool LoadAll(BinaryReader load)
 {
     lock (orbitalBodies)
     {
         int count = load.ReadInt32();
         for (int i = 0; i < count; i++)
         {
             OrbitalBody planet = new OrbitalBody(load);
             orbitalBodies[planet.orbitalBodyID] = planet;
         }
     }
     return(true);
 }
예제 #3
0
        public static List <long> LoadYAML(YamlNode yaml, int _solarSystemID)
        {
            if (yaml == null)
            {
                return(null);
            }
            List <long>     systemPlanets = new List <long>();
            YamlMappingNode mapping       = (YamlMappingNode)yaml;

            foreach (var entry in mapping.Children)
            {
                int         _planetID = Int32.Parse(entry.Key.ToString());
                OrbitalBody planet    = new OrbitalBody(entry.Value, _planetID, _solarSystemID);
                lock (orbitalBodies)
                {
                    orbitalBodies[planet.orbitalBodyID] = planet;
                }
                systemPlanets.Add(_planetID);
            }
            return(systemPlanets);
        }
예제 #4
0
        private SolarSystem(YamlNode node)
        {
            YamlNode        gateNode         = null;
            YamlNode        planetNode       = null;
            YamlNode        starNode         = null;
            YamlNode        secondarySunNode = null;
            YamlMappingNode mapping          = (YamlMappingNode)node;

            foreach (var entry in mapping.Children)
            {
                string paramName = entry.Key.ToString();
                switch (paramName)
                {
                case "solarSystemID":
                    solarSystemID = Int32.Parse(entry.Value.ToString());
                    break;

                case "solarSystemNameID":
                    solarSystemNameID = Int32.Parse(entry.Value.ToString());
                    break;

                case "regional":
                    regional = Boolean.Parse(entry.Value.ToString());
                    break;

                case "border":
                    border = Boolean.Parse(entry.Value.ToString());
                    break;

                case "corridor":
                    corridor = Boolean.Parse(entry.Value.ToString());
                    break;

                case "fringe":
                    fringe = Boolean.Parse(entry.Value.ToString());
                    break;

                case "hub":
                    hub = Boolean.Parse(entry.Value.ToString());
                    break;

                case "international":
                    international = Boolean.Parse(entry.Value.ToString());
                    break;

                case "luminosity":
                    luminosity = Double.Parse(entry.Value.ToString());
                    break;

                case "radius":
                    radius = Double.Parse(entry.Value.ToString());
                    break;

                case "security":
                    security = Double.Parse(entry.Value.ToString());
                    break;

                case "sunTypeID":
                    sunTypeID = Int32.Parse(entry.Value.ToString());
                    break;

                case "center":
                    center = Location.ParseLocation(entry.Value);
                    break;

                case "max":
                    max = Location.ParseLocation(entry.Value);
                    break;

                case "min":
                    min = Location.ParseLocation(entry.Value);
                    break;

                case "wormholeClassID":
                    wormholeClassID = Int32.Parse(entry.Value.ToString());
                    break;

                case "descriptionID":
                    descriptionID = Int32.Parse(entry.Value.ToString());
                    break;

                case "factionID":
                    factionID = Int32.Parse(entry.Value.ToString());
                    break;

                case "securityClass":
                    securityClass = entry.Value.ToString();
                    break;

                case "disallowedAnchorCategories":
                    disallowedAnchorCategories = new List <int>();
                    YamlSequenceNode seq = (YamlSequenceNode)entry.Value;
                    foreach (YamlNode seqNode in seq.Children)
                    {
                        disallowedAnchorCategories.Add(Int32.Parse(seqNode.ToString()));
                    }
                    break;

                case "planets":
                    planetNode = entry.Value;
                    break;

                case "star":
                    starNode = entry.Value;
                    break;

                case "stargates":
                    gateNode = entry.Value;
                    break;

                case "secondarySun":
                    secondarySunNode = entry.Value;
                    break;

                case "visualEffect":
                    visualEffect = entry.Value.ToString();
                    break;

                case "disallowedAnchorGroups":
                    disallowedAnchorGroups = YamlUtils.LoadIntList(entry.Value);
                    break;

                default:
                    System.Diagnostics.Debug.WriteLine("SolarSystem unknown value:" + entry.Key + " = " + entry.Value);
                    break;
                }
            }
            // Parse these here so we can know we have the solarSystemID.
            if (gateNode != null)
            {
                stargates = Stargate.LoadYAML(gateNode, solarSystemID);
            }
            if (planetNode != null)
            {
                planets = OrbitalBody.LoadYAML(planetNode, solarSystemID);
            }
            if (starNode != null)
            {
                star = new Star(starNode, solarSystemID);
            }
            if (secondarySunNode != null)
            {
                secondarySun = new SecondarySun(secondarySunNode, solarSystemID);
            }
        }