18 |
18 |
19 #include "campaign.h" |
19 #include "campaign.h" |
20 #include "hwconsts.h" |
20 #include "hwconsts.h" |
21 #include "DataManager.h" |
21 #include "DataManager.h" |
22 #include <QSettings> |
22 #include <QSettings> |
23 #include <QMap> |
|
24 #include <QDebug> |
|
25 #include <QObject> |
23 #include <QObject> |
|
24 #include <QLocale> |
26 |
25 |
27 QStringList getCampMissionList(QString & campaign) |
26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
28 { |
|
29 QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0); |
|
30 campfile.setIniCodec("UTF-8"); |
|
31 unsigned int mNum = campfile.value("MissionNum", 0).toInt(); |
|
32 |
|
33 QStringList missionList; |
|
34 for (unsigned int i = 0; i < mNum; i++) |
|
35 { |
|
36 missionList += campfile.value(QString("Mission %1/Name").arg(i + 1)).toString(); |
|
37 } |
|
38 return missionList; |
|
39 } |
|
40 |
|
41 // works ok |
|
42 QStringList getCampMissionList2(QString & campaignName, QString & teamName) |
|
43 { |
|
44 QStringList missionList; |
|
45 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
46 teamfile.setIniCodec("UTF-8"); |
|
47 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
|
48 qDebug("HERE is progress : %d",progress); |
|
49 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
|
50 qDebug("HERE is unlocked missions : %d",unlockedMissions); |
|
51 |
|
52 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
|
53 campfile.setIniCodec("UTF-8"); |
|
54 unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt(); |
|
55 qDebug("HERE is number of missions : %d",missionsNumber); |
|
56 |
|
57 if(progress>=0 and unlockedMissions==0) |
|
58 { |
|
59 for(unsigned int i=progress+1;i>0;i--) |
|
60 { |
|
61 missionList += campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
|
62 } |
|
63 } |
|
64 else if(unlockedMissions>0) |
|
65 { |
|
66 qDebug("IN HERE !!!"); |
|
67 for(unsigned int i=1;i<=unlockedMissions;i++) |
|
68 { |
|
69 QString missionNum = QString("%1").arg(i); |
|
70 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
|
71 qDebug("Campaign %s Mission %d",campaignName.toUtf8().constData(),i); |
|
72 qDebug("MISSION NUMBER : %d",missionNumber); |
|
73 missionList += campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
|
74 qDebug(campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString().toUtf8().constData()); |
|
75 } |
|
76 } |
|
77 return missionList; |
|
78 } |
|
79 |
|
80 QList<MissionInfo> getCampMissionList3(QString & campaignName, QString & teamName) |
|
81 { |
27 { |
82 // TODO: add default image if there isn't an available one |
28 // TODO: add default image if there isn't an available one |
83 QList<MissionInfo> missionInfoList; |
29 QList<MissionInfo> missionInfoList; |
84 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
30 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
85 teamfile.setIniCodec("UTF-8"); |
31 teamfile.setIniCodec("UTF-8"); |
86 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
32 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
87 qDebug("HERE is progress : %d",progress); |
|
88 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
33 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
89 qDebug("HERE is unlocked missions : %d",unlockedMissions); |
|
90 |
34 |
91 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
35 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
92 campfile.setIniCodec("UTF-8"); |
36 campfile.setIniCodec("UTF-8"); |
93 unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt(); |
|
94 qDebug("HERE is number of missions : %d",missionsNumber); |
|
95 |
37 |
96 DataManager & dataMgr = DataManager::instance(); |
38 DataManager & dataMgr = DataManager::instance(); |
97 // get locale |
39 // get locale |
98 QSettings settings(dataMgr.settingsFileName(), |
40 QSettings settings(dataMgr.settingsFileName(), |
99 QSettings::IniFormat); |
41 QSettings::IniFormat); |
116 { |
58 { |
117 for(unsigned int i=progress+1;i>0;i--) |
59 for(unsigned int i=progress+1;i>0;i--) |
118 { |
60 { |
119 MissionInfo missionInfo; |
61 MissionInfo missionInfo; |
120 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
62 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
121 missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc", |
63 missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
|
64 missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc", |
122 QObject::tr("No description available")).toString(); |
65 QObject::tr("No description available")).toString(); |
123 missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
|
124 missionInfo.image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
66 missionInfo.image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
125 missionInfoList.append(missionInfo); |
67 missionInfoList.append(missionInfo); |
126 } |
68 } |
127 } |
69 } |
128 else if(unlockedMissions>0) |
70 else if(unlockedMissions>0) |
129 { |
71 { |
130 qDebug("IN HERE !!!"); |
|
131 for(unsigned int i=1;i<=unlockedMissions;i++) |
72 for(unsigned int i=1;i<=unlockedMissions;i++) |
132 { |
73 { |
133 QString missionNum = QString("%1").arg(i); |
74 QString missionNum = QString("%1").arg(i); |
134 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
75 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
135 MissionInfo missionInfo; |
76 MissionInfo missionInfo; |
136 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
77 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
137 missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc", |
78 missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
|
79 missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc", |
138 QObject::tr("No description available")).toString(); |
80 QObject::tr("No description available")).toString(); |
139 missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
|
140 missionInfo.image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
81 missionInfo.image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
141 missionInfoList.append(missionInfo); |
82 missionInfoList.append(missionInfo); |
142 } |
83 } |
143 } |
84 } |
144 return missionInfoList; |
85 return missionInfoList; |
145 } |
86 } |
146 |
|
147 QStringList getDescriptions(QString & campaignName, QString & teamName) |
|
148 { |
|
149 QStringList descriptionList; |
|
150 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
151 teamfile.setIniCodec("UTF-8"); |
|
152 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
|
153 qDebug("HERE is progress : %d",progress); |
|
154 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
|
155 qDebug("HERE is unlocked missions : %d",unlockedMissions); |
|
156 |
|
157 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
|
158 campfile.setIniCodec("UTF-8"); |
|
159 unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt(); |
|
160 qDebug("HERE is number of missions : %d",missionsNumber); |
|
161 |
|
162 |
|
163 DataManager & dataMgr = DataManager::instance(); |
|
164 // get locale |
|
165 QSettings settings(dataMgr.settingsFileName(), |
|
166 QSettings::IniFormat); |
|
167 QString loc = settings.value("misc/locale", "").toString(); |
|
168 if (loc.isEmpty()) |
|
169 loc = QLocale::system().name(); |
|
170 QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); |
|
171 // if file is non-existant try with language only |
|
172 if (!QFile::exists(campaignDescFile)) |
|
173 campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); |
|
174 |
|
175 // fallback if file for current locale is non-existant |
|
176 if (!QFile::exists(campaignDescFile)) |
|
177 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
|
178 |
|
179 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
|
180 m_info.setIniCodec("UTF-8"); |
|
181 |
|
182 if(progress>=0 and unlockedMissions==0) |
|
183 { |
|
184 for(unsigned int i=progress+1;i>0;i--) |
|
185 { |
|
186 //update descruiptions here |
|
187 descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc", |
|
188 QObject::tr("No description available")).toString(); |
|
189 } |
|
190 } |
|
191 else if(unlockedMissions>0) |
|
192 { |
|
193 qDebug("IN HERE !!!"); |
|
194 for(unsigned int i=1;i<=unlockedMissions;i++) |
|
195 { |
|
196 QString missionNum = QString("%1").arg(i); |
|
197 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
|
198 descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc", |
|
199 QObject::tr("No description available")).toString(); |
|
200 } |
|
201 } |
|
202 return descriptionList; |
|
203 } |
|
204 |
|
205 QStringList getImages(QString & campaignName, QString & teamName) |
|
206 { |
|
207 QStringList imageList; |
|
208 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
209 teamfile.setIniCodec("UTF-8"); |
|
210 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
|
211 qDebug("HERE is progress : %d",progress); |
|
212 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
|
213 qDebug("HERE is unlocked missions : %d",unlockedMissions); |
|
214 |
|
215 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
|
216 campfile.setIniCodec("UTF-8"); |
|
217 unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt(); |
|
218 qDebug("HERE is number of missions : %d",missionsNumber); |
|
219 |
|
220 |
|
221 DataManager & dataMgr = DataManager::instance(); |
|
222 // get locale |
|
223 QSettings settings(dataMgr.settingsFileName(), |
|
224 QSettings::IniFormat); |
|
225 QString loc = settings.value("misc/locale", "").toString(); |
|
226 if (loc.isEmpty()) |
|
227 loc = QLocale::system().name(); |
|
228 QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); |
|
229 // if file is non-existant try with language only |
|
230 if (!QFile::exists(campaignDescFile)) |
|
231 campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); |
|
232 |
|
233 // fallback if file for current locale is non-existant |
|
234 if (!QFile::exists(campaignDescFile)) |
|
235 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
|
236 |
|
237 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
|
238 m_info.setIniCodec("UTF-8"); |
|
239 |
|
240 if(progress>=0 and unlockedMissions==0) |
|
241 { |
|
242 for(unsigned int i=progress+1;i>0;i--) |
|
243 { |
|
244 //update descruiptions here |
|
245 imageList += campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
|
246 } |
|
247 } |
|
248 else if(unlockedMissions>0) |
|
249 { |
|
250 qDebug("IN HERE !!!"); |
|
251 for(unsigned int i=1;i<=unlockedMissions;i++) |
|
252 { |
|
253 QString missionNum = QString("%1").arg(i); |
|
254 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
|
255 imageList += campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
|
256 } |
|
257 } |
|
258 return imageList; |
|
259 } |
|
260 |
|
261 unsigned int getCampProgress(QString & teamName, QString & campName) |
|
262 { |
|
263 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
264 teamfile.setIniCodec("UTF-8"); |
|
265 return teamfile.value("Campaign " + campName + "/Progress", 0).toInt(); |
|
266 } |
|
267 |
|
268 QMap<QString,QString> getUnlockedMissions2(QString & campaignName, QString & teamName) |
|
269 { |
|
270 QMap<QString,QString> hash; |
|
271 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
272 teamfile.setIniCodec("UTF-8"); |
|
273 unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
|
274 qDebug("HERE is progress : %d",progress); |
|
275 unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
|
276 qDebug("HERE is unlocked missions : %d",unlockedMissions); |
|
277 |
|
278 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
|
279 campfile.setIniCodec("UTF-8"); |
|
280 unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt(); |
|
281 qDebug("HERE is number of missions : %d",missionsNumber); |
|
282 |
|
283 if(progress>=0 and unlockedMissions==0) |
|
284 { |
|
285 for(unsigned int i=1;i<=progress+1;i++) |
|
286 { |
|
287 hash[getCampaignScript(campaignName,i)] = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
|
288 } |
|
289 } |
|
290 else if(unlockedMissions>0) |
|
291 { |
|
292 for(unsigned int i=1;i<=unlockedMissions;i++) |
|
293 { |
|
294 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+i, -1).toInt(); |
|
295 hash[getCampaignScript(campaignName,missionNumber)] = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
|
296 } |
|
297 } |
|
298 return hash; |
|
299 } |
|
300 |
|
301 QStringList getUnlockedMissions(QString & teamName, QString & campName) |
|
302 { |
|
303 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
304 teamfile.setIniCodec("UTF-8"); |
|
305 unsigned int mNum = teamfile.value("UnlockedMissions", 0).toInt(); |
|
306 |
|
307 QStringList missionList; |
|
308 for (unsigned int i = 0; i < mNum; i++) |
|
309 { |
|
310 missionList += teamfile.value(QString("Mission%1").arg(i + 1)).toString(); |
|
311 } |
|
312 return missionList; |
|
313 } |
|
314 |
|
315 QString getCampaignScript(QString campaign, unsigned int mNum) |
|
316 { |
|
317 QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0); |
|
318 campfile.setIniCodec("UTF-8"); |
|
319 return campfile.value(QString("Mission %1/Script").arg(mNum)).toString(); |
|
320 } |
|
321 |
|
322 QString getCampaignImage(QString campaign, unsigned int mNum) |
|
323 { |
|
324 return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(".png")); |
|
325 } |
|
326 |
|
327 QString getCampaignMissionName(QString campaign, unsigned int mNum) |
|
328 { |
|
329 return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString("")); |
|
330 } |
|
331 |
|