private void readInventory(CargoMonitorConfiguration configuration = null) { lock (inventoryLock) { // Obtain current cargo inventory from configuration configuration = configuration ?? CargoMonitorConfiguration.FromFile(); cargoCarried = configuration.cargocarried; updateDat = configuration.updatedat; // Build a new inventory List <Cargo> newInventory = new List <Cargo>(); // Start with the materials we have in the log foreach (Cargo cargo in configuration.cargo) { if (cargo.commodityDef == null) { cargo.commodityDef = CommodityDefinition.FromEDName(cargo.edname); } cargo.CalculateNeed(); newInventory.Add(cargo); } // Now order the list by name newInventory = newInventory.OrderBy(c => c.invariantName).ToList(); // Update the inventory inventory.Clear(); foreach (Cargo cargo in newInventory) { inventory.Add(cargo); } } }
/// <summary> /// Obtain cargo configuration from a file. If the file name is not supplied the the default /// path of Constants.Data_DIR\cargomonitor.json is used /// </summary> public static CargoMonitorConfiguration FromFile(string filename = null) { if (filename == null) { filename = Constants.DATA_DIR + @"\cargomonitor.json"; } CargoMonitorConfiguration configuration = new CargoMonitorConfiguration(); if (File.Exists(filename)) { string json = Files.Read(filename); if (json != null) { try { configuration = FromJsonString(json); } catch (Exception ex) { Logging.Debug("Failed to read cargo configuration", ex); } } } if (configuration == null) { configuration = new CargoMonitorConfiguration(); } configuration.dataPath = filename; return(configuration); }
public void writeInventory() { lock (inventoryLock) { // Write cargo configuration with current inventory CargoMonitorConfiguration configuration = new CargoMonitorConfiguration(); configuration.cargo = inventory; configuration.cargocarried = cargoCarried; configuration.ToFile(); } // Make sure the UI is up to date RaiseOnUIThread(InventoryUpdatedEvent, inventory); }
/// <summary> /// Obtain cargo configuration from a json. /// </summary> public static CargoMonitorConfiguration FromJson(dynamic json) { CargoMonitorConfiguration configuration = new CargoMonitorConfiguration(); if (json != null) { try { configuration = JsonConvert.DeserializeObject <CargoMonitorConfiguration>(json); } catch (Exception ex) { Logging.Debug("Failed to obtain cargo configuration", ex); } } return(configuration); }
public void writeInventory() { lock (inventoryLock) { // Write cargo configuration with current inventory CargoMonitorConfiguration configuration = new CargoMonitorConfiguration(); cargoCarried = 0; foreach (Cargo cargo in inventory) { cargoCarried += cargo.total; } EDDI.Instance.eventHandler(new CargoUpdatedEvent(DateTime.UtcNow, cargoCarried)); configuration.cargo = inventory; configuration.cargocarried = cargoCarried; configuration.ToFile(); } // Make sure the UI is up to date RaiseOnUIThread(InventoryUpdatedEvent, inventory); }
public void initializeCargoMonitor(CargoMonitorConfiguration configuration = null) { readInventory(configuration); Logging.Info($"Initialized {MonitorName()}"); }
public void initializeCargoMonitor(CargoMonitorConfiguration configuration = null) { readInventory(configuration); Logging.Info("Initialised " + MonitorName() + " " + MonitorVersion()); }
/// <summary> /// Create a new CargoMonitor, optionally passing in a non-default configuration /// </summary> /// <param name="configuration">The configuration to use. If null, it will be read from the file system</param> public CargoMonitor(CargoMonitorConfiguration configuration) { inventory = new ObservableCollection <Cargo>(); BindingOperations.CollectionRegistering += Inventory_CollectionRegistering; initializeCargoMonitor(configuration); }