10
10
import org .osbot .rs07 .script .MethodProvider ;
11
11
import utils .CachedWidget ;
12
12
import utils .Sleep ;
13
+ import utils .WidgetActionFilter ;
13
14
14
15
import javax .swing .*;
15
16
import java .util .Arrays ;
16
17
import java .util .Collections ;
17
18
import java .util .Random ;
19
+ import java .util .stream .Collectors ;
18
20
19
21
public final class RuneScapeGuideSection extends TutorialSection {
20
22
23
+ private final CachedWidget nameLookupWidget = new CachedWidget (new WidgetActionFilter ("Look up name" ));
24
+ private final CachedWidget checkNameWidget = new CachedWidget (w -> w .getMessage ().contains ("What name would you like to check" ));
25
+ private final CachedWidget suggestedNameWidget = new CachedWidget ("suggestions" );
26
+ private final CachedWidget setNameWidget = new CachedWidget ("Set name" );
21
27
private final CachedWidget creationScreenWidget = new CachedWidget ("Head" );
22
28
private final CachedWidget experienceWidget = new CachedWidget ("What's your experience with Old School Runescape?" );
23
29
private boolean isAudioDisabled ;
@@ -37,10 +43,14 @@ public final void onLoop() throws InterruptedException {
37
43
case 0 :
38
44
case 1 :
39
45
case 2 :
40
- if (creationScreenIsVisible ()) {
46
+ if (getConfigs ().get (1042 ) != 21 ) {
47
+ setDisplayName ();
48
+ } else if (isCreationScreenVisible ()) {
41
49
createRandomCharacter ();
42
- } else if (experienceWidget .get (getWidgets ()).isPresent () && getDialogues ().selectOption (random (1 , 3 ))) {
43
- Sleep .sleepUntil (() -> !experienceWidget .get (getWidgets ()).map (widget -> !widget .isVisible ()).orElse (true ), 2000 , 600 );
50
+ } else if (experienceWidget .get (getWidgets ()).isPresent ()) {
51
+ if (getDialogues ().selectOption (random (1 , 3 ))) {
52
+ Sleep .sleepUntil (() -> !experienceWidget .get (getWidgets ()).map (widget -> !widget .isVisible ()).orElse (true ), 2000 , 600 );
53
+ }
44
54
} else {
45
55
talkToInstructor ();
46
56
}
@@ -72,7 +82,50 @@ public final void onLoop() throws InterruptedException {
72
82
}
73
83
}
74
84
75
- private boolean creationScreenIsVisible () {
85
+ private void setDisplayName () {
86
+ int configID = 1042 ;
87
+ int configValue = getConfigs ().get (configID );
88
+
89
+ switch (configValue ) {
90
+ case 0 :
91
+ case 1 :
92
+ if (suggestedNameWidget .get (getWidgets ()).isPresent ()) {
93
+ RS2Widget suggestedWidget = suggestedNameWidget .get (getWidgets ()).get ();
94
+ int rootID = suggestedWidget .getRootId ();
95
+ int secondLevelID = suggestedWidget .getSecondLevelId ();
96
+ RS2Widget nameWidget = getWidgets ().get (rootID , secondLevelID + 2 + random (0 , 2 ));
97
+ if (nameWidget .interact ()) {
98
+ Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 4 , 1200 );
99
+ }
100
+ } else if (checkNameWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ()) {
101
+ if (getKeyboard ().typeString (generateRandomString (4 ))) {
102
+ Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 2 , 1200 );
103
+ }
104
+ } else if (nameLookupWidget .get (getWidgets ()).get ().interact ("Look up name" )) {
105
+ Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 1 , 1200 );
106
+ }
107
+ break ;
108
+ case 4 :
109
+ if (setNameWidget .get (getWidgets ()).isPresent ()) {
110
+ if (setNameWidget .get (getWidgets ()).get ().interact ()) {
111
+ Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 21 , 2400 );
112
+ }
113
+ }
114
+ default :
115
+ Sleep .sleepUntil (() -> getConfigs ().get (1042 ) != configValue , 1200 );
116
+ }
117
+ }
118
+
119
+ private String generateRandomString (int maxLength ) {
120
+ String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
121
+ + "abcdefghijklmnopqrstuvwxyz"
122
+ + "0123456789" ;
123
+ return new Random ().ints (new Random ().nextInt (maxLength ) + 1 , 0 , chars .length ())
124
+ .mapToObj (i -> "" + chars .charAt (i ))
125
+ .collect (Collectors .joining ());
126
+ }
127
+
128
+ private boolean isCreationScreenVisible () {
76
129
return creationScreenWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ();
77
130
}
78
131
@@ -97,7 +150,7 @@ private void createRandomCharacter() throws InterruptedException {
97
150
}
98
151
99
152
if (getWidgets ().getWidgetContainingText ("Accept" ).interact ()) {
100
- Sleep .sleepUntil (() -> !creationScreenIsVisible (), 3000 , 600 );
153
+ Sleep .sleepUntil (() -> !isCreationScreenVisible (), 3000 , 600 );
101
154
}
102
155
}
103
156
0 commit comments