public void Progress(IEnumerable <Resource> resourceDeposit, SellOffPile sellOffPile) { _resources.AddRange(resourceDeposit); SellOffExcess <Resource.Iron>(sellOffPile, Sale.RequestedIron); SellOffExcess <Resource.Copper>(sellOffPile, Sale.RequestedCopper); SellOffExcess <Resource.Silver>(sellOffPile, Sale.RequestedSilver); SellOffExcess <Resource.Zinc>(sellOffPile, Sale.RequestedZinc); }
private void SellOffExcess <T>(SellOffPile sellOffPile, int needed) where T : Resource { var extra = _resources.OfType <T>().Count() - needed; if (extra > 0) { var extras = _resources.OfType <T>().Take(extra); foreach (var ex in extras) { _resources.Remove(ex); sellOffPile.AddToPile(ex); } } }
public void ReceiveResources(IEnumerable <Resource> resources, SellOffPile sellOffPile) { var resourceQueue = new Queue <Resource>(resources); while (resourceQueue.Any() && !IsFull) { unitsOfResources.Add(resourceQueue.Dequeue()); } if (sellOffPile != null) { while (resourceQueue.Any()) { sellOffPile.AddToPile(resourceQueue.Dequeue()); } } }
private GameBoard( IEnumerable <Mine> mines, IEnumerable <Location> locations, LocationsDeck locationDeck, IEnumerable <Corporation> corporations, CorporationsDeck corporationsDeck, SalesDeck salesDeck, IEnumerable <Route> routes) { Mines = mines; Locations = locations; LocationsDeck = locationDeck; Corporations = corporations; CorporationsDeck = corporationsDeck; SalesDeck = salesDeck; Routes = routes; SellOffPile = new SellOffPile(); }
public SellOfPipBehavior(int pipNumber, SellOffPile sellOffPile) { this.pipNumber = pipNumber; this.sellOffPile = sellOffPile; }