3 #include <QMessageBox> |
3 #include <QMessageBox> |
4 #include <QProcess> |
4 #include <QProcess> |
5 #include "demo.h" |
5 #include "demo.h" |
6 #include "bytestream.h" |
6 #include "bytestream.h" |
7 #include "misc.h" |
7 #include "misc.h" |
|
8 #include "ui_demoprompt.h" |
8 |
9 |
9 static const uint32 g_demoSignature = makeByteID( 'Z', 'C', 'L', 'D' ); |
10 static const uint32 g_demoSignature = makeByteID( 'Z', 'C', 'L', 'D' ); |
10 |
11 |
11 // ============================================================================= |
12 // ============================================================================= |
12 // ----------------------------------------------------------------------------- |
13 // ----------------------------------------------------------------------------- |
130 s.readString( userinfo.skin ); |
131 s.readString( userinfo.skin ); |
131 s.readLong( userinfo.railcolor ); |
132 s.readLong( userinfo.railcolor ); |
132 s.readByte( userinfo.handicap ); |
133 s.readByte( userinfo.handicap ); |
133 s.readByte( userinfo.unlagged ); |
134 s.readByte( userinfo.unlagged ); |
134 s.readByte( userinfo.respawnOnFire ); |
135 s.readByte( userinfo.respawnOnFire ); |
|
136 s.readByte( userinfo.ticsPerUpdate ); |
135 s.readByte( userinfo.connectionType ); |
137 s.readByte( userinfo.connectionType ); |
136 s.readString( userinfo.className ); |
138 s.readString( userinfo.className ); |
137 } elif( header == DemoWads + offset ) { |
139 } elif( header == DemoWads + offset ) { |
138 s.readShort( numWads ); |
140 s.readShort( numWads ); |
139 |
141 |
171 if( binarypath.isEmpty() ) { |
173 if( binarypath.isEmpty() ) { |
172 error( fmt( tr( "No binary path specified for Zandronum version %1!\n" ), zanversion )); |
174 error( fmt( tr( "No binary path specified for Zandronum version %1!\n" ), zanversion )); |
173 return 7; |
175 return 7; |
174 } |
176 } |
175 |
177 |
176 str iwadpath; |
178 str iwad, iwadpath; |
177 list<str> pwadpaths; |
179 list<str> pwads, pwadpaths; |
178 |
180 |
179 // Find the WADs |
181 // Find the WADs |
180 for( const str& wad : wads ) { |
182 for( const str& wad : wads ) { |
181 str path = findWAD( wad ); |
183 str path = findWAD( wad ); |
182 |
184 |
187 if( path.isEmpty() ) { |
189 if( path.isEmpty() ) { |
188 error( fmt( tr( "Couldn't find %1!\n" ), wad )); |
190 error( fmt( tr( "Couldn't find %1!\n" ), wad )); |
189 return 8; |
191 return 8; |
190 } |
192 } |
191 |
193 |
192 if( &wad == &wads[0] ) |
194 if( &wad == &wads[0] ) { |
193 iwadpath = path; |
195 iwadpath = path; |
194 else |
196 iwad = wad; |
|
197 } else { |
195 pwadpaths << path; |
198 pwadpaths << path; |
|
199 pwads << wad; |
|
200 } |
|
201 } |
|
202 |
|
203 if( !cfg.value( "nodemoprompt", false ).toBool() ) { |
|
204 str pwadtext; |
|
205 for( const str& pwad : pwads ) { |
|
206 if( !pwadtext.isEmpty() ) |
|
207 pwadtext += "<br />"; |
|
208 |
|
209 pwadtext += pwad; |
|
210 } |
|
211 |
|
212 QDialog* dlg = new QDialog; |
|
213 Ui_DemoPrompt ui; |
|
214 ui.setupUi( dlg ); |
|
215 ui.demoNameLabel->setText( basename( path )); |
|
216 ui.demoRecorder->setText( userinfo.netname ); |
|
217 ui.versionLabel->setText( zanversion ); |
|
218 ui.iwadLabel->setText( wads[0] ); |
|
219 ui.pwadsLabel->setText( pwadtext ); |
|
220 |
|
221 if( !dlg->exec() ) |
|
222 return 1; |
196 } |
223 } |
197 |
224 |
198 print( "binary: %1\n", binarypath ); |
225 print( "binary: %1\n", binarypath ); |
199 print( "iwad: %1\npwads: %2\n", iwadpath, pwadpaths ); |
226 print( "iwad: %1\npwads: %2\n", iwadpath, pwadpaths ); |
200 |
227 |
201 QStringList cmdlineList ({ |
228 QStringList cmdlineList ({ |
202 "-iwad", |
229 "-playdemo", path, |
203 iwadpath, |
230 "-iwad", iwadpath, |
204 "-playdemo", |
|
205 path |
|
206 }); |
231 }); |
207 |
232 |
208 if( pwadpaths.size() > 0 ) { |
233 if( pwadpaths.size() > 0 ) { |
209 cmdlineList << "-file"; |
234 cmdlineList << "-file"; |
210 cmdlineList << pwadpaths; |
235 cmdlineList << pwadpaths; |