11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. |
12 * GNU General Public License for more details. |
13 * |
13 * |
14 * You should have received a copy of the GNU General Public License |
14 * You should have received a copy of the GNU General Public License |
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
17 */ |
17 */ |
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" |
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 |
|
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 |
31 int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
48 int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); |
32 int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
49 int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
33 |
50 |
34 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
51 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
35 campfile.setIniCodec("UTF-8"); |
52 campfile.setIniCodec("UTF-8"); |
36 |
53 |
37 DataManager & dataMgr = DataManager::instance(); |
54 DataManager & dataMgr = DataManager::instance(); |
38 // get locale |
55 // get locale |
39 QSettings settings(dataMgr.settingsFileName(), |
56 QSettings settings(dataMgr.settingsFileName(), |
40 QSettings::IniFormat); |
57 QSettings::IniFormat); |
41 QString loc = settings.value("misc/locale", "").toString(); |
58 QString loc = settings.value("misc/locale", "").toString(); |
50 if (!QFile::exists(campaignDescFile)) |
67 if (!QFile::exists(campaignDescFile)) |
51 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
68 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
52 |
69 |
53 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
70 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
54 m_info.setIniCodec("UTF-8"); |
71 m_info.setIniCodec("UTF-8"); |
55 |
72 |
56 if(progress>=0 and unlockedMissions==0) |
73 if(progress>=0 and unlockedMissions==0) |
57 { |
74 { |
58 for(unsigned int i=progress+1;i>0;i--) |
75 for(unsigned int i=progress+1;i>0;i--) |
59 { |
76 { |
60 MissionInfo missionInfo; |
77 MissionInfo missionInfo; |
61 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
78 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
62 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
79 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
63 missionInfo.script = script; |
80 missionInfo.script = script; |
64 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", |
65 QObject::tr("No description available")).toString(); |
82 QObject::tr("No description available")).toString(); |
66 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")); |
67 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
84 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
68 if (!QFile::exists(missionInfo.image)) |
85 if (!QFile::exists(missionInfo.image)) |
69 missionInfo.image = ":/res/CampaignDefault.png"; |
86 missionInfo.image = ":/res/CampaignDefault.png"; |
70 missionInfoList.append(missionInfo); |
87 missionInfoList.append(missionInfo); |
71 } |
88 } |
72 } |
89 } |
73 else if(unlockedMissions>0) |
90 else if(unlockedMissions>0) |
74 { |
91 { |
75 for(int i=1;i<=unlockedMissions;i++) |
92 for(int i=1;i<=unlockedMissions;i++) |
76 { |
93 { |
77 QString missionNum = QString("%1").arg(i); |
94 QString missionNum = QString("%1").arg(i); |
78 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
95 int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
79 MissionInfo missionInfo; |
96 MissionInfo missionInfo; |
80 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
97 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
81 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
98 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
82 missionInfo.script = script; |
99 missionInfo.script = script; |
83 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", |
84 QObject::tr("No description available")).toString(); |
101 QObject::tr("No description available")).toString(); |
85 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")); |
86 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
103 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
87 if (!QFile::exists(missionInfo.image)) |
104 if (!QFile::exists(missionInfo.image)) |
88 missionInfo.image = ":/res/CampaignDefault.png"; |
105 missionInfo.image = ":/res/CampaignDefault.png"; |
89 missionInfoList.append(missionInfo); |
106 missionInfoList.append(missionInfo); |
90 } |
107 } |
91 } |
108 } |
92 return missionInfoList; |
109 return missionInfoList; |
93 } |
110 } |