QTfrontend/campaign.cpp
branchsdl2transition
changeset 11362 ed5a6478e710
parent 11046 47a8c19ecb60
child 11948 6da9bb4b3449
equal deleted inserted replaced
11361:31570b766315 11362:ed5a6478e710
     1 /*
     1 /*
     2  * Hedgewars, a free turn based strategy game
     2  * Hedgewars, a free turn based strategy game
     3  * Copyright (c) 2004-2013 Andrey Korotaev <unC0Rr@gmail.com>
     3  * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
     4  *
     4  *
     5  * This program is free software; you can redistribute it and/or modify
     5  * This program is free software; you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation; version 2 of the License
     7  * the Free Software Foundation; version 2 of the License
     8  *
     8  *
    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 }