Add ETA for full path

This commit is contained in:
ZacSharp 2020-08-26 23:52:44 +02:00
parent bf723deced
commit b628d67961
2 changed files with 26 additions and 0 deletions

View File

@ -58,6 +58,15 @@ public interface IPathingBehavior extends IBehavior {
return Optional.of(current.getPath().ticksRemainingFrom(start)); return Optional.of(current.getPath().ticksRemainingFrom(start));
} }
/**
* Returns the estimated remaining ticks to the current goal.
* Given that the return type is an optional, {@link Optional#empty()}
* will be returned in the case that there is no current goal.
*
* @return The estimated remaining ticks to the current goal.
*/
Optional<Double> estimatedTicksToGoal();
/** /**
* @return The current pathing goal * @return The current pathing goal
*/ */

View File

@ -52,6 +52,10 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior,
private Goal goal; private Goal goal;
private CalculationContext context; private CalculationContext context;
/*eta*/
private int ticksElapsedSoFar;
private BetterBlockPos startPosition;
private boolean safeToCancel; private boolean safeToCancel;
private boolean pauseRequestedLastTick; private boolean pauseRequestedLastTick;
private boolean unpausedLastTick; private boolean unpausedLastTick;
@ -98,6 +102,7 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior,
expectedSegmentStart = pathStart(); expectedSegmentStart = pathStart();
baritone.getPathingControlManager().preTick(); baritone.getPathingControlManager().preTick();
tickPath(); tickPath();
ticksElapsedSoFar++;
dispatchEvents(); dispatchEvents();
} }
@ -372,6 +377,16 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior,
return context; return context;
} }
public Optional<Double> estimatedTicksToGoal(){
if (goal == null){
return Optional.empty();
}
BetterBlockPos currentPos = ctx.playerFeet();
double current = goal.heuristic(currentPos.x, currentPos.y, currentPos.z);
double start = goal.heuristic(startPosition.x, startPosition.y, startPosition.z);
return Optional.of(current * ticksElapsedSoFar / (start - current));
}
/** /**
* See issue #209 * See issue #209
* *
@ -468,6 +483,8 @@ public final class PathingBehavior extends Behavior implements IPathingBehavior,
if (executor.get().getPath().positions().contains(expectedSegmentStart)) { if (executor.get().getPath().positions().contains(expectedSegmentStart)) {
queuePathEvent(PathEvent.CALC_FINISHED_NOW_EXECUTING); queuePathEvent(PathEvent.CALC_FINISHED_NOW_EXECUTING);
current = executor.get(); current = executor.get();
ticksElapsedSoFar = 0;
startPosition = expectedSegmentStart;
} else { } else {
logDebug("Warning: discarding orphan path segment with incorrect start"); logDebug("Warning: discarding orphan path segment with incorrect start");
} }