internal static FactoryType getMostTeoreticalProfitable(Province province) { List <FactoryType> possiblefactories = province.WhatFactoriesCouldBeBuild(); float possibleProfit = 0; float maxProfitFound = 0; foreach (FactoryType ft in possiblefactories) { // if (province.CanBuildNewFactory(ft) || province.CanUpgradeFactory(ft)) { possibleProfit = ft.getPossibleProfit(province); if (possibleProfit > maxProfitFound) { maxProfitFound = possibleProfit; } } } if (maxProfitFound > 0f) { foreach (FactoryType ft in possiblefactories) { if (ft.getPossibleProfit(province) == maxProfitFound && (province.CanBuildNewFactory(ft) || province.CanUpgradeFactory(ft))) { return(ft); } } } return(null); }