Prioritise faster paths, by making cost inversely proportional to speed.

This commit is contained in:
Ben Spiers 2015-04-09 02:02:38 +01:00
parent 068e4b58a7
commit 36f0607d5e
5 changed files with 8 additions and 13 deletions

View file

@ -29,5 +29,5 @@ public interface ILogisticalTransporter extends IGridTransmitter<IInventory, Inv
public boolean canReceiveFrom(TileEntity tileEntity, ForgeDirection side);
public int getCost();
public double getCost();
}

View file

@ -415,17 +415,14 @@ public final class TransporterPathfinder
openSet.remove(currentNode);
closedSet.add(currentNode);
for(int i = 0; i < 6; i++)
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
ForgeDirection direction = ForgeDirection.getOrientation(i);
Coord4D neighbor = currentNode.getFromSide(direction);
if(transportStack.canInsertToTransporter(neighbor.getTileEntity(worldObj), direction))
{
TileEntity tile = neighbor.getTileEntity(worldObj);
double tentativeG = gScore.get(currentNode) + currentNode.distanceTo(neighbor);
tentativeG += ((ITransporterTile)tile).getTransmitter().getCost();
double tentativeG = gScore.get(currentNode) + ((ITransporterTile)tile).getTransmitter().getCost();
if(closedSet.contains(neighbor))
{
@ -435,8 +432,6 @@ public final class TransporterPathfinder
}
}
TileEntity currTile = currentNode.getTileEntity(worldObj);
if(!openSet.contains(neighbor) || tentativeG < gScore.get(neighbor))
{
navMap.put(neighbor, currentNode);
@ -445,7 +440,7 @@ public final class TransporterPathfinder
openSet.add(neighbor);
}
}
else if(neighbor.equals(finalNode) && destChecker.isValid(transportStack, i, neighbor.getTileEntity(worldObj)))
else if(neighbor.equals(finalNode) && destChecker.isValid(transportStack, direction.ordinal(), neighbor.getTileEntity(worldObj)))
{
side = direction;
results = reconstructPath(navMap, currentNode);

View file

@ -373,7 +373,7 @@ public class MultipartTransporter extends MultipartTransmitter<IInventory, Inven
}
@Override
public int getCost()
public double getCost()
{
return getPart().getCost();
}

View file

@ -444,8 +444,8 @@ public class PartLogisticalTransporter extends PartTransmitter<IInventory, Inven
return (MultipartTransporter)transmitterDelegate;
}
public int getCost()
public double getCost()
{
return 1;
return 5.D / tier.speed;
}
}

View file

@ -38,7 +38,7 @@ public class PartRestrictiveTransporter extends PartLogisticalTransporter
}
@Override
public int getCost()
public double getCost()
{
return 1000;
}