15 * along with this program; if not, write to the Free Software |
15 * along with this program; if not, write to the Free Software |
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
17 */ |
17 */ |
18 |
18 |
19 #include "campaign.h" |
19 #include "campaign.h" |
|
20 #include "hwconsts.h" |
|
21 #include "DataManager.h" |
|
22 #include <QSettings> |
|
23 #include <QObject> |
|
24 #include <QLocale> |
20 |
25 |
21 #include "hwconsts.h" |
26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
|
27 { |
|
28 QList<MissionInfo> missionInfoList; |
|
29 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
30 teamfile.setIniCodec("UTF-8"); |
|
31 |
|
32 // if entry not found check if there is written without _ |
|
33 // if then is found rename it to use _ |
|
34 QString spaceCampName = campaignName; |
|
35 spaceCampName = spaceCampName.replace(QString("_"),QString(" ")); |
|
36 if (!teamfile.childGroups().contains("Campaign " + campaignName) and |
|
37 teamfile.childGroups().contains("Campaign " + spaceCampName)){ |
|
38 teamfile.beginGroup("Campaign " + spaceCampName); |
|
39 QStringList keys = teamfile.childKeys(); |
|
40 teamfile.endGroup(); |
|
41 for (int i=0;i<keys.size();i++) { |
|
42 QVariant value = teamfile.value("Campaign " + spaceCampName + "/" + keys[i]); |
|
43 teamfile.setValue("Campaign " + campaignName + "/" + keys[i], value); |
|
44 } |
|
45 teamfile.remove("Campaign " + spaceCampName); |
|
46 } |
|
47 |
|
48 int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
|
49 int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
|
50 |
|
51 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
|
52 campfile.setIniCodec("UTF-8"); |
|
53 |
|
54 DataManager & dataMgr = DataManager::instance(); |
|
55 // get locale |
|
56 QSettings settings(dataMgr.settingsFileName(), |
|
57 QSettings::IniFormat); |
|
58 QString loc = settings.value("misc/locale", "").toString(); |
|
59 if (loc.isEmpty()) |
|
60 loc = QLocale::system().name(); |
|
61 QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); |
|
62 // if file is non-existant try with language only |
|
63 if (!QFile::exists(campaignDescFile)) |
|
64 campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); |
22 |
65 |
23 #include <QSettings> |
66 // fallback if file for current locale is non-existant |
|
67 if (!QFile::exists(campaignDescFile)) |
|
68 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
24 |
69 |
25 |
70 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
26 QStringList getCampMissionList(QString & campaign) |
71 m_info.setIniCodec("UTF-8"); |
27 { |
72 |
28 QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0); |
73 if(progress>=0 and unlockedMissions==0) |
29 campfile.setIniCodec("UTF-8"); |
|
30 unsigned int mNum = campfile.value("MissionNum", 0).toInt(); |
|
31 |
|
32 QStringList missionList; |
|
33 for (unsigned int i = 0; i < mNum; i++) |
|
34 { |
74 { |
35 missionList += campfile.value(QString("Mission %1/Name").arg(i + 1)).toString(); |
75 for(unsigned int i=progress+1;i>0;i--) |
36 } |
76 { |
37 return missionList; |
77 MissionInfo missionInfo; |
|
78 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
|
79 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
|
80 missionInfo.script = script; |
|
81 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
|
82 QObject::tr("No description available")).toString(); |
|
83 QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
|
84 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
|
85 if (!QFile::exists(missionInfo.image)) |
|
86 missionInfo.image = ":/res/CampaignDefault.png"; |
|
87 missionInfoList.append(missionInfo); |
|
88 } |
|
89 } |
|
90 else if(unlockedMissions>0) |
|
91 { |
|
92 for(int i=1;i<=unlockedMissions;i++) |
|
93 { |
|
94 QString missionNum = QString("%1").arg(i); |
|
95 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
|
96 MissionInfo missionInfo; |
|
97 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
|
98 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
|
99 missionInfo.script = script; |
|
100 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
|
101 QObject::tr("No description available")).toString(); |
|
102 QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
|
103 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
|
104 if (!QFile::exists(missionInfo.image)) |
|
105 missionInfo.image = ":/res/CampaignDefault.png"; |
|
106 missionInfoList.append(missionInfo); |
|
107 } |
|
108 } |
|
109 return missionInfoList; |
38 } |
110 } |
39 |
|
40 unsigned int getCampProgress(QString & teamName, QString & campName) |
|
41 { |
|
42 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
|
43 teamfile.setIniCodec("UTF-8"); |
|
44 return teamfile.value("Campaign " + campName + "/Progress", 0).toInt(); |
|
45 } |
|
46 |
|
47 QString getCampaignScript(QString campaign, unsigned int mNum) |
|
48 { |
|
49 QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0); |
|
50 campfile.setIniCodec("UTF-8"); |
|
51 return campfile.value(QString("Mission %1/Script").arg(mNum)).toString(); |
|
52 } |
|
53 |
|
54 QString getCampaignImage(QString campaign, unsigned int mNum) |
|
55 { |
|
56 return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(".png")); |
|
57 } |
|
58 |
|
59 QString getCampaignMissionName(QString campaign, unsigned int mNum) |
|
60 { |
|
61 return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString("")); |
|
62 } |
|
63 |
|