From c203d9844e115d7f1b7c9fd2b214896cfb7844cc Mon Sep 17 00:00:00 2001 From: iobyte Date: Tue, 6 Sep 2022 15:52:39 +0000 Subject: [PATCH] trackeditor: fix version 3 track import and export git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@8459 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 78316149b6a12224a3c3b5d73231a427d786a6db Former-commit-id: 5dc3406f769567cc13c63a904cfaf16504f3e7c3 --- .../trackeditor/plugin/torcs/XmlReader.java | 31 ++++++++- .../trackeditor/plugin/torcs/XmlWriter.java | 65 ++++++++++++------- 2 files changed, 71 insertions(+), 25 deletions(-) diff --git a/src/tools/trackeditor/plugin/torcs/XmlReader.java b/src/tools/trackeditor/plugin/torcs/XmlReader.java index 13496f77b..c928aed03 100644 --- a/src/tools/trackeditor/plugin/torcs/XmlReader.java +++ b/src/tools/trackeditor/plugin/torcs/XmlReader.java @@ -575,7 +575,24 @@ public class XmlReader */ private void setPitsV3(Element mainTrack) { - editorFrame.getTrackData().getMainTrack().getPits().setStyle(getAttrIntValue(mainTrack, "pit type")); + String pitStyle = getAttrStrValue(mainTrack, "pit type"); + + if (pitStyle != null) + { + if (pitStyle.equals("no pit")) + { + editorFrame.getTrackData().getMainTrack().getPits().setStyle(0); + } + else if (pitStyle.equals("track side")) + { + editorFrame.getTrackData().getMainTrack().getPits().setStyle(1); + } + else if (pitStyle.equals("seperate path")) + { + editorFrame.getTrackData().getMainTrack().getPits().setStyle(2); + } + } + editorFrame.getTrackData().getMainTrack().getPits().setSide(getAttrStrValue(mainTrack, "pit side")); editorFrame.getTrackData().getMainTrack().getPits().setEntry(getAttrStrValue(mainTrack, "pit entry")); editorFrame.getTrackData().getMainTrack().getPits().setStart(getAttrStrValue(mainTrack, "pit start")); @@ -765,8 +782,16 @@ public class XmlReader shape.setProfilStartTangentRight(getAttrNumValue(seg, "profil start tangent right", "%")); shape.setProfilEndTangentRight(getAttrNumValue(seg, "profil end tangent right", "%")); - setSide(seg, left, "Left"); - setSide(seg, right, "Right"); + if (editorFrame.getTrackData().getHeader().getVersion() == 3) + { + setSideV3(seg, left, "l"); + setSideV3(seg, right, "r"); + } + else + { + setSide(seg, left, "Left"); + setSide(seg, right, "Right"); + } return shape; } diff --git a/src/tools/trackeditor/plugin/torcs/XmlWriter.java b/src/tools/trackeditor/plugin/torcs/XmlWriter.java index c52e6dd07..2b1719e2b 100644 --- a/src/tools/trackeditor/plugin/torcs/XmlWriter.java +++ b/src/tools/trackeditor/plugin/torcs/XmlWriter.java @@ -145,7 +145,7 @@ public class XmlWriter if (editorFrame.getTrackData().getHeader().getVersion() == 3) { getSideV3(track, editorFrame.getTrackData().getMainTrack().getLeft(), "l"); - getSideV3(track, editorFrame.getTrackData().getMainTrack().getLeft(), "r"); + getSideV3(track, editorFrame.getTrackData().getMainTrack().getRight(), "r"); getPitsV3(track); } else @@ -207,7 +207,19 @@ public class XmlWriter */ private synchronized void getPitsV3(Element pits) { - addContent(pits, "pit type", null, editorFrame.getTrackData().getMainTrack().getPits().getStyle()); + if (editorFrame.getTrackData().getMainTrack().getPits().getStyle() == 0) + { + addContent(pits, "pit type", "no pits"); + } + else if (editorFrame.getTrackData().getMainTrack().getPits().getStyle() == 1) + { + addContent(pits, "pit type", "track side"); + } + else if (editorFrame.getTrackData().getMainTrack().getPits().getStyle() == 2) + { + addContent(pits, "pit type", "seperate path"); + } + addContent(pits, "pit side", editorFrame.getTrackData().getMainTrack().getPits().getSide()); addContent(pits, "pit entry", editorFrame.getTrackData().getMainTrack().getPits().getEntry()); addContent(pits, "pit start", editorFrame.getTrackData().getMainTrack().getPits().getStart()); @@ -321,26 +333,35 @@ public class XmlWriter addContent(segment, "profil start tangent right", "%", shape.getProfilStartTangentRight()); addContent(segment, "profil end tangent right", "%", shape.getProfilEndTangentRight()); addContent(segment, "surface", shape.getSurface()); - com = new Comment("Left part of segment"); - segment.addContent(com); - if (shape.getLeft().getHasSide()) - segment.addContent(getSide(shape.getLeft(), "Left")); - if (shape.getLeft().getHasBorder()) - segment.addContent(getBorder(shape.getLeft(), "Left")); - if (shape.getLeft().getHasBarrier()) - segment.addContent(getBarrier(shape.getLeft(), "Left")); - com = new Comment("End of left part"); - segment.addContent(com); - com = new Comment("Right part of segment"); - segment.addContent(com); - if (shape.getRight().getHasSide()) - segment.addContent(getSide(shape.getRight(), "Right")); - if (shape.getRight().getHasBorder()) - segment.addContent(getBorder(shape.getRight(), "Right")); - if (shape.getRight().getHasBarrier()) - segment.addContent(getBarrier(shape.getRight(), "Right")); - com = new Comment("End of right part"); - segment.addContent(com); + + if (editorFrame.getTrackData().getHeader().getVersion() == 3) + { + getSideV3(segment, shape.getLeft(), "l"); + getSideV3(segment, shape.getRight(), "r"); + } + else + { + com = new Comment("Left part of segment"); + segment.addContent(com); + if (shape.getLeft().getHasSide()) + segment.addContent(getSide(shape.getLeft(), "Left")); + if (shape.getLeft().getHasBorder()) + segment.addContent(getBorder(shape.getLeft(), "Left")); + if (shape.getLeft().getHasBarrier()) + segment.addContent(getBarrier(shape.getLeft(), "Left")); + com = new Comment("End of left part"); + segment.addContent(com); + com = new Comment("Right part of segment"); + segment.addContent(com); + if (shape.getRight().getHasSide()) + segment.addContent(getSide(shape.getRight(), "Right")); + if (shape.getRight().getHasBorder()) + segment.addContent(getBorder(shape.getRight(), "Right")); + if (shape.getRight().getHasBarrier()) + segment.addContent(getBarrier(shape.getRight(), "Right")); + com = new Comment("End of right part"); + segment.addContent(com); + } return segment; }