@@ -51,7 +51,7 @@ maxBtn.addEventListener('click', event => {
51
51
closeBtn . addEventListener ( 'click' , event => remote . getCurrentWindow ( ) . close ( ) ) ;
52
52
53
53
playBtn . addEventListener ( 'click' , event => {
54
- if ( isDisabled ( playBtn ) ) return ;
54
+ if ( playBtn . disabled ) return ;
55
55
fs . writeFileSync ( path . join ( config . folder , "swgemu_login.cfg" ) , `[ClientGame]\r\nloginServerAddress0=${ server . address } \r\nloginServerPort0=${ server . port } ` ) ;
56
56
var args = [ "--" ,
57
57
"-s" , "ClientGame" , "loginServerAddress0=" + server . address , "loginServerPort0=" + server . port ,
@@ -103,37 +103,52 @@ ipc.on('selected-directory', function (event, path) {
103
103
} ) ;
104
104
105
105
installBtn . addEventListener ( 'click' , function ( event ) {
106
- if ( isDisabled ( installBtn ) ) return ;
107
- disable ( installBtn ) ;
106
+ if ( installBtn . disabled = false ) return ;
107
+ installBtn . disabled = true ;
108
108
ipc . send ( 'open-directory-dialog' , 'install-selected' ) ;
109
109
} ) ;
110
110
111
111
ipc . on ( 'install-selected' , function ( event , path ) {
112
- disable ( installBtn ) ;
113
- disable ( fullscanBtn ) ;
114
- disable ( playBtn ) ;
112
+ disableAll ( ) ;
115
113
install . install ( path , config . folder , config . mods ) ;
116
114
} ) ;
117
115
118
116
ipc . on ( 'downloading-update' , function ( event , text ) {
119
117
versionDiv . innerHTML = text ;
120
- disable ( installBtn ) ;
121
- disable ( fullscanBtn ) ;
122
- disable ( playBtn ) ;
118
+ disableAll ( ) ;
123
119
} ) ;
124
120
125
121
ipc . on ( 'download-progress' , function ( event , info ) {
126
122
install . progress ( info . transferred , info . total ) ;
127
123
} )
128
124
125
+ var lastCompleted = 0 ;
126
+ var lastTime = new Date ( ) ;
127
+ var rate = 0 ;
128
+ var units = " B/s" ;
129
129
install . progress = function ( completed , total ) {
130
+ var time = new Date ( ) ;
131
+ var elapsed = ( time - lastTime ) / 1000 ;
132
+ if ( elapsed >= 1 ) {
133
+ var bytes = completed - lastCompleted ;
134
+ units = " B/s" ;
135
+ rate = bytes / elapsed ;
136
+ if ( rate > 1024 ) {
137
+ rate = rate / 1024 ;
138
+ units = " KB/s" ;
139
+ }
140
+ if ( rate > 1024 ) {
141
+ rate = rate / 1024 ;
142
+ units = " MB/s" ;
143
+ }
144
+ lastCompleted = completed ;
145
+ lastTime = time ;
146
+ }
130
147
if ( progressBox . style . display == 'none' ) progressBox . style . display = 'block' ;
131
- progressText . innerHTML = Math . trunc ( completed * 100 / total ) + '%' ;
148
+ progressText . innerHTML = Math . trunc ( completed * 100 / total ) + '% (' + rate . toPrecision ( 3 ) + units + ') ';
132
149
progressBar . style . width = ( completed * 100 / total ) + '%' ;
133
150
if ( completed == total ) {
134
- enable ( playBtn ) ;
135
- enable ( fullscanBtn ) ;
136
- enable ( installBtn ) ;
151
+ enableAll ( ) ;
137
152
progressBox . style . display = 'none' ;
138
153
}
139
154
}
@@ -147,6 +162,7 @@ install.modList = function(mods) {
147
162
checkbox . id = mod . replace ( / [ ^ a - z A - Z ] / g, "" ) ;
148
163
checkbox . checked = config . mods . includes ( mod ) ;
149
164
checkbox . onchange = modListChanged ;
165
+ checkbox . disabled = true ;
150
166
var label = document . createElement ( 'label' ) ;
151
167
label . htmlFor = checkbox . id ;
152
168
label . appendChild ( document . createTextNode ( mod ) ) ;
@@ -163,42 +179,46 @@ function modListChanged() {
163
179
if ( child . children [ 0 ] . checked ) config . mods . push ( child . children [ 0 ] . value ) ;
164
180
}
165
181
saveConfig ( ) ;
166
- disable ( fullscanBtn ) ;
167
- disable ( installBtn ) ;
168
- disable ( playBtn ) ;
182
+ disableAll ( ) ;
169
183
install . install ( config . folder , config . folder , config . mods ) ;
170
184
}
171
185
172
186
fullscanBtn . addEventListener ( 'click' , function ( event ) {
173
- if ( isDisabled ( fullscanBtn ) ) return ;
174
- disable ( fullscanBtn ) ;
175
- disable ( installBtn ) ;
176
- disable ( playBtn ) ;
187
+ if ( fullscanBtn . disabled ) return ;
188
+ disableAll ( ) ;
177
189
install . install ( config . folder , config . folder , config . mods , true ) ;
178
190
} ) ;
179
191
180
192
if ( fs . existsSync ( path . join ( config . folder , 'bottom.tre' ) ) ) {
181
- disable ( fullscanBtn ) ;
182
- disable ( installBtn ) ;
183
- disable ( playBtn ) ;
193
+ disableAll ( ) ;
184
194
install . install ( config . folder , config . folder , config . mods ) ;
185
195
} else {
186
- disable ( playBtn ) ;
187
- disable ( fullscanBtn ) ;
196
+ playBtn . disabled = true ;
197
+ fullscanBtn . disabled = true ;
188
198
install . getManifest ( ) ;
189
199
settings . click ( ) ;
190
200
}
191
201
192
- function isDisabled ( btn ) {
193
- return / d i s a b l e d / . test ( btn . className ) ;
194
- }
195
-
196
- function disable ( btn ) {
197
- if ( ! isDisabled ( btn ) ) btn . className += ' disabled' ;
202
+ function disableAll ( ) {
203
+ folderBox . disabled = true ;
204
+ fullscanBtn . disabled = true ;
205
+ installBtn . disabled = true ;
206
+ playBtn . disabled = true ;
207
+ browseBtn . disabled = true ;
208
+ for ( var child of modListBox . children ) {
209
+ child . children [ 0 ] . disabled = true ;
210
+ }
198
211
}
199
212
200
- function enable ( btn ) {
201
- btn . className = btn . className . replace ( / ? d i s a b l e d ? / , '' ) ;
213
+ function enableAll ( ) {
214
+ folderBox . disabled = false ;
215
+ fullscanBtn . disabled = false ;
216
+ installBtn . disabled = false ;
217
+ playBtn . disabled = false ;
218
+ browseBtn . disabled = false ;
219
+ for ( var child of modListBox . children ) {
220
+ child . children [ 0 ] . disabled = false ;
221
+ }
202
222
}
203
223
204
224
function saveConfig ( ) {
0 commit comments