Beispiel #1
0
        public static Module ModuleFromProfile(string name, dynamic json)
        {
            long   id     = (long)json["module"]["id"];
            Module module = ModuleDefinitions.ModuleFromEliteID(id);

            if (module.Name == null)
            {
                // Unknown module; log an error so that we can update the definitions
                DataProviderService.LogError("No definition for ship module " + json["module"].ToString());
            }

            module.Cost     = (long)json["module"]["value"];
            module.Enabled  = (bool)json["module"]["on"];
            module.Priority = (int)json["module"]["priority"];
            // Be sensible with health - round it unless it's very low
            decimal Health = (decimal)json["module"]["health"] / 10000;

            if (Health < 5)
            {
                module.Health = Math.Round(Health, 1);
            }
            else
            {
                module.Health = Math.Round(Health);
            }

            if (json["module"]["modifiers"] != null && firstRun)
            {
                DataProviderService.LogError("Module with modification " + json["module"].ToString());
            }
            return(module);
        }
Beispiel #2
0
        public static Module ModuleFromJson(string name, JObject json)
        {
            long   id     = (long)json["module"]["id"];
            Module module = ModuleDefinitions.ModuleFromEliteID(id);

            if (module.name == null)
            {
                // Unknown module; log an error so that we can update the definitions
                Logging.Error("No definition for ship module", json["module"].ToString(Formatting.None));
            }

            module.price    = (long)json["module"]["value"];
            module.enabled  = (bool)json["module"]["on"];
            module.priority = (int)json["module"]["priority"];
            // Be sensible with health - round it unless it's very low
            decimal Health = (decimal)json["module"]["health"] / 10000;

            if (Health < 5)
            {
                module.health = Math.Round(Health, 1);
            }
            else
            {
                module.health = Math.Round(Health);
            }

            // Flag if module has modifications
            if (json["module"]["modifiers"] != null)
            {
                module.modified = true;
            }

            return(module);
        }
