Archived
0

add isTransit method to vendor

This commit is contained in:
iMoHax
2015-12-10 15:34:02 +03:00
parent d113caf564
commit 4e3f6ca9d1
4 changed files with 20 additions and 16 deletions

View File

@@ -337,7 +337,7 @@ public class Route implements Comparable<Route> {
public static Route singletone(Vendor root, double balance, long cargo){
RouteEntry entry = new RouteEntry(root, 0,0,0);
if (!(root instanceof TransitVendor)){
if (!root.isTransit()){
entry.setLand(true);
}
Route route = new Route(entry);

View File

@@ -189,7 +189,7 @@ public class RouteSearcher {
buyer = orders.get(0).getBuyer();
sellerEntry.addAll(orders);
} else {
if (!(vendor instanceof TransitVendor)){
if (!vendor.isTransit()){
entry.setLand(true);
}
}
@@ -203,7 +203,7 @@ public class RouteSearcher {
}
if (vEdge != null) {
RouteEntry entry = new RouteEntry(vEdge.getTarget().getEntry(), 0, 0, 0);
if (!(entry.getVendor() instanceof TransitVendor)) entry.setLand(true);
if (!entry.getVendor().isTransit()) entry.setLand(true);
if (prev != null){
prev.setTime(scorer.getTime(entry, prev));
}
@@ -230,7 +230,7 @@ public class RouteSearcher {
ConnectibleEdge<Place> edge = (ConnectibleEdge<Place>) edges.get(i);
Vendor vendor = i == 0 ? from : edge.getSource().getEntry().asTransit();
RouteEntry entry = new RouteEntry(vendor, edge.getRefill(), edge.getFuelCost(), 0);
if (i == 0) entry.setLand(!(vendor instanceof TransitVendor));
if (i == 0) entry.setLand(!vendor.isTransit());
if (prev != null){
prev.setTime(scorer.getTime(entry, prev));
prev.setFullTime(prev.getTime());
@@ -239,7 +239,7 @@ public class RouteSearcher {
prev = entry;
if (i == edges.size()-1){
entry = new RouteEntry(to, 0, 0, 0);
entry.setLand(!(to instanceof TransitVendor));
entry.setLand(!to.isTransit());
prev.setTime(scorer.getTime(entry, prev));
prev.setFullTime(prev.getTime());
entries.add(entry);

View File

@@ -75,7 +75,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
}
private void updateVertexes(){
vertexes.removeIf(v -> v.getEntry() instanceof TransitVendor);
vertexes.removeIf(v -> v.getEntry().isTransit());
updateLevels(root);
}
@@ -124,11 +124,11 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
BuildHelper<Vendor> helper = super.createHelper(buyer);
if (helper.isConnected()){
Vendor seller = vertex.getEntry();
if (buyer instanceof TransitVendor && (deep == 0 || seller.getPlace().equals(buyer.getPlace()))){
if (buyer.isTransit() && (deep == 0 || seller.getPlace().equals(buyer.getPlace()))){
LOG.trace("Buyer is transit of seller or is end, skipping");
return new BuildHelper<>(buyer, -1);
}
if (seller instanceof TransitVendor && seller.getPlace().equals(buyer.getPlace())){
if (seller.isTransit() && seller.getPlace().equals(buyer.getPlace())){
LOG.trace("Seller is transit of buyer, skipping");
return new BuildHelper<>(buyer, -1);
}
@@ -147,10 +147,10 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
@Override
protected BuildEdge createEdge(BuildHelper<Vendor> helper, Vertex<Vendor> next) {
BuildEdge cEdge = super.createEdge(helper, next);
if (next.getEntry() instanceof TransitVendor){
if (next.getEntry().isTransit()){
return cEdge;
}
if (vertex.getEntry() instanceof TransitVendor){
if (vertex.getEntry().isTransit()){
addEdgesToHead(cEdge);
}
return new VendorsBuildEdge(cEdge);
@@ -158,7 +158,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
private void addEdgesToHead(BuildEdge lastEdge){
Vertex<Vendor> target = lastEdge.getTarget();
assert vertex.getEntry() instanceof TransitVendor && !(target.getEntry() instanceof TransitVendor);
assert vertex.getEntry().isTransit() && !target.getEntry().isTransit();
VendorsGraphBuilder h = this;
Path<Vendor> path = new Path<>(Collections.singleton(lastEdge));
while (h != null && h.edge != null){
@@ -177,7 +177,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
if (!source.equals(target)){
addEdge(source, target, path);
}
if (!(source.getEntry() instanceof TransitVendor)){
if (!source.getEntry().isTransit()){
break;
}
h = h.head;
@@ -199,7 +199,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
LOG.trace("Check {}", entry);
if (limit >= e.getMinFuel() && limit <= e.getMaxFuel()) {
LOG.trace("Connect {} to {}", entry, vertex);
if (vertex.getEntry() instanceof TransitVendor && !(entry instanceof TransitVendor)) {
if (vertex.getEntry().isTransit() && !entry.isTransit()) {
addCheckedEdgesToHead(e);
}
}
@@ -208,7 +208,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
private void addCheckedEdgesToHead(VendorsBuildEdge lastEdge){
Vertex<Vendor> target = lastEdge.getTarget();
assert vertex.getEntry() instanceof TransitVendor && !(target.getEntry() instanceof TransitVendor);
assert vertex.getEntry().isTransit() && !target.getEntry().isTransit();
List<Path<Vendor>> paths = lastEdge.paths;
int i = 1;
Path<Vendor> path = paths != null ? paths.get(0) : new Path<>(Collections.singleton((BuildEdge)lastEdge));
@@ -232,7 +232,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
if (!source.equals(target)){
addEdge(source, target, path);
}
if (!(source.getEntry() instanceof TransitVendor)){
if (!source.getEntry().isTransit()){
break;
}
h = h.head;
@@ -256,7 +256,7 @@ public class VendorsGraph extends ConnectibleGraph<Vendor> {
@Override
protected void addSubTask(Edge<Vendor> edge, double nextLimit) {
Vertex<Vendor> next = edge.getTarget();
if (next.getLevel() >= deep && next.getEntry() instanceof TransitVendor) {
if (next.getLevel() >= deep && next.getEntry().isTransit()) {
if (deep > 0){
VendorsGraphBuilder task = new VendorsGraphBuilder(this, (BuildEdge) edge, set, deep - 1, nextLimit);
task.isAdding = true;

View File

@@ -85,4 +85,8 @@ public interface Vendor extends Connectable<Vendor> {
remove(offer);
}
}
default boolean isTransit(){
return this instanceof TransitVendor;
}
}