QTfrontend/campaign.cpp
branchwebgl
changeset 9950 2759212a27de
parent 9823 31c5f7e65259
child 9998 736015b847e3
equal deleted inserted replaced
9521:8054d9d775fd 9950:2759212a27de
    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    17  */
    17  */
    18 
    18 
    19 #include "campaign.h"
    19 #include "campaign.h"
       
    20 #include "hwconsts.h"
       
    21 #include "DataManager.h"
       
    22 #include <QSettings>
       
    23 #include <QObject>
       
    24 #include <QLocale>
    20 
    25 
    21 #include "hwconsts.h"
    26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName)
       
    27 {
       
    28     QList<MissionInfo> missionInfoList;
       
    29 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
    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 	
       
    48     int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
       
    49     int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
       
    50     
       
    51     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
       
    52     campfile.setIniCodec("UTF-8");
       
    53     
       
    54     DataManager & dataMgr = DataManager::instance();
       
    55         // get locale
       
    56         QSettings settings(dataMgr.settingsFileName(),
       
    57                            QSettings::IniFormat);
       
    58         QString loc = settings.value("misc/locale", "").toString();
       
    59         if (loc.isEmpty())
       
    60             loc = QLocale::system().name();
       
    61         QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
       
    62         // if file is non-existant try with language only
       
    63         if (!QFile::exists(campaignDescFile))
       
    64             campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
    22 
    65 
    23 #include <QSettings>
    66         // fallback if file for current locale is non-existant
       
    67         if (!QFile::exists(campaignDescFile))
       
    68             campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
    24 
    69 
    25 
    70         QSettings m_info(campaignDescFile, QSettings::IniFormat, 0);
    26 QStringList getCampMissionList(QString & campaign)
    71         m_info.setIniCodec("UTF-8");
    27 {
    72     
    28     QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
    73     if(progress>=0 and unlockedMissions==0)
    29     campfile.setIniCodec("UTF-8");
       
    30     unsigned int mNum = campfile.value("MissionNum", 0).toInt();
       
    31 
       
    32     QStringList missionList;
       
    33     for (unsigned int i = 0; i < mNum; i++)
       
    34     {
    74     {
    35       missionList += campfile.value(QString("Mission %1/Name").arg(i + 1)).toString();
    75 		for(unsigned int i=progress+1;i>0;i--)
    36     }
    76 		{
    37     return missionList;
    77 			MissionInfo missionInfo;
       
    78 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
       
    79 			QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
       
    80             missionInfo.script = script;
       
    81 			missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc",
       
    82                                             QObject::tr("No description available")).toString();
       
    83             QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
       
    84             missionInfo.image = ":/res/campaign/"+campaignName+"/"+image;
       
    85             if (!QFile::exists(missionInfo.image))
       
    86 				missionInfo.image = ":/res/CampaignDefault.png";
       
    87 			missionInfoList.append(missionInfo);
       
    88 		}
       
    89 	} 
       
    90 	else if(unlockedMissions>0)
       
    91 	{
       
    92 		for(int i=1;i<=unlockedMissions;i++)
       
    93 		{
       
    94 			QString missionNum = QString("%1").arg(i);
       
    95 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
       
    96 			MissionInfo missionInfo;
       
    97 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
       
    98 			QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
       
    99             missionInfo.script = script;
       
   100 			missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc",
       
   101                                             QObject::tr("No description available")).toString();
       
   102             QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
       
   103             missionInfo.image = ":/res/campaign/"+campaignName+"/"+image;
       
   104             if (!QFile::exists(missionInfo.image))
       
   105 				missionInfo.image = ":/res/CampaignDefault.png";
       
   106 			missionInfoList.append(missionInfo);
       
   107 		}
       
   108 	}
       
   109 	return missionInfoList;
    38 }
   110 }
    39 
       
    40 unsigned int getCampProgress(QString & teamName, QString & campName)
       
    41 {
       
    42     QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
    43     teamfile.setIniCodec("UTF-8");
       
    44     return teamfile.value("Campaign " + campName + "/Progress", 0).toInt();
       
    45 }
       
    46 
       
    47 QString getCampaignScript(QString campaign, unsigned int mNum)
       
    48 {
       
    49     QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
       
    50     campfile.setIniCodec("UTF-8");
       
    51     return campfile.value(QString("Mission %1/Script").arg(mNum)).toString();
       
    52 }
       
    53 
       
    54 QString getCampaignImage(QString campaign, unsigned int mNum)
       
    55 {
       
    56     return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(".png"));
       
    57 }
       
    58 
       
    59 QString getCampaignMissionName(QString campaign, unsigned int mNum)
       
    60 {
       
    61     return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(""));
       
    62 }
       
    63