24 #include <QLocale> |
24 #include <QLocale> |
25 |
25 |
26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
27 { |
27 { |
28 QList<MissionInfo> missionInfoList; |
28 QList<MissionInfo> missionInfoList; |
29 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
29 QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); |
30 teamfile.setIniCodec("UTF-8"); |
30 teamfile.setIniCodec("UTF-8"); |
31 |
31 |
32 // if entry not found check if there is written without _ |
32 // if entry not found check if there is written without _ |
33 // if then is found rename it to use _ |
33 // if then is found rename it to use _ |
34 QString spaceCampName = campaignName; |
34 QString spaceCampName = campaignName; |
35 spaceCampName = spaceCampName.replace(QString("_"),QString(" ")); |
35 spaceCampName = spaceCampName.replace(QString("_"),QString(" ")); |
36 if (!teamfile.childGroups().contains("Campaign " + campaignName) and |
36 if (!teamfile.childGroups().contains("Campaign " + campaignName) and |
37 teamfile.childGroups().contains("Campaign " + spaceCampName)){ |
37 teamfile.childGroups().contains("Campaign " + spaceCampName)){ |
38 teamfile.beginGroup("Campaign " + spaceCampName); |
38 teamfile.beginGroup("Campaign " + spaceCampName); |
39 QStringList keys = teamfile.childKeys(); |
39 QStringList keys = teamfile.childKeys(); |
40 teamfile.endGroup(); |
40 teamfile.endGroup(); |
41 for (int i=0;i<keys.size();i++) { |
41 for (int i=0;i<keys.size();i++) { |
42 QVariant value = teamfile.value("Campaign " + spaceCampName + "/" + keys[i]); |
42 QVariant value = teamfile.value("Campaign " + spaceCampName + "/" + keys[i]); |
43 teamfile.setValue("Campaign " + campaignName + "/" + keys[i], value); |
43 teamfile.setValue("Campaign " + campaignName + "/" + keys[i], value); |
44 } |
44 } |
45 teamfile.remove("Campaign " + spaceCampName); |
45 teamfile.remove("Campaign " + spaceCampName); |
46 } |
46 } |
47 |
47 |
48 int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
48 int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
49 int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
49 int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
50 |
50 |
51 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
51 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
52 campfile.setIniCodec("UTF-8"); |
52 campfile.setIniCodec("UTF-8"); |
53 |
53 |
54 DataManager & dataMgr = DataManager::instance(); |
54 DataManager & dataMgr = DataManager::instance(); |
55 // get locale |
55 // get locale |
56 QSettings settings(dataMgr.settingsFileName(), |
56 QSettings settings(dataMgr.settingsFileName(), |
57 QSettings::IniFormat); |
57 QSettings::IniFormat); |
58 QString loc = settings.value("misc/locale", "").toString(); |
58 QString loc = settings.value("misc/locale", "").toString(); |
67 if (!QFile::exists(campaignDescFile)) |
67 if (!QFile::exists(campaignDescFile)) |
68 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
68 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
69 |
69 |
70 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
70 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
71 m_info.setIniCodec("UTF-8"); |
71 m_info.setIniCodec("UTF-8"); |
72 |
72 |
73 if(progress>=0 and unlockedMissions==0) |
73 if(progress>=0 and unlockedMissions==0) |
74 { |
74 { |
75 for(unsigned int i=progress+1;i>0;i--) |
75 for(unsigned int i=progress+1;i>0;i--) |
76 { |
76 { |
77 MissionInfo missionInfo; |
77 MissionInfo missionInfo; |
78 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
78 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
79 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
79 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
80 missionInfo.script = script; |
80 missionInfo.script = script; |
81 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
81 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
82 QObject::tr("No description available")).toString(); |
82 QObject::tr("No description available")).toString(); |
83 QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
83 QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
84 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
84 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
85 if (!QFile::exists(missionInfo.image)) |
85 if (!QFile::exists(missionInfo.image)) |
86 missionInfo.image = ":/res/CampaignDefault.png"; |
86 missionInfo.image = ":/res/CampaignDefault.png"; |
87 missionInfoList.append(missionInfo); |
87 missionInfoList.append(missionInfo); |
88 } |
88 } |
89 } |
89 } |
90 else if(unlockedMissions>0) |
90 else if(unlockedMissions>0) |
91 { |
91 { |
92 for(int i=1;i<=unlockedMissions;i++) |
92 for(int i=1;i<=unlockedMissions;i++) |
93 { |
93 { |
94 QString missionNum = QString("%1").arg(i); |
94 QString missionNum = QString("%1").arg(i); |
95 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
95 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
96 MissionInfo missionInfo; |
96 MissionInfo missionInfo; |
97 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
97 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
98 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
98 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
99 missionInfo.script = script; |
99 missionInfo.script = script; |
100 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
100 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
101 QObject::tr("No description available")).toString(); |
101 QObject::tr("No description available")).toString(); |
102 QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
102 QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
103 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
103 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
104 if (!QFile::exists(missionInfo.image)) |
104 if (!QFile::exists(missionInfo.image)) |
105 missionInfo.image = ":/res/CampaignDefault.png"; |
105 missionInfo.image = ":/res/CampaignDefault.png"; |
106 missionInfoList.append(missionInfo); |
106 missionInfoList.append(missionInfo); |
107 } |
107 } |
108 } |
108 } |
109 return missionInfoList; |
109 return missionInfoList; |
110 } |
110 } |