1010import org .osbot .rs07 .script .MethodProvider ;
1111import utils .CachedWidget ;
1212import utils .Sleep ;
13+ import utils .WidgetActionFilter ;
1314
1415import javax .swing .*;
1516import java .util .Arrays ;
1617import java .util .Collections ;
1718import java .util .Random ;
19+ import java .util .stream .Collectors ;
1820
1921public final class RuneScapeGuideSection extends TutorialSection {
2022
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" );
2127 private final CachedWidget creationScreenWidget = new CachedWidget ("Head" );
2228 private final CachedWidget experienceWidget = new CachedWidget ("What's your experience with Old School Runescape?" );
2329 private boolean isAudioDisabled ;
@@ -37,10 +43,14 @@ public final void onLoop() throws InterruptedException {
3743 case 0 :
3844 case 1 :
3945 case 2 :
40- if (creationScreenIsVisible ()) {
46+ if (getConfigs ().get (1042 ) != 21 ) {
47+ setDisplayName ();
48+ } else if (isCreationScreenVisible ()) {
4149 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+ }
4454 } else {
4555 talkToInstructor ();
4656 }
@@ -72,7 +82,50 @@ public final void onLoop() throws InterruptedException {
7282 }
7383 }
7484
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 () {
76129 return creationScreenWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ();
77130 }
78131
@@ -97,7 +150,7 @@ private void createRandomCharacter() throws InterruptedException {
97150 }
98151
99152 if (getWidgets ().getWidgetContainingText ("Accept" ).interact ()) {
100- Sleep .sleepUntil (() -> !creationScreenIsVisible (), 3000 , 600 );
153+ Sleep .sleepUntil (() -> !isCreationScreenVisible (), 3000 , 600 );
101154 }
102155 }
103156
0 commit comments