public static int GetSourceMass(this Voyage voyage, ITradeItemsDatabase itemsDatabase) { if (voyage == null) { throw new ArgumentNullException(nameof(voyage)); } if (itemsDatabase == null) { throw new ArgumentNullException(nameof(itemsDatabase)); } return(voyage.Exchanges .Sum(ex => ex.GetSourceMass(itemsDatabase).GetValueOrDefault())); }
public static string GetWarning(this Voyage voyage, ITradeItemsDatabase itemsDatabase) { if (voyage == null) { throw new ArgumentNullException(nameof(voyage)); } if (itemsDatabase == null) { throw new ArgumentNullException(nameof(itemsDatabase)); } if (voyage.GetSourceMass(itemsDatabase) > voyage.Ship.MaxMass || voyage.GetDestMass(itemsDatabase) > voyage.Ship.MaxMass) { return("Перегруз"); } return(string.Empty); }
public static string GetError(this Voyage voyage, ITradeItemsDatabase itemsDatabase) { if (voyage == null) { throw new ArgumentNullException(nameof(voyage)); } if (itemsDatabase == null) { throw new ArgumentNullException(nameof(itemsDatabase)); } var sourceMass = 0; var destMass = 0; var orevMass = false; foreach (var exchange in voyage.Exchanges) { for (var i = 0; i < exchange.Count; i++) { sourceMass += itemsDatabase.GetMass(exchange.SourceItem.Level); destMass += itemsDatabase.GetMass(exchange.DestItem.Level) * exchange.Ratio; if (sourceMass > voyage.Ship.MaxMass || destMass > voyage.Ship.MaxMass) { if (!orevMass) { orevMass = true; } else { return("Не влезет"); } } } } return(string.Empty); }
public SearchEngine(ITradeItemsDatabase tradeItemsDatabase, ITranslateService translateService) { _tradeItemsDatabase = tradeItemsDatabase ?? throw new ArgumentNullException(nameof(tradeItemsDatabase)); _translateService = translateService ?? throw new ArgumentNullException(nameof(translateService)); }