public void EvaluateTradingDesires(IEnumerable <MagusTradingDesires> mageTradeDesires) { List <VisTradeOffer> offers = new List <VisTradeOffer>(); List <BookTradeOffer> bookTradeOffers = new List <BookTradeOffer>(); List <VisForBookOffer> buyBookOffers = new List <VisForBookOffer>(); List <VisForBookOffer> sellBookOffers = new List <VisForBookOffer>(); foreach (MagusTradingDesires tradeDesires in mageTradeDesires) { if (tradeDesires.Mage == this) { continue; } var bookTrades = _tradeDesires.GenerateBookTradeOffers(tradeDesires); bookTradeOffers.AddRange(bookTrades); var bookBuyOffers = _tradeDesires.GenerateBuyBookOffers(tradeDesires); if (bookBuyOffers != null) { buyBookOffers.AddRange(bookBuyOffers); } var bookSellOffers = _tradeDesires.GenerateSellBookOffers(tradeDesires); if (bookSellOffers != null) { sellBookOffers.AddRange(bookSellOffers); } var visOffersGenerated = _tradeDesires.GenerateVisOffers(tradeDesires); if (visOffersGenerated != null) { offers.AddRange(visOffersGenerated); } } ProcessVisOffers(offers); ProcessBookOffers(bookTradeOffers, buyBookOffers, sellBookOffers); // figure out book for book }