Skip to content

Commit

Permalink
fixes and refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
pellinor0 committed Dec 20, 2015
1 parent 8f4d97b commit 1756049
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
Binary file modified GameData/TweakScale/plugins/Scale.dll
Binary file not shown.
8 changes: 2 additions & 6 deletions Scale.cs
Original file line number Diff line number Diff line change
Expand Up @@ -673,16 +673,12 @@ public float GetModuleMass(float defaultMass)
if (_setupRun && IsRescaled())
{
// todo: optimierung falls das auch in flight drankommt
var scalMode = ScaleType.Exponents["Part"]._exponents["mass"];
var multBy = ScaleType.Exponents["Part"].getMultFactor("mass", scalMode, ScalingFactor);
return multBy-1;
return ScaleType.Exponents["Part"].getMassDelta(_prefabPart.mass, ScalingFactor);
}
else
return 0;
return 0;
}



public override string ToString()
{
var result = "TweakScale{\n";
Expand Down
41 changes: 24 additions & 17 deletions ScaleExponents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -255,38 +255,45 @@ static private void Rescale(MemberUpdater current, MemberUpdater baseValue, stri
}
}

public float getMultFactor(string name, ScalingMode scalingMode, ScalingFactor factor)
// mass delta (ScaledMass - prefabMass) for the getModuleCost method
// -> should only be called for the "Part" node
public float getMassDelta(float prefabMass, ScalingFactor factor)
{
var exponentValue = scalingMode.Exponent;
if (!_exponents.ContainsKey("mass"))
return 0;

var exponentValue = _exponents["mass"].Exponent;
var exponent = double.NaN;
double[] values = null;

if (exponentValue.Contains(','))
{
if (factor.index == -1)
{
Tools.LogWf("Value list used for freescale part exponent field {0}: {1}", name, exponentValue);
return 1;
Tools.LogWf("Value list used for freescale part exponent field {0}: {1}", "mass", exponentValue);
return 0;
}
values = Tools.ConvertString(exponentValue, new double[] { });
float[] values = null;
values = Tools.ConvertString(exponentValue, new float[] { });
if (values.Length <= factor.index)
{
Tools.LogWf("Too few values given for {0}. Expected at least {1}, got {2}: {3}", name, factor.index + 1, values.Length, exponentValue);
return 1;
Tools.LogWf("Too few values given for {0}. Expected at least {1}, got {2}: {3}", "mass", factor.index + 1, values.Length, exponentValue);
return 0;
}

return values[factor.index] - prefabMass;
}
else if (!double.TryParse(exponentValue, out exponent))
else
{
Tools.LogWf("Invalid exponent {0} for field {1}", exponentValue, name);
}

double multiplyBy = 1;
if (!double.IsNaN(exponent))
multiplyBy = Math.Pow(scalingMode.UseRelativeScaling ? factor.relative.linear : factor.absolute.linear, exponent);
if (!double.TryParse(exponentValue, out exponent) || double.IsNaN(exponent))
{
Tools.LogWf("Invalid exponent {0} for field {1}", exponentValue, "mass");
return 0;
}

return (float)multiplyBy;
return prefabMass * (float)(Math.Pow(factor.absolute.linear, exponent)-1);
}
}


private bool ShouldIgnore(Part part)
{
return _ignores.Any(v => part.Modules.Contains(v));
Expand Down

0 comments on commit 1756049

Please sign in to comment.