Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit 7318658

Browse files
author
Explv
committed
Fix Tutorial Island display name setting
1 parent eb256b0 commit 7318658

File tree

3 files changed

+71
-36
lines changed

3 files changed

+71
-36
lines changed

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.explv.explv_osbot_manager</groupId>
88
<artifactId>explvs_aio</artifactId>
9-
<version>v3.1.6</version>
9+
<version>v3.1.7</version>
1010
<repositories>
1111
<repository>
1212
<id>local-repo</id>
@@ -23,6 +23,7 @@
2323
<groupId>org.osbot</groupId>
2424
<artifactId>osbot</artifactId>
2525
<version>0</version>
26+
<scope>provided</scope>
2627
</dependency>
2728
</dependencies>
2829
<build>

src/main/java/activities/tutorial_island/RuneScapeGuideSection.java

Lines changed: 67 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package activities.tutorial_island;
22

3+
import org.osbot.rs07.api.Configs;
34
import org.osbot.rs07.api.ui.RS2Widget;
45
import org.osbot.rs07.api.ui.Tab;
56
import org.osbot.rs07.event.Event;
@@ -13,21 +14,44 @@
1314

1415
import java.util.Arrays;
1516
import java.util.Collections;
17+
import java.util.Optional;
1618
import java.util.Random;
1719
import java.util.stream.Collectors;
1820

