192 case 3: |
193 case 3: |
193 subFolder = "Scenario"; |
194 subFolder = "Scenario"; |
194 m_widget = lstScenarios; |
195 m_widget = lstScenarios; |
195 break; |
196 break; |
196 } |
197 } |
|
198 // scripts to load |
|
199 // first, load scripts in order specified in order.cfg (if present) |
|
200 QFile orderFile(QString("physfs://Missions/%1/order.cfg").arg(subFolder)); |
|
201 QStringList orderedMissions; |
|
202 if (orderFile.open(QFile::ReadOnly)) |
|
203 { |
|
204 QString m_id; |
|
205 QTextStream input(&orderFile); |
|
206 while(true) |
|
207 { |
|
208 m_id = input.readLine(); |
|
209 if(m_id.isNull() || m_id.isEmpty()) |
|
210 { |
|
211 break; |
|
212 } |
|
213 QListWidgetItem * item = new QListWidgetItem(m_id); |
|
214 QString name = item->text().replace("_", " "); |
|
215 name = m_info->value(m_id + ".name", name).toString(); |
|
216 item->setText(name); |
|
217 item->setData(Qt::UserRole, m_id); |
|
218 m_widget->addItem(item); |
|
219 |
|
220 orderedMissions << m_id; |
|
221 } |
|
222 } |
|
223 |
|
224 // then, just load anything else in no particular order |
197 m_list = dataMgr.entryList( |
225 m_list = dataMgr.entryList( |
198 "Missions/" + subFolder, |
226 "Missions/" + subFolder, |
199 QDir::Files, QStringList("*.lua")). |
227 QDir::Files, QStringList("*.lua")). |
200 replaceInStrings(QRegExp("\\.lua$"), ""); |
228 replaceInStrings(QRegExp("\\.lua$"), ""); |
201 |
229 |
202 // scripts to load - TODO: model? |
|
203 foreach (const QString & m_id, m_list) |
230 foreach (const QString & m_id, m_list) |
204 { |
231 { |
|
232 // Disallow duplicates from order.cfg |
|
233 if (orderedMissions.contains(m_id)) |
|
234 { |
|
235 continue; |
|
236 } |
|
237 |
205 QListWidgetItem * item = new QListWidgetItem(m_id); |
238 QListWidgetItem * item = new QListWidgetItem(m_id); |
206 |
239 |
207 // fallback name: replace underscores in mission name with spaces |
240 // fallback name: replace underscores in mission name with spaces |
208 QString name = item->text().replace("_", " "); |
241 QString name = item->text().replace("_", " "); |
209 |
242 |