From: Stefan F. <ste...@us...> - 2010-04-09 17:49:39
|
Update of /cvsroot/rails/18xx/rails/algorithms In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv26622/rails/algorithms Modified Files: NetworkVertex.java NetworkIterator.java NetworkGraphBuilder.java Log Message: Updated Lay Tile and Token Hints Index: NetworkVertex.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/NetworkVertex.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NetworkVertex.java 9 Apr 2010 07:20:27 -0000 1.2 --- NetworkVertex.java 9 Apr 2010 17:49:31 -0000 1.3 *************** *** 108,119 **** return side; } ! public boolean isFullyTokened(){ ! return tokenable && companiesHaveToken.size() == tokenSlots; } ! public boolean hasCompanyToken(PublicCompanyI company) { return !(company == null) && companiesHaveToken.contains(company); } public String printTokens(){ --- 108,141 ---- return side; } ! /** ! * Checks if a vertex is fully tokened ! * If it cannot be tokened, always returns false ! */ public boolean isFullyTokened(){ ! return tokenable && companiesHaveToken.size() >= tokenSlots; } ! ! /** ! * Checks if a public company can pass through a vertex ! */ ! public boolean canCompanyRunThrough(PublicCompanyI company) { ! return !isFullyTokened() || companiesHaveToken.contains(company); ! } ! ! /** ! * Checks if a vertex contains a token of the given public company ! */ public boolean hasCompanyToken(PublicCompanyI company) { return !(company == null) && companiesHaveToken.contains(company); } + + /** + * Checks if a given company can add a token + * + */ + public boolean canCompanyAddToken(PublicCompanyI company) { + return (tokenable && companiesHaveToken.size() < tokenSlots && company != null && + !companiesHaveToken.contains(company)); + } public String printTokens(){ Index: NetworkIterator.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/NetworkIterator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NetworkIterator.java 4 Apr 2010 22:02:53 -0000 1.1 --- NetworkIterator.java 9 Apr 2010 17:49:31 -0000 1.2 *************** *** 181,185 **** private void addUnseenChildrenOf(NetworkVertex vertex, VisitColor previousColor) { ! if (vertex.isFullyTokened() && !vertex.hasCompanyToken(company)) return; for (NetworkEdge edge : graph.edgesOf(vertex)) { --- 181,185 ---- private void addUnseenChildrenOf(NetworkVertex vertex, VisitColor previousColor) { ! if (company != null && !vertex.canCompanyRunThrough(company)) return; for (NetworkEdge edge : graph.edgesOf(vertex)) { Index: NetworkGraphBuilder.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/NetworkGraphBuilder.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NetworkGraphBuilder.java 9 Apr 2010 07:20:27 -0000 1.3 --- NetworkGraphBuilder.java 9 Apr 2010 17:49:31 -0000 1.4 *************** *** 92,97 **** log.debug("Track: " + track); NetworkEdge edge = new NetworkEdge(startVertex, endVertex, false); ! mapGraph.addEdge(startVertex, endVertex, edge); ! log.debug("Added edge " + edge.getConnection()); } --- 92,101 ---- log.debug("Track: " + track); NetworkEdge edge = new NetworkEdge(startVertex, endVertex, false); ! if (startVertex == endVertex) { ! log.error("Track " + track + " on hex " + hex + "has identical start/end"); ! } else { ! mapGraph.addEdge(startVertex, endVertex, edge); ! log.debug("Added edge " + edge.getConnection()); ! } } *************** *** 219,226 **** public static List<MapHex> getStationHexes(Graph<NetworkVertex, NetworkEdge> graph, ! boolean tokenable){ List<MapHex> hexes = new ArrayList<MapHex>(); for(NetworkVertex vertex:graph.vertexSet()) { ! if (vertex.isStation() && !(tokenable && vertex.isFullyTokened())) { hexes.add(vertex.getHex()); } --- 223,230 ---- public static List<MapHex> getStationHexes(Graph<NetworkVertex, NetworkEdge> graph, ! PublicCompanyI company){ List<MapHex> hexes = new ArrayList<MapHex>(); for(NetworkVertex vertex:graph.vertexSet()) { ! if (vertex.canCompanyAddToken(company)) { hexes.add(vertex.getHex()); } |