Skip to content

Commit 0a44224

Browse files
authored
Merge pull request #1771 from chsami/development
2.6.0
2 parents 6b2c340 + bd09a71 commit 0a44224

5 files changed

Lines changed: 36 additions & 8 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ project.build.group=net.runelite
3131
project.build.version=1.12.26.2
3232

3333
glslang.path=
34-
microbot.version=2.5.9
34+
microbot.version=2.6.0
3535
microbot.commit.sha=nogit
3636
microbot.repo.url=http://138.201.81.246:8081/repository/microbot-snapshot/
3737
microbot.repo.username=

runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/dialogues/Rs2Dialogue.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static net.runelite.client.plugins.microbot.util.Global.sleepUntilTrue;
1818

1919
public class Rs2Dialogue {
20+
private static final String CLICK_HERE_TO_CONTINUE = "Click here to continue";
2021

2122
/**
2223
* Checks if the player is currently in a dialogue state.
@@ -112,13 +113,20 @@ private static boolean hasBarrowsContinue() {
112113
/**
113114
* Checks if there is a "Continue" option in the spell filter dialogue.
114115
*
115-
* <p>This method verifies the visibility of the widget associated with the spell filter continue option.
116-
* It checks the widget with interface ID 162 and child ID 43 to determine if the "Continue" option is present.</p>
116+
* <p>This method verifies the chatbox widget used by spell filter continue prompts.
117+
* It checks the widget text because the same chatbox child is also used for text inputs.</p>
117118
*
118119
* @return true if the spell filter continue option is visible, false otherwise.
119120
*/
120121
private static boolean hasSpellFilterContinue() {
121-
return Rs2Widget.isWidgetVisible(162, 44);
122+
return Microbot.getClientThread().runOnClientThreadOptional(() -> {
123+
Widget widget = Microbot.getClient().getWidget(162, 44);
124+
return widget != null && !widget.isHidden() && isContinuePromptText(widget.getText());
125+
}).orElse(false);
126+
}
127+
128+
static boolean isContinuePromptText(String text) {
129+
return text != null && Rs2UiHelper.stripTagsToSpace(text).equalsIgnoreCase(CLICK_HERE_TO_CONTINUE);
122130
}
123131

124132
/**
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package net.runelite.client.plugins.microbot.util.dialogues;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertFalse;
6+
import static org.junit.Assert.assertTrue;
7+
8+
public class Rs2DialogueTest {
9+
@Test
10+
public void isContinuePromptTextAcceptsContinuePrompt() {
11+
assertTrue(Rs2Dialogue.isContinuePromptText("<col=ffffff>Click here to continue</col>"));
12+
}
13+
14+
@Test
15+
public void isContinuePromptTextRejectsChatboxInputs() {
16+
assertFalse(Rs2Dialogue.isContinuePromptText("Enter amount:"));
17+
assertFalse(Rs2Dialogue.isContinuePromptText("Search"));
18+
assertFalse(Rs2Dialogue.isContinuePromptText("abyssal whip"));
19+
}
20+
}

runelite-client/src/test/resources/threadsafety/client-thread-guardrail-baseline.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,11 @@ net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#handleQuestOptio
163163
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#hasDialogueOptionTitle(String, boolean): boolean -> net.runelite.api.widgets.Widget#getDynamicChildren(): Widget[]
164164
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#hasDialogueOptionTitle(String, boolean): boolean -> net.runelite.api.widgets.Widget#getText(): String
165165
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#hasSelectAnOption(): boolean -> net.runelite.api.widgets.Widget#getDynamicChildren(): Widget[]
166-
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$clickOption$2(Widget, String): boolean -> net.runelite.api.widgets.Widget#getText(): String
167166
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$clickOption$3(Widget, String): boolean -> net.runelite.api.widgets.Widget#getText(): String
168-
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$getCombinationOption$8(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getName(): String
169-
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$getDialogueOption$0(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getText(): String
170-
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$hasDialogueOption$1(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getText(): String
167+
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$clickOption$4(Widget, String): boolean -> net.runelite.api.widgets.Widget#getText(): String
168+
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$getCombinationOption$9(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getName(): String
169+
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$getDialogueOption$1(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getText(): String
170+
net.runelite.client.plugins.microbot.util.dialogues.Rs2Dialogue#lambda$hasDialogueOption$2(boolean, String, Widget): boolean -> net.runelite.api.widgets.Widget#getText(): String
171171
net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment#<clinit>(): void -> net.runelite.api.EquipmentInventorySlot#getSlotIdx(): int
172172
net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment#<clinit>(): void -> net.runelite.api.EquipmentInventorySlot#values(): EquipmentInventorySlot[]
173173
net.runelite.client.plugins.microbot.util.equipment.Rs2Equipment#equipment(): ItemContainer -> net.runelite.api.Client#getItemContainer(int): ItemContainer

0 commit comments

Comments
 (0)