Skip to content

Commit

Permalink
Some Maneuver code cleanup
Browse files Browse the repository at this point in the history
- use initializers instead of constructors
- remove API that was orphaned after the scripts module was deleted
- move some allocations to statics, particularly localizations

Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
  • Loading branch information
lamont-granquist committed Jul 26, 2023
1 parent c4a1305 commit 6514738
Show file tree
Hide file tree
Showing 22 changed files with 231 additions and 433 deletions.
16 changes: 9 additions & 7 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,17 @@ csharp_style_var_for_built_in_types = false:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = false:suggestion

# Prefer method-like constructs to have a block body
csharp_style_expression_bodied_methods = false:none
# Prefer constructors to have a block body
csharp_style_expression_bodied_constructors = false:none
csharp_style_expression_bodied_operators = false:none

# Prefer property-like constructs to have an expression-body
csharp_style_expression_bodied_properties = true:none
csharp_style_expression_bodied_indexers = true:none
csharp_style_expression_bodied_accessors = true:none
# Prefer simple expression to be expression-bodied
csharp_style_expression_bodied_methods = when_on_single_line
csharp_style_expression_bodied_operators = when_on_single_line
csharp_style_expression_bodied_properties = when_on_single_line
csharp_style_expression_bodied_indexers = when_on_single_line
csharp_style_expression_bodied_accessors = when_on_single_line
csharp_style_expression_bodied_lambdas = when_on_single_line
csharp_style_expression_bodied_local_functions = when_on_single_line

# Suggest more modern language features when available
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
Expand Down
21 changes: 11 additions & 10 deletions MechJeb2/Maneuver/OperationAdvancedTransfer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@ public class OperationAdvancedTransfer : Operation
{
private enum Mode
{
LimitedTime,
Porkchop
LIMITED_TIME,
PORKCHOP
}

private static readonly string _name = Localizer.Format("#MechJeb_AdvancedTransfer_title");
public override string GetName() => _name;

private static readonly string[]
modeNames =
{
Localizer.Format("#MechJeb_adv_modeName1"), Localizer.Format("#MechJeb_adv_modeName2")
}; //"Limited time","Porkchop selection"

public override string GetName() { return Localizer.Format("#MechJeb_AdvancedTransfer_title"); } //"advanced transfer to another planet"

private double minDepartureTime;
private double minTransferTime;
private double maxDepartureTime;
Expand All @@ -38,7 +39,7 @@ private enum Mode

private const double minSamplingStep = 12 * 3600;

private Mode selectionMode = Mode.Porkchop;
private Mode selectionMode = Mode.PORKCHOP;
private int windowWidth;

private CelestialBody lastTargetCelestial;
Expand Down Expand Up @@ -114,10 +115,10 @@ private void ComputeStuff(Orbit o, double universalTime, MechJebModuleTargetCont

switch (selectionMode)
{
case Mode.LimitedTime:
case Mode.LIMITED_TIME:
worker = new TransferCalculator(o, target.TargetOrbit, universalTime, maxArrivalTime, minSamplingStep, includeCaptureBurn);
break;
case Mode.Porkchop:
case Mode.PORKCHOP:
worker = new AllGraphTransferCalculator(o, target.TargetOrbit, minDepartureTime, maxDepartureTime, minTransferTime,
maxTransferTime, windowWidth, porkchop_Height, includeCaptureBurn);
break;
Expand Down Expand Up @@ -307,12 +308,12 @@ public override void DoParametersGUI(Orbit o, double universalTime, MechJebModul

switch (selectionMode)
{
case Mode.LimitedTime:
case Mode.LIMITED_TIME:
GuiUtils.SimpleTextBox(Localizer.Format("#MechJeb_adv_label5"), maxArrivalTime); //Max arrival time
if (worker != null && !worker.Finished)
GuiUtils.SimpleLabel(Localizer.Format("#MechJeb_adv_computing") + worker.Progress + "%");
break;
case Mode.Porkchop:
case Mode.PORKCHOP:
DoPorkchopGui(o, universalTime, target);
break;
}
Expand Down Expand Up @@ -347,7 +348,7 @@ protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double UT, Me

double target_PeR = lastTargetCelestial.Radius + periapsisHeight * 1000;

if (selectionMode == Mode.Porkchop)
if (selectionMode == Mode.PORKCHOP)
{
if (plot == null || plot.SelectedPoint == null)
throw new OperationException(Localizer.Format("#MechJeb_adv_Exception4")); //Invalid point selected.
Expand Down
28 changes: 10 additions & 18 deletions MechJeb2/Maneuver/OperationApoapsis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,20 @@ namespace MuMech
[UsedImplicitly]
public class OperationApoapsis : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_Ap_title"); } //change apoapsis
private static readonly string _name = Localizer.Format("#MechJeb_Ap_title");
public override string GetName() => _name;

[UsedImplicitly]
[Persistent(pass = (int)Pass.GLOBAL)]
public readonly EditableDoubleMult NewApA = new EditableDoubleMult(200000, 1000);

private readonly TimeSelector _timeSelector;

public OperationApoapsis()
private static readonly TimeReference[] _timeReferences =
{
_timeSelector = new TimeSelector(new[]
{
TimeReference.PERIAPSIS, TimeReference.APOAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE, TimeReference.EQ_DESCENDING, TimeReference.EQ_ASCENDING
});
}
TimeReference.PERIAPSIS, TimeReference.APOAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE, TimeReference.EQ_DESCENDING,
TimeReference.EQ_ASCENDING
};

private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
Expand All @@ -32,16 +31,9 @@ public override void DoParametersGUI(Orbit o, double universalTime, MechJebModul
protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double universalTime, MechJebModuleTargetController target)
{
double ut = _timeSelector.ComputeManeuverTime(o, universalTime, target);
Vector3d deltaV = OrbitalManeuverCalculator.DeltaVToChangeApoapsis(o, ut, NewApA + o.referenceBody.Radius);

return new List<ManeuverParameters>
{
new ManeuverParameters(OrbitalManeuverCalculator.DeltaVToChangeApoapsis(o, ut, NewApA + o.referenceBody.Radius), ut)
};
}

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
return new List<ManeuverParameters> { new ManeuverParameters(deltaV, ut) };
}
}
}
28 changes: 10 additions & 18 deletions MechJeb2/Maneuver/OperationCircularize.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,24 @@ namespace MuMech
[UsedImplicitly]
public class OperationCircularize : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_Maneu_circularize_title"); } //"circularize"
private static readonly string _name = Localizer.Format("#MechJeb_Maneu_circularize_title");
public override string GetName() => _name;

private readonly TimeSelector _timeSelector;

public OperationCircularize()
private static readonly TimeReference[] _timeReferences =
{
_timeSelector = new TimeSelector(new[]
{
TimeReference.APOAPSIS, TimeReference.PERIAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE
});
}
TimeReference.APOAPSIS, TimeReference.PERIAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE
};

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
_timeSelector.DoChooseTimeGUI();
}
private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target) => _timeSelector.DoChooseTimeGUI();

protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double universalTime, MechJebModuleTargetController target)
{
double ut = _timeSelector.ComputeManeuverTime(o, universalTime, target);
return new List<ManeuverParameters> { new ManeuverParameters(OrbitalManeuverCalculator.DeltaVToCircularize(o, ut), ut) };
}
Vector3d deltaV = OrbitalManeuverCalculator.DeltaVToCircularize(o, ut);

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
return new List<ManeuverParameters> { new ManeuverParameters(deltaV, ut) };
}
}
}
3 changes: 2 additions & 1 deletion MechJeb2/Maneuver/OperationCourseCorrection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ namespace MuMech
[UsedImplicitly]
public class OperationCourseCorrection : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_approach_title"); } //fine tune closest approach to target
private static readonly string _name = Localizer.Format("#MechJeb_approach_title");
public override string GetName() => _name;

[UsedImplicitly]
[Persistent(pass = (int)Pass.GLOBAL)]
Expand Down
24 changes: 9 additions & 15 deletions MechJeb2/Maneuver/OperationEccentricity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,19 @@ namespace MuMech
{
public class OperationEccentricity : Operation
{
public override string GetName() { return "change eccentricity"; }
private static readonly string _name = "change eccentricity";
public override string GetName() => _name;

[UsedImplicitly]
[Persistent(pass = (int)Pass.GLOBAL)]
public readonly EditableDoubleMult NewEcc = new EditableDouble(0);

private readonly TimeSelector _timeSelector;

public OperationEccentricity()
private static readonly TimeReference[] _timeReferences =
{
_timeSelector = new TimeSelector(new[]
{
TimeReference.APOAPSIS, TimeReference.PERIAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE
});
}
TimeReference.APOAPSIS, TimeReference.PERIAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE
};

private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
Expand All @@ -30,13 +28,9 @@ public override void DoParametersGUI(Orbit o, double universalTime, MechJebModul
protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double universalTime, MechJebModuleTargetController target)
{
double ut = _timeSelector.ComputeManeuverTime(o, universalTime, target);
Vector3d deltaV = OrbitalManeuverCalculator.DeltaVToChangeEccentricity(o, ut, NewEcc);

return new List<ManeuverParameters> { new ManeuverParameters(OrbitalManeuverCalculator.DeltaVToChangeEccentricity(o, ut, NewEcc), ut) };
}

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
return new List<ManeuverParameters> { new ManeuverParameters(deltaV, ut) };
}
}
}
24 changes: 9 additions & 15 deletions MechJeb2/Maneuver/OperationEllipticize.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ namespace MuMech
[UsedImplicitly]
public class OperationEllipticize : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_both_title"); } //change both Pe and Ap
private static readonly string _name = Localizer.Format("#MechJeb_both_title");
public override string GetName() => _name;

