Fix ratio issues on SlipSolution

This commit is contained in:
PrPleGoo
2020-04-14 15:41:23 +02:00
parent d261a21b57
commit 409d873403
2 changed files with 24 additions and 3 deletions

View File

@@ -181,11 +181,13 @@ namespace Content.Shared.Chemistry
newSolution = new Solution();
var newTotalVolume = ReagentUnit.New(0M);
var ratio = (TotalVolume - quantity).Decimal() / TotalVolume.Decimal();
var remainingVolume = TotalVolume;
for (var i = 0; i < _contents.Count; i++)
{
var reagent = _contents[i];
var ratio = (remainingVolume - quantity).Decimal() / remainingVolume.Decimal();
remainingVolume -= reagent.Quantity;
var newQuantity = reagent.Quantity * ratio;
var splitQuantity = reagent.Quantity - newQuantity;
@@ -193,10 +195,11 @@ namespace Content.Shared.Chemistry
_contents[i] = new ReagentQuantity(reagent.ReagentId, newQuantity);
newSolution._contents.Add(new ReagentQuantity(reagent.ReagentId, splitQuantity));
newTotalVolume += splitQuantity;
quantity -= splitQuantity;
}
TotalVolume = TotalVolume * ratio;
newSolution.TotalVolume = newTotalVolume;
TotalVolume -= newTotalVolume;
return newSolution;
}