Esempio n. 1
0
        private static List <EDDNEconomy> prepareEconomyInformation()
        {
            List <EDDNEconomy> eddnEconomies = new List <EDDNEconomy>();

            if (EDDI.Instance.CurrentStation.economyShares != null)
            {
                foreach (EconomyShare economy in EDDI.Instance.CurrentStation.economyShares)
                {
                    EDDNEconomy eddnEconomy = new EDDNEconomy(economy);
                    eddnEconomies.Add(eddnEconomy);
                }
            }

            return(eddnEconomies);
        }
Esempio n. 2
0
        private void sendCommodityInformation()
        {
            // It's possible that the commodity data, if it is here, has already come from EDDB.  We use the average price
            // as a marker: this isn't visible in EDDB, so if we have average price we know that this is data from the companion
            // API and should be reported
            if (EDDI.Instance.CurrentStation != null && EDDI.Instance.CurrentStation.commodities != null && EDDI.Instance.CurrentStation.commodities.Count > 0 && EDDI.Instance.CurrentStation.commodities[0].avgprice != null)
            {
                List <EDDNEconomy> eddnEconomies = new List <EDDNEconomy>();
                if (EDDI.Instance.CurrentStation.economies != null)
                {
                    foreach (CompanionAppEconomy economy in EDDI.Instance.CurrentStation.economies)
                    {
                        EDDNEconomy eddnEconomy = new EDDNEconomy();
                        eddnEconomy.name       = economy.name;
                        eddnEconomy.proportion = economy.proportion;
                        eddnEconomies.Add(eddnEconomy);
                    }
                }

                List <EDDNCommodity> eddnCommodities = new List <EDDNCommodity>();
                foreach (Commodity commodity in EDDI.Instance.CurrentStation.commodities)
                {
                    if (commodity.category == "NonMarketable")
                    {
                        continue;
                    }
                    EDDNCommodity eddnCommodity = new EDDNCommodity();
                    eddnCommodity.name          = commodity.EDName;
                    eddnCommodity.meanPrice     = (int)commodity.avgprice;
                    eddnCommodity.buyPrice      = (int)commodity.buyprice;
                    eddnCommodity.stock         = (int)commodity.stock;
                    eddnCommodity.stockBracket  = commodity.stockbracket;
                    eddnCommodity.sellPrice     = (int)commodity.sellprice;
                    eddnCommodity.demand        = (int)commodity.demand;
                    eddnCommodity.demandBracket = commodity.demandbracket;
                    if (commodity.StatusFlags.Count > 0)
                    {
                        eddnCommodity.statusFlags = commodity.StatusFlags;
                    }
                    eddnCommodities.Add(eddnCommodity);
                }
                ;

                // Only send the message if we have commodities
                if (eddnCommodities.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", systemName);
                    data.Add("stationName", EDDI.Instance.CurrentStation.name);
                    if (eddnEconomies.Count > 0)
                    {
                        data.Add("economies", eddnEconomies);
                    }
                    data.Add("commodities", eddnCommodities);
                    if (EDDI.Instance.CurrentStation.prohibited.Count > 0)
                    {
                        data.Add("prohibited", EDDI.Instance.CurrentStation.prohibited);
                    }

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

                    Logging.Debug("EDDN message is: " + JsonConvert.SerializeObject(body));
                    sendMessage(body);
                }
            }
        }