X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Fopenrocket%2Fsavers%2FRocketComponentSaver.java;h=e009f863770a0a415d47c5c3af53aa1396dd8e05;hb=4da92a4e994992a78d62a7ca21c88d6c41292d6f;hp=bc58ff403f47e98de95ec30dce05348518e33433;hpb=a297db7cfb4074b8e60152cdfb9a8ceecd1e4c2b;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java index bc58ff40..e009f863 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java @@ -9,6 +9,7 @@ import net.sf.openrocket.file.RocketSaver; import net.sf.openrocket.material.Material; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.rocketcomponent.ComponentAssembly; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; @@ -19,15 +20,22 @@ import net.sf.openrocket.util.LineStyle; public class RocketComponentSaver { - + protected RocketComponentSaver() { // Prevent instantiation from outside the package } - + protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List elements) { elements.add("" + RocketSaver.escapeXML(c.getName()) + ""); - - + + ComponentPreset preset = c.getPresetComponent(); + if ( preset != null ) { + elements.add(""); + } + + // Save color and line style if significant if (!(c instanceof Rocket || c instanceof ComponentAssembly)) { Color color = c.getColor(); @@ -35,23 +43,23 @@ public class RocketComponentSaver { elements.add(""); } - + LineStyle style = c.getLineStyle(); if (style != null) { // Type names currently equivalent to the enum names except for case. elements.add("" + style.name().toLowerCase(Locale.ENGLISH) + ""); } } - - + + // Save position unless "AFTER" if (c.getRelativePosition() != RocketComponent.Position.AFTER) { // The type names are currently equivalent to the enum names except for case. String type = c.getRelativePosition().name().toLowerCase(Locale.ENGLISH); elements.add("" + c.getPositionValue() + ""); } - - + + // Overrides boolean overridden = false; if (c.isMassOverridden()) { @@ -66,26 +74,26 @@ public class RocketComponentSaver { elements.add("" + c.getOverrideSubcomponents() + ""); } - - + + // Comment if (c.getComment().length() > 0) { elements.add("" + RocketSaver.escapeXML(c.getComment()) + ""); } - + } - - - - + + + + protected final String materialParam(Material mat) { return materialParam("material", mat); } - - + + protected final String materialParam(String tag, Material mat) { String str = "<" + tag; - + switch (mat.getType()) { case LINE: str += " type=\"line\""; @@ -99,27 +107,27 @@ public class RocketComponentSaver { default: throw new BugException("Unknown material type: " + mat.getType()); } - - return str + " density=\"" + mat.getDensity() + "\">" + RocketSaver.escapeXML(mat.getName()) + ""; + + return str + " density=\"" + mat.getDensity() + "\" key=\"" + mat.getKey() + "\">" + RocketSaver.escapeXML(mat.getName()) + ""; } - - + + protected final List motorMountParams(MotorMount mount) { if (!mount.isMotorMount()) return Collections.emptyList(); - + String[] motorConfigIDs = ((RocketComponent) mount).getRocket().getMotorConfigurationIDs(); List elements = new ArrayList(); - + elements.add(""); - + for (String id : motorConfigIDs) { Motor motor = mount.getMotor(id); - + // Nothing is stored if no motor loaded if (motor == null) continue; - + elements.add(" "); if (motor.getMotorType() != Motor.Type.UNKNOWN) { elements.add(" " + motor.getMotorType().name().toLowerCase(Locale.ENGLISH) + ""); @@ -133,27 +141,27 @@ public class RocketComponentSaver { elements.add(" " + RocketSaver.escapeXML(motor.getDesignation()) + ""); elements.add(" " + motor.getDiameter() + ""); elements.add(" " + motor.getLength() + ""); - + // Motor delay if (mount.getMotorDelay(id) == Motor.PLUGGED) { elements.add(" none"); } else { elements.add(" " + mount.getMotorDelay(id) + ""); } - + elements.add(" "); } - + elements.add(" " + mount.getIgnitionEvent().name().toLowerCase(Locale.ENGLISH).replace("_", "") + ""); - + elements.add(" " + mount.getIgnitionDelay() + ""); elements.add(" " + mount.getMotorOverhang() + ""); - + elements.add(""); - + return elements; } - + }