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); }
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); }
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); }
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); }
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); }
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); }