import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.MotorMount;
+import net.sf.openrocket.rocketcomponent.RecoveryDevice;
+import net.sf.openrocket.rocketcomponent.RecoveryDevice.DeployEvent;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.TubeCoupler;
/*
* File version 1.5 is requires for:
* - saving designs using ComponentPrests
+ * - recovery device deployment on lower stage separation
*
* File version 1.4 is required for:
* - saving simulation data
* Otherwise use version 1.0.
*/
- // Search the rocket for any ComponentPrests
- {
- Rocket r = document.getRocket();
- Iterator<RocketComponent> componentIterator = r.iterator();
- boolean usesComponentPreset = false;
- while ( !usesComponentPreset && componentIterator.hasNext() ) {
- RocketComponent c = componentIterator.next();
- if ( c.getPresetComponent() != null ) {
- usesComponentPreset = true;
- }
- }
- if ( usesComponentPreset ) {
+ // Search the rocket for any ComponentPresets (version 1.5)
+ for (RocketComponent c : document.getRocket()) {
+ if (c.getPresetComponent() != null) {
return FILE_VERSION_DIVISOR + 5;
}
}
+ // Search for recovery device deployment type LOWER_STAGE_SEPARATION (version 1.5)
+ for (RocketComponent c : document.getRocket()) {
+ if (c instanceof RecoveryDevice) {
+ if (((RecoveryDevice) c).getDeployEvent() == DeployEvent.LOWER_STAGE_SEPARATION) {
+ return FILE_VERSION_DIVISOR + 5;
+ }
+ }
+ }
+
// Check if design has simulations defined (version 1.4)
if (document.getSimulationCount() > 0) {
return FILE_VERSION_DIVISOR + 4;
}
// Check for motor definitions (version 1.4)
- Iterator<RocketComponent> iterator = document.getRocket().iterator();
- while (iterator.hasNext()) {
- RocketComponent c = iterator.next();
+ for (RocketComponent c : document.getRocket()) {
if (!(c instanceof MotorMount))
continue;
}
// Check for fin tabs (version 1.1)
- iterator = document.getRocket().iterator();
- while (iterator.hasNext()) {
- RocketComponent c = iterator.next();
-
+ for (RocketComponent c : document.getRocket()) {
// Check for fin tabs
if (c instanceof FinSet) {
FinSet fin = (FinSet) c;