QTfrontend/campaign.cpp
branchspacecampaign
changeset 9292 187ce630dddc
parent 9290 478aa681e702
child 9294 f9b31c3efd35
equal deleted inserted replaced
9290:478aa681e702 9292:187ce630dddc
    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"
    22 #include <QSettings>
    22 #include <QSettings>
    23 #include <QMap>
       
    24 #include <QDebug>
       
    25 #include <QObject>
    23 #include <QObject>
       
    24 #include <QLocale>
    26 
    25 
    27 QStringList getCampMissionList(QString & campaign)
    26 QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName)
    28 {
       
    29     QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
       
    30     campfile.setIniCodec("UTF-8");
       
    31     unsigned int mNum = campfile.value("MissionNum", 0).toInt();
       
    32 
       
    33     QStringList missionList;
       
    34     for (unsigned int i = 0; i < mNum; i++)
       
    35     {
       
    36       missionList += campfile.value(QString("Mission %1/Name").arg(i + 1)).toString();
       
    37     }
       
    38     return missionList;
       
    39 }
       
    40 
       
    41 // works ok
       
    42 QStringList getCampMissionList2(QString & campaignName, QString & teamName)
       
    43 {    
       
    44     QStringList missionList;
       
    45 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
    46     teamfile.setIniCodec("UTF-8");
       
    47     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
       
    48     qDebug("HERE is progress : %d",progress);
       
    49     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
       
    50     qDebug("HERE is unlocked missions : %d",unlockedMissions);
       
    51     
       
    52     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
       
    53     campfile.setIniCodec("UTF-8");
       
    54     unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
       
    55     qDebug("HERE is number of missions : %d",missionsNumber);  
       
    56     
       
    57     if(progress>=0 and unlockedMissions==0)
       
    58     {
       
    59 		for(unsigned int i=progress+1;i>0;i--)
       
    60 		{
       
    61 			missionList += campfile.value(QString("Mission %1/Name").arg(i)).toString();
       
    62 		}
       
    63 	} 
       
    64 	else if(unlockedMissions>0)
       
    65 	{
       
    66 		qDebug("IN HERE !!!");  
       
    67 		for(unsigned int i=1;i<=unlockedMissions;i++)
       
    68 		{
       
    69 			QString missionNum = QString("%1").arg(i);
       
    70 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
       
    71 			qDebug("Campaign %s Mission %d",campaignName.toUtf8().constData(),i);  
       
    72 			qDebug("MISSION NUMBER : %d",missionNumber);  
       
    73 			missionList += campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
       
    74 			qDebug(campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString().toUtf8().constData());
       
    75 		}
       
    76 	}
       
    77 	return missionList;
       
    78 }
       
    79 
       
    80 QList<MissionInfo> getCampMissionList3(QString & campaignName, QString & teamName)
       
    81 {    
    27 {    
    82 	// TODO: add default image if there isn't an available one
    28 	// TODO: add default image if there isn't an available one
    83     QList<MissionInfo> missionInfoList;
    29     QList<MissionInfo> missionInfoList;
    84 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
    30 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
    85     teamfile.setIniCodec("UTF-8");
    31     teamfile.setIniCodec("UTF-8");
    86     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
    32     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
    87     qDebug("HERE is progress : %d",progress);
       
    88     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
    33     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
    89     qDebug("HERE is unlocked missions : %d",unlockedMissions);
       
    90     
    34     
    91     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
    35     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
    92     campfile.setIniCodec("UTF-8");
    36     campfile.setIniCodec("UTF-8");
    93     unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
       
    94     qDebug("HERE is number of missions : %d",missionsNumber);  
       
    95     
    37     
    96     DataManager & dataMgr = DataManager::instance();
    38     DataManager & dataMgr = DataManager::instance();
    97         // get locale
    39         // get locale
    98         QSettings settings(dataMgr.settingsFileName(),
    40         QSettings settings(dataMgr.settingsFileName(),
    99                            QSettings::IniFormat);
    41                            QSettings::IniFormat);
   116     {
    58     {
   117 		for(unsigned int i=progress+1;i>0;i--)
    59 		for(unsigned int i=progress+1;i>0;i--)
   118 		{
    60 		{
   119 			MissionInfo missionInfo;
    61 			MissionInfo missionInfo;
   120 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
    62 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
   121 			missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
    63             missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
       
    64 			missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc",
   122                                             QObject::tr("No description available")).toString();
    65                                             QObject::tr("No description available")).toString();
   123             missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
       
   124             missionInfo.image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
    66             missionInfo.image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
   125 			missionInfoList.append(missionInfo);
    67 			missionInfoList.append(missionInfo);
   126 		}
    68 		}
   127 	} 
    69 	} 
   128 	else if(unlockedMissions>0)
    70 	else if(unlockedMissions>0)
   129 	{
    71 	{
   130 		qDebug("IN HERE !!!");  
       
   131 		for(unsigned int i=1;i<=unlockedMissions;i++)
    72 		for(unsigned int i=1;i<=unlockedMissions;i++)
   132 		{
    73 		{
   133 			QString missionNum = QString("%1").arg(i);
    74 			QString missionNum = QString("%1").arg(i);
   134 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
    75 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
   135 			MissionInfo missionInfo;
    76 			MissionInfo missionInfo;
   136 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
    77 			missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
   137 			missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc",
    78             missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
       
    79 			missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc",
   138                                             QObject::tr("No description available")).toString();
    80                                             QObject::tr("No description available")).toString();
   139             missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
       
   140             missionInfo.image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
    81             missionInfo.image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
   141 			missionInfoList.append(missionInfo);
    82 			missionInfoList.append(missionInfo);
   142 		}
    83 		}
   143 	}
    84 	}
   144 	return missionInfoList;
    85 	return missionInfoList;
   145 }
    86 }
   146 
       
   147 QStringList getDescriptions(QString & campaignName, QString & teamName)
       
   148 {    
       
   149     QStringList descriptionList;
       
   150 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
   151     teamfile.setIniCodec("UTF-8");
       
   152     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
       
   153     qDebug("HERE is progress : %d",progress);
       
   154     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
       
   155     qDebug("HERE is unlocked missions : %d",unlockedMissions);
       
   156     
       
   157     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
       
   158     campfile.setIniCodec("UTF-8");
       
   159     unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
       
   160     qDebug("HERE is number of missions : %d",missionsNumber);  
       
   161     
       
   162     
       
   163     DataManager & dataMgr = DataManager::instance();
       
   164         // get locale
       
   165         QSettings settings(dataMgr.settingsFileName(),
       
   166                            QSettings::IniFormat);
       
   167         QString loc = settings.value("misc/locale", "").toString();
       
   168         if (loc.isEmpty())
       
   169             loc = QLocale::system().name();
       
   170         QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
       
   171         // if file is non-existant try with language only
       
   172         if (!QFile::exists(campaignDescFile))
       
   173             campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
       
   174 
       
   175         // fallback if file for current locale is non-existant
       
   176         if (!QFile::exists(campaignDescFile))
       
   177             campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
       
   178 
       
   179         QSettings m_info(campaignDescFile, QSettings::IniFormat, 0);
       
   180         m_info.setIniCodec("UTF-8");
       
   181     
       
   182     if(progress>=0 and unlockedMissions==0)
       
   183     {
       
   184 		for(unsigned int i=progress+1;i>0;i--)
       
   185 		{
       
   186 			//update descruiptions here
       
   187 			descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
       
   188                                             QObject::tr("No description available")).toString();
       
   189 		}
       
   190 	} 
       
   191 	else if(unlockedMissions>0)
       
   192 	{
       
   193 		qDebug("IN HERE !!!");  
       
   194 		for(unsigned int i=1;i<=unlockedMissions;i++)
       
   195 		{
       
   196 			QString missionNum = QString("%1").arg(i);
       
   197 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
       
   198 			descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc",
       
   199                                             QObject::tr("No description available")).toString();
       
   200 		}
       
   201 	}
       
   202 	return descriptionList;
       
   203 }
       
   204 
       
   205 QStringList getImages(QString & campaignName, QString & teamName)
       
   206 {    
       
   207     QStringList imageList;
       
   208 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
   209     teamfile.setIniCodec("UTF-8");
       
   210     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
       
   211     qDebug("HERE is progress : %d",progress);
       
   212     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
       
   213     qDebug("HERE is unlocked missions : %d",unlockedMissions);
       
   214     
       
   215     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
       
   216     campfile.setIniCodec("UTF-8");
       
   217     unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
       
   218     qDebug("HERE is number of missions : %d",missionsNumber);  
       
   219     
       
   220     
       
   221     DataManager & dataMgr = DataManager::instance();
       
   222         // get locale
       
   223         QSettings settings(dataMgr.settingsFileName(),
       
   224                            QSettings::IniFormat);
       
   225         QString loc = settings.value("misc/locale", "").toString();
       
   226         if (loc.isEmpty())
       
   227             loc = QLocale::system().name();
       
   228         QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
       
   229         // if file is non-existant try with language only
       
   230         if (!QFile::exists(campaignDescFile))
       
   231             campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
       
   232 
       
   233         // fallback if file for current locale is non-existant
       
   234         if (!QFile::exists(campaignDescFile))
       
   235             campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
       
   236 
       
   237         QSettings m_info(campaignDescFile, QSettings::IniFormat, 0);
       
   238         m_info.setIniCodec("UTF-8");
       
   239     
       
   240     if(progress>=0 and unlockedMissions==0)
       
   241     {
       
   242 		for(unsigned int i=progress+1;i>0;i--)
       
   243 		{
       
   244 			//update descruiptions here
       
   245 			imageList += campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
       
   246 		}
       
   247 	} 
       
   248 	else if(unlockedMissions>0)
       
   249 	{
       
   250 		qDebug("IN HERE !!!");  
       
   251 		for(unsigned int i=1;i<=unlockedMissions;i++)
       
   252 		{
       
   253 			QString missionNum = QString("%1").arg(i);
       
   254 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
       
   255 			imageList += campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
       
   256 		}
       
   257 	}
       
   258 	return imageList;
       
   259 }
       
   260 
       
   261 unsigned int getCampProgress(QString & teamName, QString & campName)
       
   262 {
       
   263     QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
   264     teamfile.setIniCodec("UTF-8");
       
   265     return teamfile.value("Campaign " + campName + "/Progress", 0).toInt();
       
   266 }
       
   267 
       
   268 QMap<QString,QString> getUnlockedMissions2(QString & campaignName, QString & teamName)
       
   269 {
       
   270 	QMap<QString,QString> hash;
       
   271 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
   272     teamfile.setIniCodec("UTF-8");
       
   273     unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
       
   274     qDebug("HERE is progress : %d",progress);
       
   275     unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
       
   276     qDebug("HERE is unlocked missions : %d",unlockedMissions);
       
   277     
       
   278     QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
       
   279     campfile.setIniCodec("UTF-8");
       
   280     unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
       
   281     qDebug("HERE is number of missions : %d",missionsNumber);  
       
   282     
       
   283     if(progress>=0 and unlockedMissions==0)
       
   284     {
       
   285 		for(unsigned int i=1;i<=progress+1;i++)
       
   286 		{
       
   287 			hash[getCampaignScript(campaignName,i)] = campfile.value(QString("Mission %1/Name").arg(i)).toString();
       
   288 		}
       
   289 	} 
       
   290 	else if(unlockedMissions>0)
       
   291 	{
       
   292 		for(unsigned int i=1;i<=unlockedMissions;i++)
       
   293 		{
       
   294 			int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+i, -1).toInt();
       
   295 			hash[getCampaignScript(campaignName,missionNumber)] = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
       
   296 		}
       
   297 	}
       
   298 	return hash;
       
   299 }
       
   300 
       
   301 QStringList getUnlockedMissions(QString & teamName, QString & campName)
       
   302 {
       
   303 	QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
       
   304     teamfile.setIniCodec("UTF-8");
       
   305     unsigned int mNum = teamfile.value("UnlockedMissions", 0).toInt();
       
   306     
       
   307     QStringList missionList;
       
   308     for (unsigned int i = 0; i < mNum; i++)
       
   309     {
       
   310       missionList += teamfile.value(QString("Mission%1").arg(i + 1)).toString();
       
   311     }
       
   312     return missionList;
       
   313 }
       
   314 
       
   315 QString getCampaignScript(QString campaign, unsigned int mNum)
       
   316 {
       
   317     QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
       
   318     campfile.setIniCodec("UTF-8");
       
   319     return campfile.value(QString("Mission %1/Script").arg(mNum)).toString();
       
   320 }
       
   321 
       
   322 QString getCampaignImage(QString campaign, unsigned int mNum)
       
   323 {
       
   324     return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(".png"));
       
   325 }
       
   326 
       
   327 QString getCampaignMissionName(QString campaign, unsigned int mNum)
       
   328 {
       
   329     return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(""));
       
   330 }
       
   331