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:
sectersion 2026-10-11 16:31:51 +01:00
parent 6751b750a3
commit 45431ab136
7 changed files with 1346 additions and 1326 deletions

View file

@ -144,7 +144,7 @@ final class MacroActionRunner {
return true;
}
CompletableFuture<Void> future = MacroConditionRegistry.waitForGui(guiName.value());
MacroExecutor.waitForCondition(future);
MacroRunLoop.waitForCondition(future);
waitForCurrentGuiReady(mc);
return true;
}
@ -285,17 +285,17 @@ final class MacroActionRunner {
@Override public void waitTicks(int ticks) {
MacroExecutor.withRunContext(run, () -> {
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
MacroExecutor.waitForCondition(MacroConditionRegistry.waitForNextTick());
MacroRunLoop.waitForCondition(MacroConditionRegistry.waitForNextTick());
}
});
}
@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) {
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(); }
@ -351,7 +351,7 @@ final class MacroActionRunner {
for (int t = 0; t < action.holdTicks && MacroExecutor.isCurrentRunActive(); t++) {
CompletableFuture<Void> tf = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tf);
MacroRunLoop.waitForCondition(tf);
}
} finally {
if (gateInstalled[0]) {
@ -420,7 +420,7 @@ final class MacroActionRunner {
private static void waitTicks(int ticks) {
for (int i = 0; i < ticks && MacroExecutor.isCurrentRunActive(); i++) {
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
}
@ -515,7 +515,7 @@ final class MacroActionRunner {
return;
}
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -81,7 +81,7 @@ final class MacroPacketWait {
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
? "Waiting for packet: Any"
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
MacroExecutor.waitForCondition(future);
MacroRunLoop.waitForCondition(future);
} finally {
synchronized (run.packetWaitLock) {
if (run.packetFuture == future) {
@ -105,7 +105,7 @@ final class MacroPacketWait {
MacroExecutor.setCurrentStatus(normalizedTarget.isEmpty()
? "Waiting for packet: Any"
: "Waiting for packet: " + WaitForPacketAction.getDisplayLabel(normalizedTarget));
MacroExecutor.waitForCondition(future);
MacroRunLoop.waitForCondition(future);
} finally {
synchronized (MacroExecutor.packetWaitLock) {
if (MacroExecutor.activePacketFuture == future) {
@ -127,7 +127,7 @@ final class MacroPacketWait {
run.waitingForChat.set(true);
try {
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
MacroExecutor.waitForCondition(future);
MacroRunLoop.waitForCondition(future);
MacroPrearm.commitStagedCapture(wca);
} finally {
if (run.chatFuture == future) {
@ -148,7 +148,7 @@ final class MacroPacketWait {
MacroExecutor.lastMatchedChat.set("");
try {
if (wca.timeoutMs > 0) future.completeOnTimeout(null, wca.timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
MacroExecutor.waitForCondition(future);
MacroRunLoop.waitForCondition(future);
} finally {
MacroExecutor.isWaitingForChat.set(false);
MacroExecutor.waitingChatPattern.set("");

View file

@ -136,7 +136,7 @@ final class MacroPrearm {
if (action instanceof WaitGuiTypeAction guiType) {
return predicatePrearm(action,
guiType.waitMode == WaitGuiTypeAction.WaitMode.CLOSE
? MacroExecutor.guiClosePredicate(guiType, mc)
? MacroRunLoop.guiClosePredicate(guiType, mc)
: () -> {
var capture = guiType.capture(mc);
capture.ifPresent(values -> stageCapture(guiType, values));

View file

@ -47,7 +47,7 @@ final class MacroRace {
disablePacketGate(mc, action);
}
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);
}
case UNTIL_INVENTORY -> {
@ -58,7 +58,7 @@ final class MacroRace {
wait.slot = action.untilInventorySlot;
wait.timeoutMs = Math.max(0, action.durationValue);
wait.resetBaseline();
MacroExecutor.waitForPredicate(() -> wait.matches(mc), wait.timeoutMs);
MacroRunLoop.waitForPredicate(() -> wait.matches(mc), wait.timeoutMs);
disablePacketGate(mc, action);
}
default -> {}
@ -96,7 +96,7 @@ final class MacroRace {
if (isMacroStepSatisfied(action)) return;
if (action.timeoutMs > 0 && System.currentTimeMillis() - startMs >= action.timeoutMs) return;
CompletableFuture<Void> tick = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tick);
MacroRunLoop.waitForCondition(tick);
}
}
@ -730,7 +730,7 @@ final class MacroRace {
try {
if (delay.useTicks) {
for (int i = 0; i < delay.delayTicks && MacroExecutor.isCurrentRunActive(); i++) {
MacroExecutor.waitForCondition(MacroConditionRegistry.waitForNextTick());
MacroRunLoop.waitForCondition(MacroConditionRegistry.waitForNextTick());
}
} else {
Thread.sleep(Math.max(0, delay.delayMs));

File diff suppressed because it is too large Load diff

View file

@ -136,7 +136,7 @@ final class MacroWorldActions {
if (resolvedTarget.hasIdentity()) {
MacroExecutor.setCurrentStatus("Waiting for item in GUI: " + itemLabel);
CompletableFuture<Void> waitFuture = MacroConditionRegistry.waitForItemInHandler(resolvedTarget);
MacroExecutor.waitForCondition(waitFuture);
MacroRunLoop.waitForCondition(waitFuture);
}
}
@ -216,7 +216,7 @@ final class MacroWorldActions {
}
if (MacroExecutor.isCurrentRunActive()) {
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
}
}
@ -264,7 +264,7 @@ final class MacroWorldActions {
}
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
} finally {
if (!MacroExecutor.isCurrentRunActive()) requestOwnedBaritoneStop(run, mc);
@ -356,7 +356,7 @@ final class MacroWorldActions {
}
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
} finally {
if (run != null && run.activeMineTracker == mineTracker) run.activeMineTracker = null;
@ -409,7 +409,7 @@ final class MacroWorldActions {
long waitStartMs = System.currentTimeMillis();
while (MacroExecutor.isCurrentRunActive() && AutismCompatManager.isBaritoneBusy() && System.currentTimeMillis() - waitStartMs < 3000L) {
CompletableFuture<Void> tickFuture = MacroConditionRegistry.waitForNextTick();
MacroExecutor.waitForCondition(tickFuture);
MacroRunLoop.waitForCondition(tickFuture);
}
}