Skip to content

Commit

Permalink
More robust Scale migration scheme - frankly, the results will be sam…
Browse files Browse the repository at this point in the history
…e but things are slightly more straighforward now.
  • Loading branch information
Lisias committed Feb 2, 2023
1 parent cb7f210 commit d2452d0
Showing 1 changed file with 11 additions and 26 deletions.
37 changes: 11 additions & 26 deletions Source/Scale/Scale.cs
Original file line number Diff line number Diff line change
Expand Up @@ -731,50 +731,35 @@ private UpgradePipelineStatus IsPartMatchesPrefab(KSPe.ConfigNodeWithSteroids no

private ConfigNode FixPartScaling(ConfigNode source, KSPe.ConfigNodeWithSteroids node)
{
Log.dbg("FixPartScaling \n{0}\n======\n{1}", source, node);
Log.dbg("FixPartScaling {0}", source);

TweakScale prefab = this.part.partInfo.partPrefab.Modules.GetModule<TweakScale>(0);
string prefabSuffix = prefab.ScaleType.Suffix??"";
float prefabDefaultScale = prefab.ScaleType.DefaultScale;

string craftSuffix = node.GetValue("suffix", "");
float craftDefaultScale = node.GetValue<float>("defaultScale", prefabDefaultScale);
float craftScale = node.GetValue<float>("currentScale", prefabDefaultScale);

float craftRelativeScale = 0f;
if ("".Equals(craftSuffix) && 1.0f == craftDefaultScale) // Handles normalized scaling scheme
{
craftRelativeScale = craftScale;
}
else if ("%".Equals(craftSuffix) && 100f == craftDefaultScale) // Handles percentage scaling scheme
{
craftRelativeScale = craftScale / 100f;
}
else if ("m".Equals(prefabSuffix.ToLower())) // Handles Metric scaling scheme
{
craftRelativeScale = craftScale / craftDefaultScale;
}
else // In Kraken, we trust! :P
{
craftRelativeScale = craftScale / craftDefaultScale;
}

float craftRelativeScale = craftScale / craftDefaultScale;
source.SetValue("defaultScale", prefabDefaultScale);

float newCurrentScale = 0f;
if ("".Equals(prefabSuffix) && 1.0f == prefabDefaultScale) // Handles normalized scaling scheme
if ("%".Equals(prefabSuffix) && 100f == prefabDefaultScale) // Handles percentage scaling scheme
{
newCurrentScale = craftRelativeScale;
newCurrentScale = 100f * craftRelativeScale;
}
else if ("%".Equals(prefabSuffix) && 100f == prefabDefaultScale) // Handles percentage scaling scheme
else if ("".Equals(prefabSuffix) && 1.0f == prefabDefaultScale) // Handles normalized scaling scheme
{
newCurrentScale = 100f * craftRelativeScale;
newCurrentScale = craftRelativeScale;
}
else if ("m".Equals(prefabSuffix.ToLower())) // Handles Metric scaling scheme
else if ("m".Equals(prefabSuffix.ToLower())) // Handles Metric scaling scheme
{
newCurrentScale = prefabDefaultScale * craftRelativeScale;
}
else// Sounds stupid, but sooner or later someone will try to scale things in Imperial Units and I need to change something here. :)
// TODO: Cook a way to allow customizable Migrations, instead of brute forcing my way on the problem as done here.
{
Log.warn("Unrecognized Measuring Unit on scaling scheme for {0} used by {1}.", prefab.ScaleType, this.part);
newCurrentScale = prefabDefaultScale * craftRelativeScale;
}
source.SetValue("currentScale", newCurrentScale);
Expand All @@ -792,7 +777,7 @@ private ConfigNode FixPartScaling(ConfigNode source, KSPe.ConfigNodeWithSteroids

private ConfigNode FixPartScalingSameType(ConfigNode source, KSPe.ConfigNodeWithSteroids node)
{
Log.dbg("FixPartScalingSameType \n{0}\n======\n{1}", source, node);
Log.dbg("FixPartScalingSameType \n", source, node);

float prefabDefaultScale = this.scaler.prefab.Modules.GetModule<TweakScale>(0).defaultScale;
float craftDefaultScale = node.GetValue<float>("defaultScale", prefabDefaultScale);
Expand Down

0 comments on commit d2452d0

Please sign in to comment.