void _groomContainers(ContainerManager contManager) { this.log("Grooming containers..."); foreach (var fromCont in contManager.GetContainers()) { int iFrom = fromCont.GetInventory().ItemCount - 1; while (iFrom >= 0) { MyInventoryItem item = fromCont.GetInventory().GetItemAt(iFrom).Value; int fromAff = fromCont.GetAffinity(item); int prevCount = fromCont.GetInventory().ItemCount; int prevFrom = iFrom; foreach (var toCont in contManager.GetSortedContainers(item)) { if (toCont.GetAffinity(item) > fromAff) { fromCont.GetInventory().TransferItemTo(toCont.GetInventory(), item); if (prevCount != fromCont.GetInventory().ItemCount) { --iFrom; break; } } else { --iFrom; break; } } if (prevFrom == iFrom) { --iFrom; } } } this.log("Done"); }
void groomOutputInventories(GridManager gridManager, ContainerManager contManager) { var collection = this._outputInventories[this._outputCounter]; this.log($"Grooming containers {this._outputCounter + 1}/{this._outputInventories.Count}: {collection.Name}"); foreach (var fromInv in collection.GetOutputInventories()) { int iFrom = fromInv.ItemCount - 1; while (iFrom >= 0) { MyInventoryItem item = fromInv.GetItemAt(iFrom).Value; int prevCount = fromInv.ItemCount; int prevFrom = iFrom; foreach (var toCont in contManager.GetSortedContainers(item)) { toCont.GetInventory().TransferItemFrom(fromInv, iFrom); if (prevCount != fromInv.ItemCount) { --iFrom; break; } } if (prevFrom == iFrom) { --iFrom; } } } ++this._outputCounter; if (this._outputCounter >= this._outputInventories.Count) { this._outputCounter = 0; } this.log("Done"); }