fix compute minFuel of path
This commit is contained in:
@@ -23,31 +23,33 @@ public class Path<T extends Connectable<T>> {
|
|||||||
Ship ship = entries.get(0).getShip();
|
Ship ship = entries.get(0).getShip();
|
||||||
double fuel = ship.getTank();
|
double fuel = ship.getTank();
|
||||||
minFuel = 0; maxFuel = 0; fuelCost = 0; refillCount = 0;
|
minFuel = 0; maxFuel = 0; fuelCost = 0; refillCount = 0;
|
||||||
boolean adding = true;
|
int minTo = 0;
|
||||||
for (int i = entries.size() - 1; i >= 0; i--) {
|
for (int i = entries.size() - 1; i >= 0; i--) {
|
||||||
ConnectibleGraph<T>.BuildEdge edge = entries.get(i);
|
ConnectibleGraph<T>.BuildEdge edge = entries.get(i);
|
||||||
if (i < entries.size() - 1 && edge.getSource().getEntry().canRefill()){
|
if (i < entries.size() - 1 && edge.getSource().getEntry().canRefill()){
|
||||||
adding = false;
|
if (minTo == 0) minTo = i+1;
|
||||||
fuel = edge.getMaxFuel();
|
fuel = edge.getMaxFuel();
|
||||||
}
|
}
|
||||||
if (fuel < 0 || fuel < edge.getMinFuel()){
|
if (fuel < 0 || fuel < edge.getMinFuel()){
|
||||||
minFuel = ship.getTank()+1;
|
minFuel = ship.getTank()+1;
|
||||||
|
minTo = -1;
|
||||||
}
|
}
|
||||||
double cost = edge.getFuelCost(fuel);
|
double cost = edge.getFuelCost(fuel);
|
||||||
fuelCost += cost;
|
fuelCost += cost;
|
||||||
fuel -= cost;
|
fuel -= cost;
|
||||||
if (adding) {
|
|
||||||
minFuel += edge.getMinFuel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
maxFuel = -1;
|
maxFuel = -1;
|
||||||
for (ConnectibleGraph<T>.BuildEdge edge : entries) {
|
for (int i = 0; i < entries.size(); i++) {
|
||||||
if (maxFuel != -1){
|
ConnectibleGraph<T>.BuildEdge edge = entries.get(i);
|
||||||
|
if (maxFuel != -1) {
|
||||||
maxFuel += edge.getFuelCost(maxFuel + edge.getMinFuel());
|
maxFuel += edge.getFuelCost(maxFuel + edge.getMinFuel());
|
||||||
}
|
}
|
||||||
if (maxFuel == -1 || edge.getMaxFuel() < maxFuel){
|
if (maxFuel == -1 || edge.getMaxFuel() < maxFuel) {
|
||||||
maxFuel = edge.getMaxFuel();
|
maxFuel = edge.getMaxFuel();
|
||||||
}
|
}
|
||||||
|
if (minTo != -1 && i >= minTo) {
|
||||||
|
minFuel += edge.getFuelCost(minFuel + edge.getMinFuel());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
refillCount = getRefillCount(ship.getTank());
|
refillCount = getRefillCount(ship.getTank());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user