Beispiel #3
0
        private void sendOutfittingInformation()
        {
            if (EDDI.Instance.CurrentStation != null && EDDI.Instance.CurrentStation.outfitting != null)
            {
                List <string> eddnModules = new List <string>();
                foreach (Module module in EDDI.Instance.CurrentStation.outfitting)
                {
                    if ((!ModuleDefinitions.IsPP(module)) &&
                        (module.EDName.StartsWith("Int_") || module.EDName.StartsWith("Hpt_") || module.EDName.Contains("_Armour_")) &&
                        (!(module.EDName == "Int_PlanetApproachSuite")))
                    {
                        eddnModules.Add(module.EDName);
                    }
                }

                // Only send the message if we have modules
                if (eddnModules.Count > 0)
                {
                    IDictionary <string, object> data = new Dictionary <string, object>();
                    data.Add("timestamp", DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"));
                    data.Add("systemName", EDDI.Instance.CurrentStation.systemname);
                    data.Add("stationName", EDDI.Instance.CurrentStation.name);
                    data.Add("modules", eddnModules);

                    EDDNBody body = new EDDNBody();
                    body.header    = generateHeader();
                    body.schemaRef = "https://eddn.edcd.io/schemas/outfitting/2" + (EDDI.Instance.inBeta ? "/test" : "");
                    body.message   = data;

                    sendMessage(body);
                }
            }
        }
Beispiel #4
0
        // Obtain the list of outfitting modules from the profile
        public static List <Module> OutfittingFromProfile(dynamic json)
        {
            List <Module> Modules = new List <Module>();

            if (json["lastStarport"] != null && json["lastStarport"]["modules"] != null)
            {
                foreach (dynamic moduleJson in json["lastStarport"]["modules"])
                {
                    dynamic module = moduleJson.Value;
                    // Not interested in paintjobs, decals, ...
                    if (module["category"] == "weapon" || module["category"] == "module")
                    {
                        Module Module = ModuleDefinitions.ModuleFromEliteID((long)module["id"]);
                        if (Module.Name == null)
                        {
                            // Unknown module; log an error so that we can update the definitions
                            DataProviderService.LogError("No definition for outfitting module " + module.ToString());
                        }
                        Module.Cost = module["cost"];
                        Modules.Add(Module);
                    }
                }
            }

            return(Modules);
        }
        // Obtain the list of outfitting modules from the profile
        public static List <Module> OutfittingFromProfile(dynamic json)
        {
            List <Module> Modules = new List <Module>();

            if (json["lastStarport"] != null && json["lastStarport"]["modules"] != null)
            {
                foreach (dynamic moduleJson in json["lastStarport"]["modules"])
                {
                    dynamic module = moduleJson.Value;
                    // Not interested in paintjobs, decals, ...
                    if (module["category"] == "weapon" || module["category"] == "module")
                    {
                        Module Module = ModuleDefinitions.ModuleFromEliteID((long)module["id"]);
                        if (Module.name == null)
                        {
                            // Unknown module; log an error so that we can update the definitions
                            Logging.Error("No definition for outfitting module", module.ToString(Formatting.None));
                            // Set the name from the JSON
                            Module.EDName = (string)module["name"];
                        }
                        Module.price = module["cost"];
                        Modules.Add(Module);
                    }
                }
            }

            return(Modules);
        }
Beispiel #6
0
        // Obtain the list of outfitting modules from the profile
        public static List <Module> OutfittingFromProfile(dynamic json)
        {
            List <Module> Modules = new List <Module>();

            if (json["lastStarport"] != null && json["lastStarport"]["modules"] != null)
            {
                List <Module> moduleErrors = new List <Module>();
                foreach (dynamic moduleJson in json["lastStarport"]["modules"])
                {
                    dynamic module = moduleJson.Value;
                    // Not interested in paintjobs, decals, ...
                    if (module["category"] == "weapon" || module["category"] == "module" || module["category"] == "utility")
                    {
                        Module Module = ModuleDefinitions.ModuleFromEliteID((long)module["id"]);
                        if (Module.name == null)
                        {
                            // Unknown module; batch and report so that we can update the definitions
                            moduleErrors.Add(module);
                            // Set the name from the JSON
                            Module.EDName = (string)module["name"];
                        }
                        Module.price = module["cost"];
                        Modules.Add(Module);
                    }
                }
                if (moduleErrors.Count > 0)
                {
                    Logging.Report("Module definition errors", JsonConvert.SerializeObject(moduleErrors));
                }
            }

            return(Modules);
        }
 private void ReadModuleDefinitions(XmlReader reader)
 {
     reader.ReadStartElement("moduleDefinitions");
     do
     {
         reader.ReadStartElement("moduleDefinition");
         ModuleDefinitionInfo moduleDefinition = new ModuleDefinitionInfo();
         moduleDefinition.ReadXml(reader);
         ModuleDefinitions.Add(moduleDefinition.FriendlyName, moduleDefinition);
     } while (reader.ReadToNextSibling("moduleDefinition"));
 }
        protected virtual ModuleDefinitions GetStaticEntities(Transaction trans, ModuleDefinitions modules, IEnumerable <GlobalObjectKey> entityKeys)
        {
            foreach (var entityGlobalKey in entityKeys)
            {
                var eSpaceKey     = entityGlobalKey.OwnerKey.AsGuid.ToString();
                var entityKey     = entityGlobalKey.Key.AsGuid.ToString();
                var staticRecords = GetStaticRecords(trans, entityGlobalKey);

                var module         = modules.GetOrAdd(eSpaceKey, () => new ModuleDefinition());
                var staticEntities = module.StaticEntities ?? new StaticEntities();
                staticEntities.Add(entityKey, staticRecords);
            }

            return(modules);
        }
Beispiel #9
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Reads a Module Definitions from an XmlReader
        /// </summary>
        /// <param name="reader">The XmlReader to use</param>
        /// <history>
        ///     [cnurse]	01/17/2008   Created
        /// </history>
        /// -----------------------------------------------------------------------------
        private void ReadModuleDefinitions(XmlReader reader)
        {
            reader.ReadStartElement("moduleDefinitions");
            do
            {
                reader.ReadStartElement("moduleDefinition");

                //Create new ModuleDefinition object
                var moduleDefinition = new ModuleDefinitionInfo();

                //Load it from the Xml
                moduleDefinition.ReadXml(reader);

                //Add to the collection
                ModuleDefinitions.Add(moduleDefinition.FriendlyName, moduleDefinition);
            } while (reader.ReadToNextSibling("moduleDefinition"));
        }
Beispiel #10
0
        public ServiceExecutionResult Execute()
        {
            if (Types == null)
            {
                if (ModuleDefinitions == null)
                {
                    throw new ServiceExecutionException(
                              "ModuleDefinitions must be specified to parser type environment.");
                }
                else
                {
                    Types = ModuleDefinitions
                            .SelectMany(m => m.Types)
                            .SelectMany(t => t.GetAllNestedTypes());
                }
            }
            var tenv = ComputeTypeEnvironment();

            return(new TenvParserResult(tenv));
        }
        public static Module ModuleFromProfile(string name, JObject json)
        {
            long   id     = (long)json["module"]["id"];
            Module module = ModuleDefinitions.ModuleFromEliteID(id);

            if (module.name == null)
            {
                // Unknown module; log an error so that we can update the definitions
                Logging.Error("No definition for ship module", json["module"].ToString(Formatting.None));
            }

            module.price    = (long)json["module"]["value"];
            module.enabled  = (bool)json["module"]["on"];
            module.priority = (int)json["module"]["priority"];
            // Be sensible with health - round it unless it's very low
            decimal Health = (decimal)json["module"]["health"] / 10000;

            if (Health < 5)
            {
                module.health = Math.Round(Health, 1);
            }
            else
            {
                module.health = Math.Round(Health);
            }

            if (json["module"]["modifiers"] != null)
            {
                Dictionary <int, Modification> modifications = new Dictionary <int, Modification>();
                foreach (dynamic modifier in json["module"]["modifiers"]["modifiers"])
                {
                    Modification.Modify((string)modifier["name"], (decimal)modifier["value"], ref modifications);
                }
                Modification.FixUpModifications(module, modifications);

                module.modifications = modifications.Values.ToList();
            }
            return(module);
        }
 public Data(string[] entityModuleNames)
 {
     this.EntityModuleNames = entityModuleNames;
     this.ModuleDefinitions = new ModuleDefinitions();
 }