QTfrontend/campaign.cpp
changeset 10017 de822cd3df3a
parent 9998 736015b847e3
child 10108 c68cf030eded
equal deleted inserted replaced
10015:4feced261c68 10017:de822cd3df3a
    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 }