예제 #1
0
        private JournalOperation ExtractCargoDump(JObject data)
        {
            var dump = new DumpOperation
            {
                ResetFilter = new HashSet <Kind>()
                {
                    Kind.Commodity
                },
                DumpOperations = new List <MaterialOperation>()
            };

            foreach (var jToken in data["Inventory"])
            {
                dynamic cc           = jToken;
                string  materialName = cc.Name;
                int?    count        = cc.Value ?? cc.Count;

                if (!converter.TryGet(materialName, out materialName))
                {
                    MessageBox.Show(string.Format(languages.Translate("Unknown material, please contact the author ! {0}"), (string)data["Name"]));
                    continue;
                }

                var operation = new MaterialOperation()
                {
                    MaterialName = materialName,
                    Size         = count ?? 1
                };

                dump.DumpOperations.Add(operation);
            }

            return(dump);
        }
예제 #2
0
        private JournalOperation ExtractCargoDump(JObject data)
        {
            var dump = new DumpOperation
            {
                ResetFilter = new HashSet <Kind>
                {
                    Kind.Commodity
                },
                DumpOperations = new List <MaterialOperation>()
            };

            foreach (var jToken in data["Inventory"])
            {
                dynamic cc           = jToken;
                var     materialName = converter.GetOrCreate((string)cc.Name);
                int?    count        = cc.Value ?? cc.Count;

                var operation = new MaterialOperation
                {
                    MaterialName = materialName,
                    Size         = count ?? 1
                };

                dump.DumpOperations.Add(operation);
            }

            return(dump);
        }
예제 #3
0
        private JournalOperation ExtractMaterialsDump(JObject data)
        {
            var dump = new DumpOperation
            {
                ResetFilter = new HashSet <Kind>
                {
                    Kind.Data,
                    Kind.Material
                },
                DumpOperations = new List <MaterialOperation>()
            };

            foreach (var jToken in data["Raw"].Union(data["Manufactured"]).Union(data["Encoded"]))
            {
                dynamic cc           = jToken;
                var     materialName = converter.GetOrCreate((string)cc.Name);
                int?    count        = cc.Value ?? cc.Count;

                var operation = new MaterialOperation
                {
                    MaterialName = materialName,
                    Size         = count ?? 1
                };

                dump.DumpOperations.Add(operation);
            }

            return(dump);
        }
예제 #4
0
        private JournalOperation ExtractMaterialsDump(JObject data)
        {
            var dump = new DumpOperation
            {
                ResetFilter = new HashSet <Kind>()
                {
                    Kind.Data,
                    Kind.Material
                },
                DumpOperations = new List <MaterialOperation>()
            };

            foreach (var jToken in data["Raw"].Union(data["Manufactured"]).Union(data["Encoded"]))
            {
                dynamic cc = jToken;
                string  materialName;
                int?    count = cc.Value ?? cc.Count;

                if (!converter.TryGet((string)cc.Name, out materialName))
                {
                    MessageBox.Show(string.Format(languages.Translate("Unknown material, please contact the author ! {0}"), cc.Name));
                    continue;
                }

                var operation = new MaterialOperation()
                {
                    MaterialName = materialName,
                    Size         = count ?? 1
                };

                dump.DumpOperations.Add(operation);
            }

            return(dump);
        }
예제 #5
0
        private JournalOperation ExtractCargoDump(JObject data)
        {
            // ED version 3.3 (December 11th 2018) made some breaking changes:
            //  - Cargo event was added after buying/selling/scooping/ejecting commodities/limpets
            //  - But unfortunately this Cargo event is different to normal Cargo event and does not contain the Inventory key (so it needs to be ignored)
            //  - Note that when cmdr is loaded/game is started, Cargo event DOES contain the Inventory field
            if (data["Inventory"] == null)
            {
                return(null);
            }

            var dump = new DumpOperation
            {
                ResetFilter = new HashSet <Kind>
                {
                    Kind.Commodity
                },
                DumpOperations = new List <MaterialOperation>()
            };

            var inventoryData = data["Inventory"];

            if (inventoryData != null)
            {
                foreach (var jToken in inventoryData)
                {
                    dynamic cc = jToken;
                    if (!converter.TryGet(Kind.Commodity, (string)cc.Name, out var commodityName))
                    {
                        continue;
                    }

                    int?count = cc.Value ?? cc.Count;

                    var operation = new MaterialOperation
                    {
                        MaterialName = commodityName,
                        Size         = count ?? 1
                    };

                    dump.DumpOperations.Add(operation);
                }
            }

            return(dump);
        }
예제 #6
0
        private JournalOperation ExtractShipLockerMaterials(JObject data)
        {
            Dictionary <string, MaterialOperation> operations = new Dictionary <string, MaterialOperation>();

            foreach (var kind in new string[] { "Items", "Data", "Components" })
            {
                if (data.ContainsKey(kind))
                {
                    foreach (var jToken in data[kind])
                    {
                        dynamic cc           = jToken;
                        var     materialName = converter.GetOrCreate(Kind.OdysseyIngredient, (string)cc.Name);
                        int?    count        = cc.Value ?? cc.Count;
                        if (!operations.ContainsKey(materialName))
                        {
                            operations.Add(materialName, new MaterialOperation
                            {
                                MaterialName = materialName,
                                Size         = 0
                            });
                        }
                        operations[materialName].Size += count ?? 1;
                    }
                }
            }

            if (operations.Values.Any())
            {
                var dump = new DumpOperation
                {
                    ResetFilter = new HashSet <Kind>
                    {
                        Kind.OdysseyIngredient
                    },
                    DumpOperations = new List <MaterialOperation>()
                };

                dump.DumpOperations.AddRange(operations.Values);
                return(dump);
            }

            return(null);
        }