Massive brain

This commit is contained in:
Brady 2018-11-05 18:40:25 -06:00
parent ebd3ce42d0
commit 99da815f49
No known key found for this signature in database
GPG Key ID: 73A788379A197567
2 changed files with 56 additions and 24 deletions

View File

@ -21,12 +21,30 @@ import baritone.api.pathing.goals.Goal;
public interface ICustomGoalProcess extends IBaritoneProcess {
/**
* Sets the pathing goal
*
* @param goal The new goal
*/
void setGoal(Goal goal);
/**
* Starts path calculation and execution.
*/
void path();
/**
* @return The current goal
*/
Goal getGoal();
/**
* Sets the goal and begins the path execution.
*
* @param goal The new goal
*/
default void setGoalAndPath(Goal goal) {
setGoal(goal);
path();
this.setGoal(goal);
this.path();
}
}

View File

@ -32,7 +32,17 @@ import java.util.Objects;
* @author leijurv
*/
public class CustomGoalProcess extends BaritoneProcessHelper implements ICustomGoalProcess {
/**
* The current goal
*/
private Goal goal;
/**
* The current process state.
*
* @see State
*/
private State state;
public CustomGoalProcess(Baritone baritone) {
@ -42,50 +52,47 @@ public class CustomGoalProcess extends BaritoneProcessHelper implements ICustomG
@Override
public void setGoal(Goal goal) {
this.goal = goal;
state = State.GOAL_SET;
this.state = State.GOAL_SET;
}
@Override
public void path() {
if (goal == null) {
goal = baritone.getPathingBehavior().getGoal();
if (this.goal == null) {
this.goal = baritone.getPathingBehavior().getGoal();
}
state = State.PATH_REQUESTED;
this.state = State.PATH_REQUESTED;
}
private enum State {
NONE,
GOAL_SET,
PATH_REQUESTED,
EXECUTING,
@Override
public Goal getGoal() {
return this.goal;
}
@Override
public boolean isActive() {
return state != State.NONE;
return this.state != State.NONE;
}
@Override
public PathingCommand onTick(boolean calcFailed, boolean isSafeToCancel) {
switch (state) {
switch (this.state) {
case GOAL_SET:
if (!baritone.getPathingBehavior().isPathing() && Objects.equals(baritone.getPathingBehavior().getGoal(), goal)) {
state = State.NONE;
if (!baritone.getPathingBehavior().isPathing() && Objects.equals(baritone.getPathingBehavior().getGoal(), this.goal)) {
this.state = State.NONE;
}
return new PathingCommand(goal, PathingCommandType.CANCEL_AND_SET_GOAL);
return new PathingCommand(this.goal, PathingCommandType.CANCEL_AND_SET_GOAL);
case PATH_REQUESTED:
PathingCommand ret = new PathingCommand(goal, PathingCommandType.SET_GOAL_AND_PATH);
state = State.EXECUTING;
PathingCommand ret = new PathingCommand(this.goal, PathingCommandType.SET_GOAL_AND_PATH);
this.state = State.EXECUTING;
return ret;
case EXECUTING:
if (calcFailed) {
onLostControl();
}
if (goal == null || goal.isInGoal(playerFeet())) {
if (this.goal == null || this.goal.isInGoal(playerFeet())) {
onLostControl(); // we're there xd
}
return new PathingCommand(goal, PathingCommandType.SET_GOAL_AND_PATH);
return new PathingCommand(this.goal, PathingCommandType.SET_GOAL_AND_PATH);
default:
throw new IllegalStateException();
}
@ -93,12 +100,19 @@ public class CustomGoalProcess extends BaritoneProcessHelper implements ICustomG
@Override
public void onLostControl() {
state = State.NONE;
goal = null;
this.state = State.NONE;
this.goal = null;
}
@Override
public String displayName() {
return "Custom Goal " + goal;
return "Custom Goal " + this.goal;
}
protected enum State {
NONE,
GOAL_SET,
PATH_REQUESTED,
EXECUTING
}
}