//change both Pe and Ap
[UsedImplicitly]
[Persistent(pass = (int)Pass.GLOBAL)]
public EditableDoubleMult NewApA = new EditableDoubleMult(200000, 1000);
Expand All @@ -18,12 +20,9 @@ public class OperationEllipticize : Operation
[Persistent(pass = (int)Pass.GLOBAL)]
public EditableDoubleMult NewPeA = new EditableDoubleMult(100000, 1000);

private readonly TimeSelector _timeSelector;
private static readonly TimeReference[] _timeReferences = { TimeReference.APOAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE };

public OperationEllipticize()
{
_timeSelector = new TimeSelector(new[] { TimeReference.APOAPSIS, TimeReference.X_FROM_NOW, TimeReference.ALTITUDE });
}
private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
Expand Down Expand Up @@ -55,16 +54,11 @@ protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double univer
o.referenceBody.Radius.ToSI(3) + "m)"); //"new periapsis cannot be lower than minus the radius of <<1>>"
}

return new List<ManeuverParameters>
{
new ManeuverParameters(
OrbitalManeuverCalculator.DeltaVToEllipticize(o, ut, NewPeA + o.referenceBody.Radius, NewApA + o.referenceBody.Radius), ut)
};
}
double newPeR = NewPeA + o.referenceBody.Radius;
double newApR = NewApA + o.referenceBody.Radius;
Vector3d deltaV = OrbitalManeuverCalculator.DeltaVToEllipticize(o, ut, newPeR, newApR);

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
return new List<ManeuverParameters> { new ManeuverParameters(deltaV, ut)};
}
}
}
23 changes: 8 additions & 15 deletions MechJeb2/Maneuver/OperationInclination.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,20 @@ namespace MuMech
[UsedImplicitly]
public class OperationInclination : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_inclination_title"); } //change inclination
private static readonly string _name = Localizer.Format("#MechJeb_inclination_title");
public override string GetName() => _name;

[UsedImplicitly]
[Persistent(pass = (int)Pass.GLOBAL)]
public EditableDouble NewInc = 0;

private readonly TimeSelector _timeSelector;

public OperationInclination()
private static readonly TimeReference[] _timeReferences =
{
_timeSelector = new TimeSelector(new[]
{
TimeReference.EQ_HIGHEST_AD, TimeReference.EQ_NEAREST_AD, TimeReference.EQ_ASCENDING, TimeReference.EQ_DESCENDING,
TimeReference.X_FROM_NOW
});
}
TimeReference.EQ_HIGHEST_AD, TimeReference.EQ_NEAREST_AD, TimeReference.EQ_ASCENDING, TimeReference.EQ_DESCENDING,
TimeReference.X_FROM_NOW
};

private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
Expand All @@ -36,10 +34,5 @@ protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double univer

return new List<ManeuverParameters> { new ManeuverParameters(OrbitalManeuverCalculator.DeltaVToChangeInclination(o, ut, NewInc), ut) };
}

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
}
}
}
3 changes: 2 additions & 1 deletion MechJeb2/Maneuver/OperationInterplanetaryTransfer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ namespace MuMech
[UsedImplicitly]
public class OperationInterplanetaryTransfer : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_transfer_title"); } //transfer to another planet
private static readonly string _name = Localizer.Format("#MechJeb_transfer_title");
public override string GetName() => _name;

[UsedImplicitly]
[Persistent(pass = (int)(Pass.LOCAL | Pass.TYPE | Pass.GLOBAL))]
Expand Down
20 changes: 5 additions & 15 deletions MechJeb2/Maneuver/OperationKillRelVel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,14 @@ namespace MuMech
[UsedImplicitly]
public class OperationKillRelVel : Operation
{
public override string GetName() { return Localizer.Format("#MechJeb_match_v_title"); } //match velocities with target
private static readonly string _name = Localizer.Format("#MechJeb_match_v_title");
public override string GetName() => _name;

private readonly TimeSelector _timeSelector;
private static readonly TimeReference[] _timeReferences = { TimeReference.CLOSEST_APPROACH, TimeReference.X_FROM_NOW };

public OperationKillRelVel()
{
_timeSelector = new TimeSelector(new[] { TimeReference.CLOSEST_APPROACH, TimeReference.X_FROM_NOW });
}
private static readonly TimeSelector _timeSelector = new TimeSelector(_timeReferences);

public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target)
{
_timeSelector.DoChooseTimeGUI();
}
public override void DoParametersGUI(Orbit o, double universalTime, MechJebModuleTargetController target) => _timeSelector.DoChooseTimeGUI();

protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double universalTime, MechJebModuleTargetController target)
{
Expand All @@ -34,10 +29,5 @@ protected override List<ManeuverParameters> MakeNodesImpl(Orbit o, double univer

return new List<ManeuverParameters> { new ManeuverParameters(dV, ut) };
}

public TimeSelector GetTimeSelector() //Required for scripts to save configuration
{
return _timeSelector;
}
}
}

0 comments on commit 6514738

Please sign in to comment.