@@ -22,7 +22,7 @@ func (gm *GameManager) ExitGame() error {
22
22
hid .PressKey ("esc" )
23
23
hid .Click (hid .LeftButton , hid .GameAreaSizeX / 2 , int (float64 (hid .GameAreaSizeY )/ 2.2 ))
24
24
25
- for i := 0 ; i < 5 ; i ++ {
25
+ for range 5 {
26
26
if ! gm .gr .InGame () {
27
27
return nil
28
28
}
@@ -31,11 +31,11 @@ func (gm *GameManager) ExitGame() error {
31
31
32
32
// If we are still in game, probably character is dead, so let's do it nicely.
33
33
// Probably closing the socket is more reliable, but was not working properly for me on singleplayer.
34
- for i := 0 ; i < 10 ; i ++ {
34
+ for range 10 {
35
35
if gm .gr .GetData (false ).OpenMenus .QuitMenu {
36
36
hid .Click (hid .LeftButton , hid .GameAreaSizeX / 2 , int (float64 (hid .GameAreaSizeY )/ 2.2 ))
37
37
38
- for i := 0 ; i < 5 ; i ++ {
38
+ for range 5 {
39
39
if ! gm .gr .InGame () {
40
40
return nil
41
41
}
@@ -54,7 +54,7 @@ func (gm *GameManager) NewGame() error {
54
54
return errors .New ("character still in a game" )
55
55
}
56
56
57
- for i := 0 ; i < 30 ; i ++ {
57
+ for range 30 {
58
58
gm .gr .InGame ()
59
59
if gm .gr .InCharacterSelectionScreen () {
60
60
Sleep (2000 ) // Wait for character selection screen to load
@@ -77,7 +77,7 @@ func (gm *GameManager) NewGame() error {
77
77
Sleep (250 )
78
78
hid .Click (hid .LeftButton , createX , createY )
79
79
80
- for i := 0 ; i < 30 ; i ++ {
80
+ for range 30 {
81
81
if gm .gr .InGame () {
82
82
return nil
83
83
}
@@ -87,6 +87,12 @@ func (gm *GameManager) NewGame() error {
87
87
return errors .New ("error creating game! Timeout" )
88
88
}
89
89
90
+ func (gm * GameManager ) clearGameNameOrPasswordField () {
91
+ for range 16 {
92
+ hid .PressKey ("backspace" )
93
+ }
94
+ }
95
+
90
96
func (gm * GameManager ) CreateOnlineGame (gameCounter int ) (string , error ) {
91
97
// Enter bnet lobby
92
98
hid .Click (hid .LeftButton , 744 , 650 )
@@ -97,21 +103,26 @@ func (gm *GameManager) CreateOnlineGame(gameCounter int) (string, error) {
97
103
Sleep (200 )
98
104
99
105
// Click the game name textbox, delete text and type new game name
100
- hid .Click (hid .LeftButton , 925 , 116 )
101
- hid . PressKeyCombination ( "lctrl" , "a" )
106
+ hid .Click (hid .LeftButton , 1000 , 116 )
107
+ gm . clearGameNameOrPasswordField ( )
102
108
gameName := config .Config .Companion .GameNameTemplate + fmt .Sprintf ("%d" , gameCounter )
103
109
for _ , ch := range gameName {
104
110
hid .PressKey (fmt .Sprintf ("%c" , ch ))
105
111
}
106
112
107
113
// Same for password
108
- hid .Click (hid .LeftButton , 925 , 161 )
114
+ hid .Click (hid .LeftButton , 1000 , 161 )
109
115
Sleep (200 )
110
- hid .PressKeyCombination ("lctrl" , "a" )
111
- hid .PressKey ("x" )
116
+ gamePassword := config .Config .Companion .GamePassword
117
+ if gamePassword != "" {
118
+ gm .clearGameNameOrPasswordField ()
119
+ for _ , ch := range gamePassword {
120
+ hid .PressKey (fmt .Sprintf ("%c" , ch ))
121
+ }
122
+ }
112
123
hid .PressKey ("enter" )
113
124
114
- for i := 0 ; i < 30 ; i ++ {
125
+ for range 30 {
115
126
if gm .gr .InGame () {
116
127
return gameName , nil
117
128
}
@@ -131,25 +142,25 @@ func (gm *GameManager) JoinOnlineGame(gameName, password string) error {
131
142
Sleep (200 )
132
143
133
144
// Click the game name textbox, delete text and type new game name
134
- hid .Click (hid .LeftButton , 836 , 100 )
145
+ hid .Click (hid .LeftButton , 950 , 100 )
135
146
Sleep (200 )
136
- hid . PressKeyCombination ( "lctrl" , "a" )
147
+ gm . clearGameNameOrPasswordField ( )
137
148
Sleep (200 )
138
149
for _ , ch := range gameName {
139
150
hid .PressKey (fmt .Sprintf ("%c" , ch ))
140
151
}
141
152
142
153
// Same for password
143
- hid .Click (hid .LeftButton , 1020 , 100 )
154
+ hid .Click (hid .LeftButton , 1130 , 100 )
144
155
Sleep (200 )
145
- hid . PressKeyCombination ( "lctrl" , "a" )
156
+ gm . clearGameNameOrPasswordField ( )
146
157
Sleep (200 )
147
158
for _ , ch := range password {
148
159
hid .PressKey (fmt .Sprintf ("%c" , ch ))
149
160
}
150
161
hid .PressKey ("enter" )
151
162
152
- for i := 0 ; i < 30 ; i ++ {
163
+ for range 30 {
153
164
if gm .gr .InGame () {
154
165
return nil
155
166
}
0 commit comments