1
1
package activities .tutorial_island ;
2
2
3
-
4
3
import org .osbot .rs07 .api .ui .RS2Widget ;
5
4
import org .osbot .rs07 .api .ui .Tab ;
6
5
import org .osbot .rs07 .event .Event ;
6
+ import org .osbot .rs07 .script .MethodProvider ;
7
7
import util .Sleep ;
8
8
import util .event .DisableAudioEvent ;
9
9
import util .event .EnableFixedModeEvent ;
10
10
import util .event .ToggleRoofsHiddenEvent ;
11
11
import util .event .ToggleShiftDropEvent ;
12
12
import util .widget .CachedWidget ;
13
- import util .widget .filters .WidgetActionFilter ;
14
13
15
14
import java .util .Arrays ;
16
15
import java .util .Collections ;
17
- import java .util .Optional ;
18
16
import java .util .Random ;
19
17
import java .util .stream .Collectors ;
20
18
21
19
public final class RuneScapeGuideSection extends TutorialSection {
22
20
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
+
22
+ private final CachedWidget nameAcceptedWidget = new CachedWidget (w -> w .getMessage ().contains ("Great!" ));
23
+
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" );
28
+
27
29
private final CachedWidget creationScreenWidget = new CachedWidget ("Head" );
28
30
private final CachedWidget experienceWidget = new CachedWidget ("What's your experience with Old School Runescape?" );
29
31
private boolean isAudioDisabled ;
@@ -43,13 +45,13 @@ public final void onLoop() throws InterruptedException {
43
45
case 0 :
44
46
case 1 :
45
47
case 2 :
46
- if (getConfigs (). get ( 1042 ) != 21 ) {
48
+ if (nameScreenDetectionWidget . get ( getWidgets ()). isPresent () ) {
47
49
setDisplayName ();
48
50
} else if (isCreationScreenVisible ()) {
49
51
createRandomCharacter ();
50
- } else if (experienceWidget .isVisible (getWidgets ())) {
52
+ } else if (experienceWidget .get (getWidgets ()). isPresent ( )) {
51
53
if (getDialogues ().selectOption (random (1 , 3 ))) {
52
- Sleep .sleepUntil (() -> !experienceWidget .isVisible (getWidgets ()), 2000 , 600 );
54
+ Sleep .sleepUntil (() -> !experienceWidget .get (getWidgets ()). map ( widget -> ! widget . isVisible ()). orElse ( true ), 2000 , 600 );
53
55
}
54
56
} else {
55
57
talkToInstructor ();
@@ -65,6 +67,8 @@ public final void onLoop() throws InterruptedException {
65
67
isAudioDisabled = disableAudio ();
66
68
} else if (!getSettings ().areRoofsEnabled ()) {
67
69
toggleRoofsHidden ();
70
+ } else if (!getSettings ().isShiftDropActive ()) {
71
+ toggleShiftDrop ();
68
72
} else if (getObjects ().closest ("Door" ).interact ("Open" )) {
69
73
Sleep .sleepUntil (() -> getProgress () != 10 , 5000 , 600 );
70
74
}
@@ -76,36 +80,23 @@ public final void onLoop() throws InterruptedException {
76
80
}
77
81
78
82
private void setDisplayName () {
79
- int configID = 1042 ;
80
- int configValue = getConfigs ().get (configID );
81
-
82
- switch (configValue ) {
83
- case 0 :
84
- case 1 :
85
- if (suggestedNameWidget .isVisible (getWidgets ())) {
86
- Optional <RS2Widget > nameWidget = suggestedNameWidget .getRelative (
87
- getWidgets (),
88
- 0 , 2 + random (0 , 2 ), 0
89
- );
90
- if (nameWidget .isPresent () && nameWidget .get ().interact ()) {
91
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 4 , 1200 );
92
- }
93
- } else if (checkNameWidget .isVisible (getWidgets ())) {
94
- if (getKeyboard ().typeString (generateRandomString (4 ))) {
95
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 2 , 1200 );
96
- }
97
- } else if (nameLookupWidget .interact (getWidgets (), "Look up name" )) {
98
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 1 , 1200 );
99
- }
100
- break ;
101
- case 4 :
102
- if (setNameWidget .isVisible (getWidgets ())) {
103
- if (setNameWidget .interact (getWidgets ())) {
104
- Sleep .sleepUntil (() -> getConfigs ().get (configID ) == 21 , 2400 );
105
- }
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
87
}
107
- default :
108
- Sleep .sleepUntil (() -> getConfigs ().get (1042 ) != configValue , 1200 );
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 );
109
100
}
110
101
}
111
102
@@ -119,20 +110,15 @@ private String generateRandomString(int maxLength) {
119
110
}
120
111
121
112
private boolean isCreationScreenVisible () {
122
- return creationScreenWidget .isVisible (getWidgets ());
113
+ return creationScreenWidget .get (getWidgets ()). filter ( RS2Widget :: isVisible ). isPresent ( );
123
114
}
124
115
125
116
private void createRandomCharacter () throws InterruptedException {
126
- // letting all the widgets show up
127
- sleep (2000 );
128
-
129
117
if (new Random ().nextInt (2 ) == 1 ) {
130
118
getWidgets ().getWidgetContainingText ("Female" ).interact ();
131
119
}
132
120
133
- int rootID = creationScreenWidget .get (getWidgets ()).get ().getRootId ();
134
-
135
- final RS2Widget [] childWidgets = getWidgets ().getWidgets (rootID );
121
+ final RS2Widget [] childWidgets = getWidgets ().getWidgets (creationScreenWidget .get (getWidgets ()).get ().getRootId ());
136
122
Collections .shuffle (Arrays .asList (childWidgets ));
137
123
138
124
for (final RS2Widget childWidget : childWidgets ) {
@@ -154,7 +140,7 @@ private void clickRandomTimes(final RS2Widget widget) throws InterruptedExceptio
154
140
155
141
for (int i = 0 ; i < clickCount ; i ++) {
156
142
if (widget .interact ()) {
157
- sleep (150 );
143
+ MethodProvider . sleep (150 );
158
144
}
159
145
}
160
146
}
@@ -176,4 +162,4 @@ private boolean toggleShiftDrop() {
176
162
execute (toggleShiftDrop );
177
163
return toggleShiftDrop .hasFinished ();
178
164
}
179
- }
165
+ }
0 commit comments