1921
public final class RuneScapeGuideSection extends TutorialSection {
22+
private enum UsernameCheckStatus {
23+
NOT_AVAILABLE(0),
24+
CHECKING(1),
25+
AVAILABLE(2);
2026

27+
int bitNum;
2128

22-
private final CachedWidget nameAcceptedWidget = new CachedWidget(w -> w.getMessage().contains("Great!"));
29+
UsernameCheckStatus(int bitNum) {
30+
this.bitNum = bitNum;
31+
}
32+
33+
static UsernameCheckStatus getUsernameCheckStatus(Configs configs) {
34+
int configVal = configs.get(1042);
2335

24-
private final CachedWidget nameLookupWidget = new CachedWidget(w -> w.getMessage().contains("Look up name"));
25-
private final CachedWidget nameInputWidget = new CachedWidget(w -> w.getMessage().contains("What name would you like to check"));
26-
private final CachedWidget nameSetWidget = new CachedWidget("Set name");
27-
private final CachedWidget nameScreenDetectionWidget = new CachedWidget("Choose display name");
36+
for (UsernameCheckStatus checkStatus : values()) {
37+
if ((configVal & (1 << checkStatus.bitNum)) != 0) {
38+
return checkStatus;
39+
}
40+
}
2841

42+
return null;
43+
}
44+
}
45+
46+
private final CachedWidget nameAcceptedWidget = new CachedWidget(w -> w.getMessage().contains("Great!"));
47+
private final CachedWidget lookupNameWidget = new CachedWidget(w -> w.getMessage().contains("Look up name"));
48+
private final CachedWidget inputNameWidget = new CachedWidget(w -> w.getMessage().contains("Please pick a unique display name"));
49+
private final CachedWidget setNameWidget = new CachedWidget("Set name");
50+
private final CachedWidget chooseDisplayNameWidget = new CachedWidget("Choose display name");
51+
private final CachedWidget suggestionsWidget = new CachedWidget("one of our suggestions");
2952
private final CachedWidget creationScreenWidget = new CachedWidget("Head");
3053
private final CachedWidget experienceWidget = new CachedWidget("What's your experience with Old School Runescape?");
54+
3155
private boolean isAudioDisabled;
3256

3357
public RuneScapeGuideSection() {
@@ -45,13 +69,13 @@ public final void onLoop() throws InterruptedException {
4569
case 0:
4670
case 1:
4771
case 2:
48-
if (nameScreenDetectionWidget.get(getWidgets()).isPresent()) {
72+
if (chooseDisplayNameWidget.isVisible(getWidgets())) {
4973
setDisplayName();
50-
} else if (isCreationScreenVisible()) {
74+
} else if (creationScreenWidget.isVisible(getWidgets())) {
5175
createRandomCharacter();
52-
} else if (experienceWidget.get(getWidgets()).isPresent()) {
76+
} else if (experienceWidget.isVisible(getWidgets())) {
5377
if (getDialogues().selectOption(random(1, 3))) {
54-
Sleep.sleepUntil(() -> !experienceWidget.get(getWidgets()).map(widget -> !widget.isVisible()).orElse(true), 2000, 600);
78+
Sleep.sleepUntil(() -> !experienceWidget.isVisible(getWidgets()), 2000, 600);
5579
}
5680
} else {
5781
talkToInstructor();
@@ -79,24 +103,40 @@ public final void onLoop() throws InterruptedException {
79103
}
80104
}
81105

82-
private void setDisplayName() {
83-
if (nameAcceptedWidget.get(getWidgets()).isPresent()) {
84-
nameSetWidget.get(getWidgets()).ifPresent(rs2Widget -> {
85-
if (rs2Widget.interact()) {
86-
Sleep.sleepUntil(() -> !nameScreenDetectionWidget.get(getWidgets()).isPresent(), 8000, 600);
106+
private void setDisplayName() throws InterruptedException {
107+
UsernameCheckStatus checkStatus = UsernameCheckStatus.getUsernameCheckStatus(getConfigs());
108+
109+
if (checkStatus == null) {
110+
log("Couldn't determine username check status");
111+
getBot().getScriptExecutor().stop();
112+
return;
113+
}
114+
115+
switch (checkStatus) {
116+
case NOT_AVAILABLE:
117+
if (suggestionsWidget.isVisible(getWidgets())) {
118+
Optional<RS2Widget> suggestionWidget = suggestionsWidget.getRelative(getWidgets(), 0, random(2, 5), 0);
119+
if (suggestionWidget.isPresent() && suggestionWidget.get().interact("Set name")) {
120+
Sleep.sleepUntil(() -> nameAcceptedWidget.get(getWidgets()).isPresent(), 5000);
121+
}
122+
} else if (inputNameWidget.isVisible(getWidgets()) && getKeyboard().typeString(generateRandomString(5), true)) {
123+
Sleep.sleepUntil(() -> UsernameCheckStatus.getUsernameCheckStatus(getConfigs()) == UsernameCheckStatus.CHECKING, 2000, 100);
124+
} else if (lookupNameWidget.interact(getWidgets())) {
125+
Sleep.sleepUntil(() -> !inputNameWidget.isVisible(getWidgets()), 8000, 600);
126+
}
127+
break;
128+
case CHECKING:
129+
Sleep.sleepUntil(() -> UsernameCheckStatus.getUsernameCheckStatus(getConfigs()) != UsernameCheckStatus.CHECKING, 2000, 100);
130+
break;
131+
case AVAILABLE:
132+
if (setNameWidget.interact(getWidgets())) {
133+
Sleep.sleepUntil(
134+
() -> !chooseDisplayNameWidget.isVisible(getWidgets()),
135+
8000,
136+
600
137+
);
87138
}
88-
});
89-
} else if (nameInputWidget.get(getWidgets()).isPresent()
90-
&& nameInputWidget.get(getWidgets()).get().isVisible()
91-
&& getKeyboard().typeString(generateRandomString(5), true)) {
92-
93-
final int configValue = getConfigs().get(1042);
94-
95-
Sleep.sleepUntil(() -> getConfigs().get(1042) != configValue, 8000, 600);
96-
Sleep.sleepUntil(() -> getConfigs().get(1042) == configValue || nameAcceptedWidget.get(getWidgets()).isPresent(), 8000, 600);
97-
} else if (nameLookupWidget.get(getWidgets()).isPresent()
98-
&& nameLookupWidget.get(getWidgets()).get().interact()) {
99-
Sleep.sleepUntil(() -> nameInputWidget.get(getWidgets()).isPresent() && nameInputWidget.get(getWidgets()).get().isVisible(), 8000, 600);
139+
break;
100140
}
101141
}
102142

@@ -109,10 +149,6 @@ private String generateRandomString(int maxLength) {
109149
.collect(Collectors.joining());
110150
}
111151

112-
private boolean isCreationScreenVisible() {
113-
return creationScreenWidget.get(getWidgets()).filter(RS2Widget::isVisible).isPresent();
114-
}
115-
116152
private void createRandomCharacter() throws InterruptedException {
117153
if (new Random().nextInt(2) == 1) {
118154
getWidgets().getWidgetContainingText("Female").interact();
@@ -131,7 +167,7 @@ private void createRandomCharacter() throws InterruptedException {
131167
}
132168

133169
if (getWidgets().getWidgetContainingText("Accept").interact()) {
134-
Sleep.sleepUntil(() -> !isCreationScreenVisible(), 3000, 600);
170+
Sleep.sleepUntil(() -> !creationScreenWidget.isVisible(getWidgets()), 3000, 600);
135171
}
136172
}
137173

src/main/java/script/AIO.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import gui.utils.EventDispatchThreadRunner;
77
import org.json.simple.JSONObject;
88
import org.osbot.rs07.api.ui.Tab;
9-
import org.osbot.rs07.randoms.WelcomeScreen;
109
import org.osbot.rs07.script.Script;
1110
import org.osbot.rs07.script.ScriptManifest;
1211
import paint.MouseTrail;
@@ -23,14 +22,13 @@
2322
import java.io.File;
2423
import java.lang.reflect.InvocationTargetException;
2524
import java.nio.file.Paths;
26-
import java.util.Collections;
25+
import java.util.*;
2726
import java.util.List;
28-
import java.util.Optional;
2927

3028
@ScriptManifest(author = "Explv", name = "Explv's AIO " + AIO.VERSION, info = "AIO", version = 0, logo = "http://i.imgur.com/58Zz0fb.png")
3129
public class AIO extends Script {
3230

33-
static final String VERSION = "v3.1.6";
31+
static final String VERSION = "v3.1.7";
3432

3533
private Gui gui;
3634
private Paint paint;

0 commit comments

Comments
 (0)