refactoring connectible edge
This commit is contained in:
@@ -17,7 +17,7 @@ public abstract class AbstractGraph<T> implements Graph<T> {
|
|||||||
|
|
||||||
protected Vertex<T> root;
|
protected Vertex<T> root;
|
||||||
protected final List<Vertex<T>> vertexes;
|
protected final List<Vertex<T>> vertexes;
|
||||||
private final GraphCallBack callback;
|
protected final GraphCallBack callback;
|
||||||
|
|
||||||
protected int minJumps;
|
protected int minJumps;
|
||||||
|
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
|||||||
double nextLimit;
|
double nextLimit;
|
||||||
if (cEdge.isRefill()) {
|
if (cEdge.isRefill()) {
|
||||||
LOG.trace("Refill");
|
LOG.trace("Refill");
|
||||||
nextLimit = getShip().getTank() - cEdge.getFuel();
|
nextLimit = getShip().getTank() - cEdge.getFuelCost();
|
||||||
} else {
|
} else {
|
||||||
nextLimit = getProfile().withRefill() ? cEntry.getFuel() - cEdge.getFuel() : getShip().getTank();
|
nextLimit = getProfile().withRefill() ? cEntry.getFuel() - cEdge.getFuelCost() : getShip().getTank();
|
||||||
}
|
}
|
||||||
return new CCostTraversalEntry(cEntry, edge, nextLimit);
|
return new CCostTraversalEntry(cEntry, edge, nextLimit);
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
|||||||
|
|
||||||
protected boolean check(Edge<T> e){
|
protected boolean check(Edge<T> e){
|
||||||
ConnectibleEdge<T> edge = (ConnectibleEdge<T>) e;
|
ConnectibleEdge<T> edge = (ConnectibleEdge<T>) e;
|
||||||
return edge.getFuel() <= fuel || edge.getSource().getEntry().canRefill();
|
return edge.getFuelCost() <= fuel || edge.getSource().getEntry().canRefill();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ConnectibleEdge<T> wrap(Edge<T> edge){
|
protected ConnectibleEdge<T> wrap(Edge<T> edge){
|
||||||
@@ -96,7 +96,10 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
|||||||
refill = true;
|
refill = true;
|
||||||
fuelCost = getShip().getFuelCost(distance);
|
fuelCost = getShip().getFuelCost(distance);
|
||||||
}
|
}
|
||||||
return new ConnectibleEdge<>(edge.getSource(), edge.getTarget(), refill, fuelCost);
|
ConnectibleEdge<T> cEdge = new ConnectibleEdge<>(edge.getSource(), edge.getTarget());
|
||||||
|
cEdge.setRefill(refill);
|
||||||
|
cEdge.setFuelCost(fuelCost);
|
||||||
|
return cEdge;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,21 +3,27 @@ package ru.trader.analysis.graph;
|
|||||||
import ru.trader.graph.Connectable;
|
import ru.trader.graph.Connectable;
|
||||||
|
|
||||||
public class ConnectibleEdge<T extends Connectable<T>> extends Edge<T> {
|
public class ConnectibleEdge<T extends Connectable<T>> extends Edge<T> {
|
||||||
protected final boolean refill;
|
protected boolean refill;
|
||||||
protected final double fuel;
|
protected double fuelCost;
|
||||||
|
|
||||||
public ConnectibleEdge(Vertex<T> source, Vertex<T> target, boolean refill, double fuel) {
|
public ConnectibleEdge(Vertex<T> source, Vertex<T> target) {
|
||||||
super(source, target);
|
super(source, target);
|
||||||
this.refill = refill;
|
|
||||||
this.fuel = fuel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRefill() {
|
public boolean isRefill() {
|
||||||
return refill;
|
return refill;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getFuel() {
|
protected void setRefill(boolean refill) {
|
||||||
return fuel;
|
this.refill = refill;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getFuelCost() {
|
||||||
|
return fuelCost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFuelCost(double fuel) {
|
||||||
|
this.fuelCost = fuel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -89,7 +89,10 @@ public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ConnectibleEdge<T> createEdge(Vertex<T> target) {
|
protected ConnectibleEdge<T> createEdge(Vertex<T> target) {
|
||||||
return new ConnectibleEdge<>(vertex, target, refill, fuelCost);
|
ConnectibleEdge<T> res = new ConnectibleEdge<>(vertex, target);
|
||||||
|
res.setRefill(refill);
|
||||||
|
res.setFuelCost(fuelCost);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user