10
10
import org .osbot .rs07 .script .MethodProvider ;
11
11
import utils .CachedWidget ;
12
12
import utils .Sleep ;
13
- import utils .WidgetActionFilter ;
14
13
15
- import javax .swing .*;
16
14
import java .util .Arrays ;
17
15
import java .util .Collections ;
18
16
import java .util .Random ;
17
+ import java .util .concurrent .ThreadLocalRandom ;
19
18
import java .util .stream .Collectors ;
20
19
21
20
public final class RuneScapeGuideSection extends TutorialSection {
22
21
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" );
22
+
23
+ private final CachedWidget nameAcceptedWidget = new CachedWidget (w -> w .getMessage ().contains ("Great!" ));
24
+ private final CachedWidget nameRejectedWidget = new CachedWidget (w -> w .getMessage ().contains ("Sorry" ));
25
+
26
+ private final CachedWidget nameLookupWidget = new CachedWidget (w -> w .getMessage ().contains ("Look up name" ));
27
+ private final CachedWidget nameInputWidget = new CachedWidget (w -> w .getMessage ().contains ("What name would you like to check" ));
28
+ private final CachedWidget nameSetWidget = new CachedWidget ("Set name" );
29
+ private final CachedWidget nameScreenDetectionWidget = new CachedWidget ("Choose display name" );
30
+
27
31
private final CachedWidget creationScreenWidget = new CachedWidget ("Head" );
28
32
private final CachedWidget experienceWidget = new CachedWidget ("What's your experience with Old School Runescape?" );
29
33
private boolean isAudioDisabled ;
@@ -43,7 +47,7 @@ public final void onLoop() throws InterruptedException {
43
47
case 0 :
44
48
case 1 :
45
49
case 2 :
46
- if (getConfigs (). get ( 1042 ) != 21 ) {
50
+ if (nameScreenDetectionWidget . get ( getWidgets ()). isPresent () ) {
47
51
setDisplayName ();
48
52
} else if (isCreationScreenVisible ()) {
49
53
createRandomCharacter ();
@@ -80,56 +84,40 @@ public final void onLoop() throws InterruptedException {
80
84
}
81
85
82
86
private void setDisplayName () {
83
- int configID = 1042 ;
84
- int configValue = getConfigs ().get (configID );
85
-
86
- switch (configValue ) {
87
- case 0 :
88
- case 1 :
89
- if (suggestedNameWidget .get (getWidgets ()).isPresent ()) {
90
- RS2Widget suggestedWidget = suggestedNameWidget .get (getWidgets ()).get ();
91
- int rootID = suggestedWidget .getRootId ();
92
- int secondLevelID = suggestedWidget .getSecondLevelId ();
93
- RS2Widget nameWidget = getWidgets ().get (rootID , secondLevelID + 2 + random (0 , 2 ));
94
- if (nameWidget .interact ()) {
95
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 4 , 1200 );
96
- }
97
- } else if (checkNameWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ()) {
98
- if (getKeyboard ().typeString (generateRandomString (4 ))) {
99
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 2 , 1200 );
100
- }
101
- } else if (nameLookupWidget .get (getWidgets ()).get ().interact ("Look up name" )) {
102
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 1 , 1200 );
103
- }
104
- break ;
105
- case 4 :
106
- if (setNameWidget .get (getWidgets ()).isPresent ()) {
107
- if (setNameWidget .get (getWidgets ()).get ().interact ()) {
108
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 21 , 2400 );
109
- }
87
+ if (nameAcceptedWidget .get (getWidgets ()).isPresent ()) {
88
+ nameSetWidget .get (getWidgets ()).ifPresent (rs2Widget -> {
89
+ if (rs2Widget .interact ()) {
90
+ Sleep .sleepUntil (() -> !nameScreenDetectionWidget .get (getWidgets ()).isPresent (), 8000 , 600 );
110
91
}
111
- default :
112
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) != configValue , 1200 );
92
+ });
93
+ } else if (nameInputWidget .get (getWidgets ()).isPresent ()
94
+ && nameInputWidget .get (getWidgets ()).get ().isVisible ()
95
+ && getKeyboard ().typeString (generateRandomString (7 , 12 ), true )) {
96
+
97
+ final int configValue = getConfigs ().get (1042 );
98
+
99
+ Sleep .sleepUntil (() -> getConfigs ().get (1042 ) != configValue , 8000 , 600 );
100
+ Sleep .sleepUntil (() -> getConfigs ().get (1042 ) == configValue || nameAcceptedWidget .get (getWidgets ()).isPresent (), 8000 , 600 );
101
+ } else if (nameLookupWidget .get (getWidgets ()).isPresent ()
102
+ && nameLookupWidget .get (getWidgets ()).get ().interact ()) {
103
+ Sleep .sleepUntil (() -> nameInputWidget .get (getWidgets ()).isPresent () && nameInputWidget .get (getWidgets ()).get ().isVisible (), 8000 , 600 );
113
104
}
114
105
}
115
106
116
- private String generateRandomString (int maxLength ) {
107
+ private String generateRandomString (int min , int maxLength ) {
117
108
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
118
- + "abcdefghijklmnopqrstuvwxyz"
119
- + "0123456789" ;
120
- return new Random ().ints (new Random ().nextInt (maxLength ) + 1 , 0 , chars .length ())
121
- .mapToObj (i -> "" + chars .charAt (i ))
122
- .collect (Collectors .joining ());
109
+ + "abcdefghijklmnopqrstuvwxyz"
110
+ + "0123456789" ;
111
+ return ThreadLocalRandom . current ().ints (ThreadLocalRandom . current ().nextInt (min , maxLength + 1 ) , 0 , chars .length ())
112
+ .mapToObj (i -> "" + chars .charAt (i ))
113
+ .collect (Collectors .joining ());
123
114
}
124
115
125
116
private boolean isCreationScreenVisible () {
126
117
return creationScreenWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ();
127
118
}
128
119
129
120
private void createRandomCharacter () throws InterruptedException {
130
- // letting all the widgets show up
131
- sleep (2000 );
132
-
133
121
if (new Random ().nextInt (2 ) == 1 ) {
134
122
getWidgets ().getWidgetContainingText ("Female" ).interact ();
135
123
}
0 commit comments