public RecipeEntry(Recipe recipe, bool isProduction, Goods currentItem, bool atCurrentMilestones) { this.recipe = recipe; var amount = isProduction ? recipe.GetProduction(currentItem) : recipe.GetConsumption(currentItem); recipeFlow = recipe.ApproximateFlow(atCurrentMilestones); flow = recipeFlow * amount; specificEfficiency = isProduction ? recipe.Cost() / amount : 0f; if (!recipe.IsAccessible()) { entryStatus = EntryStatus.NotAccessible; } else if (!recipe.IsAccessibleWithCurrentMilestones()) { entryStatus = EntryStatus.NotAccessibleWithCurrentMilestones; } else { var waste = recipe.RecipeWaste(atCurrentMilestones); if (recipe.specialType != FactorioObjectSpecialType.Normal && recipeFlow <= 0.01f) { entryStatus = EntryStatus.Special; } else if (waste > 0f) { entryStatus = EntryStatus.Normal; } else { entryStatus = EntryStatus.Useful; } } }
public float GetRecipeFlow(Recipe recipe) => recipe.ApproximateFlow();