From f16d4cdc3ebac78a3092ce5b18466dfe3f3350b9 Mon Sep 17 00:00:00 2001 From: Simon Weinberger Date: Sat, 27 May 2023 22:42:19 +0200 Subject: [PATCH] use input fluid temperature for boilers --- YAFCmodel/Model/ProductionTable.cs | 2 +- YAFCmodel/Model/RecipeParameters.cs | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/YAFCmodel/Model/ProductionTable.cs b/YAFCmodel/Model/ProductionTable.cs index 63b16fc7..7a26a7d4 100644 --- a/YAFCmodel/Model/ProductionTable.cs +++ b/YAFCmodel/Model/ProductionTable.cs @@ -252,7 +252,7 @@ public override async Task Solve(ProjectPage page) for (var i = 0; i < allRecipes.Count; i++) { var recipe = allRecipes[i]; - recipe.parameters.CalculateParameters(recipe.recipe, recipe.entity, recipe.fuel, recipe); + recipe.parameters.CalculateParameters(recipe.recipe, recipe.entity, recipe.fuel, recipe.variants, recipe); var variable = solver.MakeNumVar(0f, double.PositiveInfinity, recipe.recipe.name); if (recipe.fixedBuildings > 0f) { diff --git a/YAFCmodel/Model/RecipeParameters.cs b/YAFCmodel/Model/RecipeParameters.cs index dd4d4005..714fb178 100644 --- a/YAFCmodel/Model/RecipeParameters.cs +++ b/YAFCmodel/Model/RecipeParameters.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace YAFC.Model { @@ -56,7 +57,7 @@ public void Clear() modules = default; } - public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel, IModuleFiller moduleFiller) + public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel, HashSet variants, IModuleFiller moduleFiller) { warningFlags = 0; if (entity == null) @@ -135,6 +136,14 @@ public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel, if (fluid != null) { float inputTemperature = fluid.temperature; + foreach (var variant in variants) + { + if (variant is Fluid fluidVariant && fluidVariant.originalName == fluid.originalName) + { + inputTemperature = fluidVariant.temperature; + } + } + var outputTemp = recipe.products[0].goods.fluid.temperature; var deltaTemp = (outputTemp - inputTemperature); var energyPerUnitOfFluid = deltaTemp * fluid.heatCapacity;