From: <ste...@us...> - 2010-08-07 14:24:30
|
Revision: 1371 http://rails.svn.sourceforge.net/rails/?rev=1371&view=rev Author: stefanfrey Date: 2010-08-07 14:24:24 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Fixed bug of revenue path display Modified Paths: -------------- trunk/18xx/rails/algorithms/NetworkEdge.java trunk/18xx/rails/algorithms/NetworkVertex.java trunk/18xx/rails/algorithms/RevenueTrainRun.java Modified: trunk/18xx/rails/algorithms/NetworkEdge.java =================================================================== --- trunk/18xx/rails/algorithms/NetworkEdge.java 2010-08-06 19:52:53 UTC (rev 1370) +++ trunk/18xx/rails/algorithms/NetworkEdge.java 2010-08-07 14:24:24 UTC (rev 1371) @@ -26,7 +26,7 @@ private final int distance; - private final List<NetworkVertex> hiddenVertexes; + private final List<NetworkVertex> hiddenVertices; // list of vertexes that were merged into the edge private int routeCosts; @@ -40,7 +40,7 @@ this.distance = 1; else this.distance = 0; - hiddenVertexes = new ArrayList<NetworkVertex>(); + hiddenVertices = new ArrayList<NetworkVertex>(); } public NetworkEdge(NetworkVertex source, NetworkVertex target, boolean greedy, @@ -49,7 +49,7 @@ this.target = target; this.greedy = greedy; this.distance = distance; - this.hiddenVertexes = hiddenVertexes; + this.hiddenVertices = hiddenVertexes; } public NetworkVertex getSource() { @@ -116,16 +116,27 @@ this.routeCosts = routeCosts; } - public List<NetworkVertex> getHiddenVertexes() { - return hiddenVertexes; + public List<NetworkVertex> getHiddenVertices() { + return hiddenVertices; } + /** + * all vertices from source to target, including hidden vertices + */ + public List<NetworkVertex> getVertexPath() { + List<NetworkVertex> vertexPath = new ArrayList<NetworkVertex>(); + vertexPath.add(source); + vertexPath.addAll(hiddenVertices); + vertexPath.add(target); + return vertexPath; + } + public String toFullInfoString() { StringBuffer info = new StringBuffer(); info.append("Edge " + getConnection()); info.append(", greedy = " + greedy); info.append(", distance = " + distance); - info.append(", hidden vertexes = " + hiddenVertexes); + info.append(", hidden vertexes = " + hiddenVertices); return info.toString(); } @@ -222,12 +233,12 @@ // create new hiddenVertexes List<NetworkVertex> hiddenVertexes = new ArrayList<NetworkVertex>(); - List<NetworkVertex> hiddenA = edgeA.getHiddenVertexes(); + List<NetworkVertex> hiddenA = edgeA.getHiddenVertices(); if (reverseA) { hiddenA = new ArrayList<NetworkVertex>(hiddenA); // clone Collections.reverse(hiddenA); } - List<NetworkVertex> hiddenB = edgeB.getHiddenVertexes(); + List<NetworkVertex> hiddenB = edgeB.getHiddenVertices(); if (reverseB) { hiddenB = new ArrayList<NetworkVertex>(hiddenB); // clone Collections.reverse(hiddenB); @@ -274,9 +285,9 @@ public static NetworkEdge replaceVertex(NetworkEdge edge, NetworkVertex oldVertex, NetworkVertex newVertex) { NetworkEdge newEdge; if (edge.source == oldVertex) { - newEdge= new NetworkEdge(newVertex, edge.target, edge.greedy, edge.distance, edge.hiddenVertexes); + newEdge= new NetworkEdge(newVertex, edge.target, edge.greedy, edge.distance, edge.hiddenVertices); } else if (edge.target == oldVertex) { - newEdge= new NetworkEdge(edge.source, newVertex, edge.greedy, edge.distance, edge.hiddenVertexes); + newEdge= new NetworkEdge(edge.source, newVertex, edge.greedy, edge.distance, edge.hiddenVertices); } else { newEdge = null; } Modified: trunk/18xx/rails/algorithms/NetworkVertex.java =================================================================== --- trunk/18xx/rails/algorithms/NetworkVertex.java 2010-08-06 19:52:53 UTC (rev 1370) +++ trunk/18xx/rails/algorithms/NetworkVertex.java 2010-08-07 14:24:24 UTC (rev 1371) @@ -361,14 +361,14 @@ for (NetworkEdge edge:edges) { List<NetworkVertex> hiddenVertices; if (edge.getSource() == vertex) { - hiddenVertices = edge.getHiddenVertexes(); + hiddenVertices = edge.getHiddenVertices(); if (addOldVertexAsHidden) hiddenVertices.add(vertex); NetworkEdge newEdge = new NetworkEdge(newVertex, edge.getTarget(), edge.isGreedy(), edge.getDistance(), hiddenVertices); graph.addEdge(newVertex, edge.getTarget(), newEdge); } else { hiddenVertices = new ArrayList<NetworkVertex>(); if (addOldVertexAsHidden) hiddenVertices.add(vertex); - hiddenVertices.addAll(edge.getHiddenVertexes()); + hiddenVertices.addAll(edge.getHiddenVertices()); NetworkEdge newEdge = new NetworkEdge(edge.getSource(), newVertex, edge.isGreedy(), edge.getDistance(), hiddenVertices); graph.addEdge(newEdge.getSource(), newVertex, newEdge); } Modified: trunk/18xx/rails/algorithms/RevenueTrainRun.java =================================================================== --- trunk/18xx/rails/algorithms/RevenueTrainRun.java 2010-08-06 19:52:53 UTC (rev 1370) +++ trunk/18xx/rails/algorithms/RevenueTrainRun.java 2010-08-07 14:24:24 UTC (rev 1371) @@ -270,25 +270,22 @@ GeneralPath getAsPath(HexMap map) { GeneralPath path = new GeneralPath(); -// if (edges.size() != 0) { - for (NetworkEdge edge:edges) { - Point2D sourcePoint = NetworkVertex.getVertexPoint2D(map, edge.getSource()); - if (sourcePoint != null) { - path.moveTo((float)sourcePoint.getX(), (float)sourcePoint.getY()); + for (NetworkEdge edge:edges) { + // check vertices if they exist as points and start from there + List<NetworkVertex> edgeVertices = edge.getVertexPath(); + boolean initPath = false; + for (NetworkVertex edgeVertex:edgeVertices) { + Point2D edgePoint = NetworkVertex.getVertexPoint2D(map, edgeVertex); + if (edgePoint == null) continue; + if (!initPath) { + path.moveTo((float)edgePoint.getX(), (float)edgePoint.getY()); + initPath = true; + } else { + path.lineTo((float)edgePoint.getX(), (float)edgePoint.getY()); } - for (NetworkVertex hiddenVertex:edge.getHiddenVertexes()) { - Point2D hiddenPoint = NetworkVertex.getVertexPoint2D(map, hiddenVertex); - if (hiddenPoint != null) { - path.lineTo((float)hiddenPoint.getX(), (float)hiddenPoint.getY()); - } - } - Point2D targetPoint = NetworkVertex.getVertexPoint2D(map, edge.getTarget()); - if (targetPoint != null) { - path.lineTo((float)targetPoint.getX(), (float)targetPoint.getY()); - } } - return path; -// } + } + return path; // NetworkVertex startVertex = null; // NetworkVertex previousVertex = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |