mirror of
https://github.com/AutismDevelopment/Autism-Client.git
synced 2026-10-28 18:29:47 +00:00
Refactor: extract MacroRunLoop from MacroExecutor (upstream #4)
Move run/runInternal plus the wait primitives they own (waitForCondition, waitForPredicate, guiClosePredicate x2, runPacedTpAction, yieldToMainThread) verbatim into MacroRunLoop. Shared members referenced as MacroExecutor.xxx (mechanical qualification only); wait-primitive call sites re-pointed across all helpers. All bodies verified identical against HEAD modulo that qualification.
This commit is contained in:
parent
6751b750a3
commit
45431ab136
7 changed files with 1346 additions and 1326 deletions
|
|
@ -144,7 +144,7 @@ final class MacroActionRunner {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
CompletableFuture<Void> future = MacroConditionRegistry.waitForGui(guiName.value());
|
CompletableFuture<Void> future = MacroConditionRegistry.waitForGui(guiName.value());
|
||||||
MacroExecutor.waitForCondition(future);
|
MacroRunLoop.waitForCondition(future);
|
||||||
waitForCurrentGuiReady(mc);
|
waitForCurrentGuiReady(mc);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -285,17 +285,17 @@ final class MacroActionRunner {
|
||||||
@Override public void waitTicks(int ticks) {
|
@Override public void waitTicks(int ticks) {
|
||||||
MacroExecutor.withRunContext(run, () -> {
|
MacroExecutor.withRunContext(run, () -> {
|
||||||
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
|
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
|
||||||
MacroExecutor.waitForCondition(MacroConditionRegistry.waitForNextTick());
|
MacroRunLoop.waitForCondition(MacroConditionRegistry.waitForNextTick());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void awaitCondition(CompletableFuture<Void> future) {
|
@Override public void awaitCondition(CompletableFuture<Void> future) {
|
||||||
if (future != null) MacroExecutor.withRunContext(run, () -> MacroExecutor.waitForCondition(future));
|
if (future != null) MacroExecutor.withRunContext(run, () -> MacroRunLoop.waitForCondition(future));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void awaitCondition(autismclient.api.macro.AddonCondition condition) {
|
@Override public void awaitCondition(autismclient.api.macro.AddonCondition condition) {
|
||||||
if (condition != null) MacroExecutor.withRunContext(run, () -> MacroExecutor.waitForCondition(MacroConditionRegistry.await(condition)));
|
if (condition != null) MacroExecutor.withRunContext(run, () -> MacroRunLoop.waitForCondition(MacroConditionRegistry.await(condition)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isActive() { return run != null && run.running.get() && !PackHideState.isHardLocked(); }
|
@Override public boolean isActive() { return run != null && run.running.get() && !PackHideState.isHardLocked(); }
|
||||||
|
|
@ -351,7 +351,7 @@ final class MacroActionRunner {
|
||||||
|
|
||||||
for (int t = 0; t < action.holdTicks && MacroExecutor.isCurrentRunActive(); t++) {
|
for (int t = 0; t < action.holdTicks && MacroExecutor.isCurrentRunActive(); t++) {
|
||||||
CompletableFuture<Void> tf = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tf = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tf);
|
MacroRunLoop.waitForCondition(tf);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (gateInstalled[0]) {
|
if (gateInstalled[0]) {
|
||||||
|
|
@ -420,7 +420,7 @@ final class MacroActionRunner {
|
||||||
private static void waitTicks(int ticks) {
|
private static void waitTicks(int ticks) {
|
||||||
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
|
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -515,7 +515,7 @@ final class MacroActionRunner {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -81,7 +81,7 @@ final class MacroPacketWait {
|
||||||
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
|
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
|
||||||
? "Waiting for packet: Any"
|
? "Waiting for packet: Any"
|
||||||
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
|
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
|
||||||
MacroExecutor.waitForCondition(future);
|
MacroRunLoop.waitForCondition(future);
|
||||||
} finally {
|
} finally {
|
||||||
synchronized (run.packetWaitLock) {
|
synchronized (run.packetWaitLock) {
|
||||||
if (run.packetFuture == future) {
|
if (run.packetFuture == future) {
|
||||||
|
|
@ -105,7 +105,7 @@ final class MacroPacketWait {
|
||||||
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
|
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
|
||||||
? "Waiting for packet: Any"
|
? "Waiting for packet: Any"
|
||||||
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
|
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
|
||||||
MacroExecutor.waitForCondition(future);
|
MacroRunLoop.waitForCondition(future);
|
||||||
} finally {
|
} finally {
|
||||||
synchronized (MacroExecutor.packetWaitLock) {
|
synchronized (MacroExecutor.packetWaitLock) {
|
||||||
if (MacroExecutor.activePacketFuture == future) {
|
if (MacroExecutor.activePacketFuture == future) {
|
||||||
|
|
@ -127,7 +127,7 @@ final class MacroPacketWait {
|
||||||
run.waitingForChat.set(true);
|
run.waitingForChat.set(true);
|
||||||
try {
|
try {
|
||||||
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
|
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
|
||||||
MacroExecutor.waitForCondition(future);
|
MacroRunLoop.waitForCondition(future);
|
||||||
MacroPrearm.commitStagedCapture(wca);
|
MacroPrearm.commitStagedCapture(wca);
|
||||||
} finally {
|
} finally {
|
||||||
if (run.chatFuture == future) {
|
if (run.chatFuture == future) {
|
||||||
|
|
@ -148,7 +148,7 @@ final class MacroPacketWait {
|
||||||
MacroExecutor.lastMatchedChat.set("");
|
MacroExecutor.lastMatchedChat.set("");
|
||||||
try {
|
try {
|
||||||
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
|
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
|
||||||
MacroExecutor.waitForCondition(future);
|
MacroRunLoop.waitForCondition(future);
|
||||||
} finally {
|
} finally {
|
||||||
MacroExecutor.isWaitingForChat.set(false);
|
MacroExecutor.isWaitingForChat.set(false);
|
||||||
MacroExecutor.waitingChatPattern.set("");
|
MacroExecutor.waitingChatPattern.set("");
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ final class MacroPrearm {
|
||||||
if (action instanceof WaitGuiTypeAction guiType) {
|
if (action instanceof WaitGuiTypeAction guiType) {
|
||||||
return predicatePrearm(action,
|
return predicatePrearm(action,
|
||||||
guiType.waitMode == WaitGuiTypeAction.WaitMode.CLOSE
|
guiType.waitMode == WaitGuiTypeAction.WaitMode.CLOSE
|
||||||
? MacroExecutor.guiClosePredicate(guiType, mc)
|
? MacroRunLoop.guiClosePredicate(guiType, mc)
|
||||||
: () -> {
|
: () -> {
|
||||||
var capture = guiType.capture(mc);
|
var capture = guiType.capture(mc);
|
||||||
capture.ifPresent(values -> stageCapture(guiType, values));
|
capture.ifPresent(values -> stageCapture(guiType, values));
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ final class MacroRace {
|
||||||
disablePacketGate(mc, action);
|
disablePacketGate(mc, action);
|
||||||
}
|
}
|
||||||
case UNTIL_GUI -> {
|
case UNTIL_GUI -> {
|
||||||
MacroExecutor.waitForPredicate(() -> MacroGuiMatcher.matches(mc.gui.screen(), action.untilGuiType, action.untilGuiTitle), Math.max(0, action.durationValue));
|
MacroRunLoop.waitForPredicate(() -> MacroGuiMatcher.matches(mc.gui.screen(), action.untilGuiType, action.untilGuiTitle), Math.max(0, action.durationValue));
|
||||||
disablePacketGate(mc, action);
|
disablePacketGate(mc, action);
|
||||||
}
|
}
|
||||||
case UNTIL_INVENTORY -> {
|
case UNTIL_INVENTORY -> {
|
||||||
|
|
@ -58,7 +58,7 @@ final class MacroRace {
|
||||||
wait.slot = action.untilInventorySlot;
|
wait.slot = action.untilInventorySlot;
|
||||||
wait.timeoutMs = Math.max(0, action.durationValue);
|
wait.timeoutMs = Math.max(0, action.durationValue);
|
||||||
wait.resetBaseline();
|
wait.resetBaseline();
|
||||||
MacroExecutor.waitForPredicate(() -> wait.matches(mc), wait.timeoutMs);
|
MacroRunLoop.waitForPredicate(() -> wait.matches(mc), wait.timeoutMs);
|
||||||
disablePacketGate(mc, action);
|
disablePacketGate(mc, action);
|
||||||
}
|
}
|
||||||
default -> {}
|
default -> {}
|
||||||
|
|
@ -96,7 +96,7 @@ final class MacroRace {
|
||||||
if (isMacroStepSatisfied(action)) return;
|
if (isMacroStepSatisfied(action)) return;
|
||||||
if (action.timeoutMs > 0 && System.currentTimeMillis() - startMs >= action.timeoutMs) return;
|
if (action.timeoutMs > 0 && System.currentTimeMillis() - startMs >= action.timeoutMs) return;
|
||||||
CompletableFuture<Void> tick = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tick = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tick);
|
MacroRunLoop.waitForCondition(tick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -730,7 +730,7 @@ final class MacroRace {
|
||||||
try {
|
try {
|
||||||
if (delay.useTicks) {
|
if (delay.useTicks) {
|
||||||
for (int i = 0; i < delay.delayTicks && MacroExecutor.isCurrentRunActive(); i++) {
|
for (int i = 0; i < delay.delayTicks && MacroExecutor.isCurrentRunActive(); i++) {
|
||||||
MacroExecutor.waitForCondition(MacroConditionRegistry.waitForNextTick());
|
MacroRunLoop.waitForCondition(MacroConditionRegistry.waitForNextTick());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Thread.sleep(Math.max(0, delay.delayMs));
|
Thread.sleep(Math.max(0, delay.delayMs));
|
||||||
|
|
|
||||||
1259
src/main/java/autismclient/util/macro/MacroRunLoop.java
Normal file
1259
src/main/java/autismclient/util/macro/MacroRunLoop.java
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -136,7 +136,7 @@ final class MacroWorldActions {
|
||||||
if (resolvedTarget.hasIdentity()) {
|
if (resolvedTarget.hasIdentity()) {
|
||||||
MacroExecutor.setCurrentStatus("Waiting for item in GUI: " + itemLabel);
|
MacroExecutor.setCurrentStatus("Waiting for item in GUI: " + itemLabel);
|
||||||
CompletableFuture<Void> waitFuture = MacroConditionRegistry.waitForItemInHandler(resolvedTarget);
|
CompletableFuture<Void> waitFuture = MacroConditionRegistry.waitForItemInHandler(resolvedTarget);
|
||||||
MacroExecutor.waitForCondition(waitFuture);
|
MacroRunLoop.waitForCondition(waitFuture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -216,7 +216,7 @@ final class MacroWorldActions {
|
||||||
}
|
}
|
||||||
if (MacroExecutor.isCurrentRunActive()) {
|
if (MacroExecutor.isCurrentRunActive()) {
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -264,7 +264,7 @@ final class MacroWorldActions {
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (!MacroExecutor.isCurrentRunActive()) requestOwnedBaritoneStop(run, mc);
|
if (!MacroExecutor.isCurrentRunActive()) requestOwnedBaritoneStop(run, mc);
|
||||||
|
|
@ -356,7 +356,7 @@ final class MacroWorldActions {
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (run != null && run.activeMineTracker == mineTracker) run.activeMineTracker = null;
|
if (run != null && run.activeMineTracker == mineTracker) run.activeMineTracker = null;
|
||||||
|
|
@ -409,7 +409,7 @@ final class MacroWorldActions {
|
||||||
long waitStartMs = System.currentTimeMillis();
|
long waitStartMs = System.currentTimeMillis();
|
||||||
while (MacroExecutor.isCurrentRunActive() && AutismCompatManager.isBaritoneBusy() && System.currentTimeMillis() - waitStartMs < 3000L) {
|
while (MacroExecutor.isCurrentRunActive() && AutismCompatManager.isBaritoneBusy() && System.currentTimeMillis() - waitStartMs < 3000L) {
|
||||||
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
|
||||||
MacroExecutor.waitForCondition(tickFuture);
|
MacroRunLoop.waitForCondition(tickFuture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue