Changeset - 3463e3d12e78
[Not reviewed]
default
0 1 0
Jason Maltzen (jmaltzen) - 7 years ago 2018-05-18 18:07:15
jason.maltzen@unsanctioned.net
Fix a bug where recipe generation could use up to 1 more than MaxConcentration
1 file changed with 17 insertions and 8 deletions:
0 comments (0 inline, 0 general)
RecipeGenerator.cs
Show inline comments
...
 
@@ -191,2 +191,10 @@ namespace DesertPaintLab
 

	
 
        // Generate paint recipes.
 
        // minConcentration - the minimum permitted concentration in a recipe (10 for paint, 50 for ribbons)
 
        // maxConcentration - the maximum concentrataion for a recipe
 
        // minReagents - the minimum number of ingredients in a recipe
 
        // maxReagents - the maximum number of ingredients allowed in a recipe
 
        // fullQuantityDepth - at this depth of ingredient or below, allow up to fullQuantity of any reagent
 
        // fullQuantity - the maximum amount of any reagent to permit up to the full quantity depth. After that, reagents are limited by the
 
        //                per-reagent value
 
        public void BeginRecipeGeneration(uint minConcentration, uint maxConcentration, uint minReagents, uint maxReagents, uint fullQuantityDepth, uint fullQuantity)
...
 
@@ -494,3 +502,5 @@ namespace DesertPaintLab
 
                    {
 
                        uint targetQuantity = (node.ReagentCount <= FullQuantityDepth) ? ((uint)node.ReagentCount * FullQuantity) : node.MaxConcentration + 1;
 
                        uint targetQuantity = (node.ReagentCount <= FullQuantityDepth)
 
                            ? ((uint)node.ReagentCount * FullQuantity) 
 
                            : node.MaxConcentration + 1;
 
                        do {
...
 
@@ -511,4 +521,6 @@ namespace DesertPaintLab
 
                        // breadth-first search
 
                        uint targetQuantity = MinConcentration-1;
 
                        uint quantityLimit = (node.ReagentCount <= FullQuantityDepth) ? (FullQuantity * (uint)node.ReagentCount) : node.MaxConcentration;
 
                        uint targetQuantity = MinConcentration - 1;
 
                        uint quantityLimit = (node.ReagentCount <= FullQuantityDepth) 
 
                            ? (FullQuantity * (uint)node.ReagentCount) 
 
                            : node.MaxConcentration;
 
                        do {
...
 
@@ -516,3 +528,3 @@ namespace DesertPaintLab
 
                            node.InitForQuantity(targetQuantity);
 
                        } while ((targetQuantity <= quantityLimit) && (node.CurrentTargetQuantity != node.UsedQuantity));
 
                        } while ((targetQuantity < quantityLimit) && (node.CurrentTargetQuantity != node.UsedQuantity));
 
    
...
 
@@ -520,6 +532,3 @@ namespace DesertPaintLab
 
                        {
 
                            if (Progress != null)
 
                            {
 
                                Progress(this, null);
 
                            }
 
                            Progress?.Invoke(this, null);
 
                        }
0 comments (0 inline, 0 general)