QTfrontend/campaign.cpp
changeset 11957 1201fc039e24
parent 11956 221b38978401
child 11958 de66192866d3
equal deleted inserted replaced
11956:221b38978401 11957:1201fc039e24
    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";