80 QSettings* teamfile = getCampTeamFile(campaignName, teamName); |
80 QSettings* teamfile = getCampTeamFile(campaignName, teamName); |
81 bool won = teamfile->value("Campaign " + campaignName + "/Won", false).toBool(); |
81 bool won = teamfile->value("Campaign " + campaignName + "/Won", false).toBool(); |
82 return won; |
82 return won; |
83 } |
83 } |
84 |
84 |
|
85 QSettings* getCampMetaInfo() |
|
86 { |
|
87 DataManager & dataMgr = DataManager::instance(); |
|
88 // get locale |
|
89 QSettings settings(dataMgr.settingsFileName(), |
|
90 QSettings::IniFormat); |
|
91 QString loc = settings.value("misc/locale", "").toString(); |
|
92 if (loc.isEmpty()) |
|
93 loc = QLocale::system().name(); |
|
94 QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); |
|
95 // if file is non-existant try with language only |
|
96 if (!QFile::exists(campaignDescFile)) |
|
97 campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); |
|
98 |
|
99 // fallback if file for current locale is non-existant |
|
100 if (!QFile::exists(campaignDescFile)) |
|
101 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
|
102 |
|
103 QSettings* m_info = new QSettings(campaignDescFile, QSettings::IniFormat, 0); |
|
104 m_info->setIniCodec("UTF-8"); |
|
105 |
|
106 return m_info; |
|
107 } |
|
108 |
|
109 /** Returns the localized campaign name */ |
|
110 QString getRealCampName(QString & campaignName) |
|
111 { |
|
112 QSettings* m_info = getCampMetaInfo(); |
|
113 if(m_info->contains(campaignName+".name")) |
|
114 return m_info->value(campaignName+".name").toString(); |
|
115 else |
|
116 return campaignName.replace(QString("_"), QString(" ")); |
|
117 } |
|
118 |
85 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
119 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName) |
86 { |
120 { |
87 QList<MissionInfo> missionInfoList; |
121 QList<MissionInfo> missionInfoList; |
88 QSettings* teamfile = getCampTeamFile(campaignName, teamName); |
122 QSettings* teamfile = getCampTeamFile(campaignName, teamName); |
89 |
123 |
91 int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
125 int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); |
92 |
126 |
93 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
127 QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); |
94 campfile.setIniCodec("UTF-8"); |
128 campfile.setIniCodec("UTF-8"); |
95 |
129 |
96 DataManager & dataMgr = DataManager::instance(); |
130 QSettings* m_info = getCampMetaInfo(); |
97 // get locale |
|
98 QSettings settings(dataMgr.settingsFileName(), |
|
99 QSettings::IniFormat); |
|
100 QString loc = settings.value("misc/locale", "").toString(); |
|
101 if (loc.isEmpty()) |
|
102 loc = QLocale::system().name(); |
|
103 QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); |
|
104 // if file is non-existant try with language only |
|
105 if (!QFile::exists(campaignDescFile)) |
|
106 campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); |
|
107 |
|
108 // fallback if file for current locale is non-existant |
|
109 if (!QFile::exists(campaignDescFile)) |
|
110 campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); |
|
111 |
|
112 QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); |
|
113 m_info.setIniCodec("UTF-8"); |
|
114 |
131 |
115 if(progress>=0 and unlockedMissions==0) |
132 if(progress>=0 and unlockedMissions==0) |
116 { |
133 { |
117 for(unsigned int i=progress+1;i>0;i--) |
134 for(unsigned int i=progress+1;i>0;i--) |
118 { |
135 { |
119 MissionInfo missionInfo; |
136 MissionInfo missionInfo; |
120 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
137 QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString(); |
121 if(!script.isNull()) { |
138 if(!script.isNull()) { |
122 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
139 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
123 missionInfo.script = script; |
140 missionInfo.script = script; |
124 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
141 missionInfo.description = m_info->value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
125 QObject::tr("No description available")).toString(); |
142 QObject::tr("No description available")).toString(); |
126 QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
143 QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); |
127 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
144 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
128 if (!QFile::exists(missionInfo.image)) |
145 if (!QFile::exists(missionInfo.image)) |
129 missionInfo.image = ":/res/CampaignDefault.png"; |
146 missionInfo.image = ":/res/CampaignDefault.png"; |
139 int missionNumber = teamfile->value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
156 int missionNumber = teamfile->value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
140 MissionInfo missionInfo; |
157 MissionInfo missionInfo; |
141 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
158 missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
142 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
159 QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); |
143 missionInfo.script = script; |
160 missionInfo.script = script; |
144 missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
161 missionInfo.description = m_info->value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", |
145 QObject::tr("No description available")).toString(); |
162 QObject::tr("No description available")).toString(); |
146 QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
163 QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); |
147 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
164 missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; |
148 if (!QFile::exists(missionInfo.image)) |
165 if (!QFile::exists(missionInfo.image)) |
149 missionInfo.image = ":/res/CampaignDefault.png"; |
166 missionInfo.image = ":/res/CampaignDefault.png"; |