public void MakeNewConsumablesToExpend(bool autoConverting = true) { List <ConsumableRate> priority = _currentConsumablesNeed.OrderBy(x => x.significanceRate).ToList(); Dictionary <ConsumableData, int> inStock = GetConsumablesCountsInStockByNeed(); ConsumablesExpending ce = new ConsumablesExpending(priority, inStock); CurrentConsExpending = ce; ce.FormExpending(); if (autoConverting) { Dictionary <ConsumableData, int> allStock = GetConsumablesCountsInStock(); ce.AddUnnecessaryConsumables(allStock); ce.BalanceLackingConsumables(); } float penalty = ce.CalculatePenalty(); ce.CalculatePenaltyRate(GetAffilatedConsumablesNeed()); }
public void OccupyAmountedResources() { if (_consumablesCards.Count == 0) { return; } DepartmentResources dr = GetResourcesForType(_consumablesCards[0].type); List <ConsumableCard> cardsToDelete = new List <ConsumableCard>(); foreach (ConsumableToExpend cons in CurrentConsExpending.ExpendList) { int rest = cons.Spended; foreach (ConsumableCard card in _consumablesCards) { if (rest <= 0) { break; } if (card.ConsumableData == cons.Resource) { int minAmount = Math.Min(card.Amount, rest); card.Expend(minAmount); rest -= minAmount; //need to call remove card in display? if (card.Amount == 0) { cardsToDelete.Add(card); } } } foreach (ConsumableCard card in cardsToDelete) { dr.Cards.Remove(card); } } ResourcesChanged(dr); CurrentConsExpending = null; }