--- a/QTfrontend/campaign.cpp Fri Jun 28 22:06:57 2013 +0300
+++ b/QTfrontend/campaign.cpp Fri Jun 28 22:38:08 2013 +0300
@@ -20,78 +20,20 @@
#include "hwconsts.h"
#include "DataManager.h"
#include <QSettings>
-#include <QMap>
-#include <QDebug>
#include <QObject>
-
-QStringList getCampMissionList(QString & campaign)
-{
- QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- unsigned int mNum = campfile.value("MissionNum", 0).toInt();
-
- QStringList missionList;
- for (unsigned int i = 0; i < mNum; i++)
- {
- missionList += campfile.value(QString("Mission %1/Name").arg(i + 1)).toString();
- }
- return missionList;
-}
+#include <QLocale>
-// works ok
-QStringList getCampMissionList2(QString & campaignName, QString & teamName)
-{
- QStringList missionList;
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
- qDebug("HERE is progress : %d",progress);
- unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
- qDebug("HERE is unlocked missions : %d",unlockedMissions);
-
- QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
- qDebug("HERE is number of missions : %d",missionsNumber);
-
- if(progress>=0 and unlockedMissions==0)
- {
- for(unsigned int i=progress+1;i>0;i--)
- {
- missionList += campfile.value(QString("Mission %1/Name").arg(i)).toString();
- }
- }
- else if(unlockedMissions>0)
- {
- qDebug("IN HERE !!!");
- for(unsigned int i=1;i<=unlockedMissions;i++)
- {
- QString missionNum = QString("%1").arg(i);
- int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
- qDebug("Campaign %s Mission %d",campaignName.toUtf8().constData(),i);
- qDebug("MISSION NUMBER : %d",missionNumber);
- missionList += campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
- qDebug(campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString().toUtf8().constData());
- }
- }
- return missionList;
-}
-
-QList<MissionInfo> getCampMissionList3(QString & campaignName, QString & teamName)
+QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName)
{
// TODO: add default image if there isn't an available one
QList<MissionInfo> missionInfoList;
QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
teamfile.setIniCodec("UTF-8");
unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
- qDebug("HERE is progress : %d",progress);
unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
- qDebug("HERE is unlocked missions : %d",unlockedMissions);
QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
campfile.setIniCodec("UTF-8");
- unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
- qDebug("HERE is number of missions : %d",missionsNumber);
DataManager & dataMgr = DataManager::instance();
// get locale
@@ -118,214 +60,27 @@
{
MissionInfo missionInfo;
missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
- missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
+ missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
+ missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc",
QObject::tr("No description available")).toString();
- missionInfo.script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
missionInfo.image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
missionInfoList.append(missionInfo);
}
}
else if(unlockedMissions>0)
{
- qDebug("IN HERE !!!");
for(unsigned int i=1;i<=unlockedMissions;i++)
{
QString missionNum = QString("%1").arg(i);
int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
MissionInfo missionInfo;
missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
- missionInfo.description = m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc",
+ missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
+ missionInfo.description = m_info.value(campaignName+"-"+ missionInfo.script.replace(QString(".lua"),QString("")) + ".desc",
QObject::tr("No description available")).toString();
- missionInfo.script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
missionInfo.image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
missionInfoList.append(missionInfo);
}
}
return missionInfoList;
}
-
-QStringList getDescriptions(QString & campaignName, QString & teamName)
-{
- QStringList descriptionList;
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
- qDebug("HERE is progress : %d",progress);
- unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
- qDebug("HERE is unlocked missions : %d",unlockedMissions);
-
- QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
- qDebug("HERE is number of missions : %d",missionsNumber);
-
-
- DataManager & dataMgr = DataManager::instance();
- // get locale
- QSettings settings(dataMgr.settingsFileName(),
- QSettings::IniFormat);
- QString loc = settings.value("misc/locale", "").toString();
- if (loc.isEmpty())
- loc = QLocale::system().name();
- QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
- // if file is non-existant try with language only
- if (!QFile::exists(campaignDescFile))
- campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
-
- // fallback if file for current locale is non-existant
- if (!QFile::exists(campaignDescFile))
- campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
-
- QSettings m_info(campaignDescFile, QSettings::IniFormat, 0);
- m_info.setIniCodec("UTF-8");
-
- if(progress>=0 and unlockedMissions==0)
- {
- for(unsigned int i=progress+1;i>0;i--)
- {
- //update descruiptions here
- descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
- QObject::tr("No description available")).toString();
- }
- }
- else if(unlockedMissions>0)
- {
- qDebug("IN HERE !!!");
- for(unsigned int i=1;i<=unlockedMissions;i++)
- {
- QString missionNum = QString("%1").arg(i);
- int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
- descriptionList += m_info.value(campaignName+"-"+ getCampaignMissionName(campaignName,missionNumber) + ".desc",
- QObject::tr("No description available")).toString();
- }
- }
- return descriptionList;
-}
-
-QStringList getImages(QString & campaignName, QString & teamName)
-{
- QStringList imageList;
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
- qDebug("HERE is progress : %d",progress);
- unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
- qDebug("HERE is unlocked missions : %d",unlockedMissions);
-
- QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
- qDebug("HERE is number of missions : %d",missionsNumber);
-
-
- DataManager & dataMgr = DataManager::instance();
- // get locale
- QSettings settings(dataMgr.settingsFileName(),
- QSettings::IniFormat);
- QString loc = settings.value("misc/locale", "").toString();
- if (loc.isEmpty())
- loc = QLocale::system().name();
- QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
- // if file is non-existant try with language only
- if (!QFile::exists(campaignDescFile))
- campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
-
- // fallback if file for current locale is non-existant
- if (!QFile::exists(campaignDescFile))
- campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
-
- QSettings m_info(campaignDescFile, QSettings::IniFormat, 0);
- m_info.setIniCodec("UTF-8");
-
- if(progress>=0 and unlockedMissions==0)
- {
- for(unsigned int i=progress+1;i>0;i--)
- {
- //update descruiptions here
- imageList += campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
- }
- }
- else if(unlockedMissions>0)
- {
- qDebug("IN HERE !!!");
- for(unsigned int i=1;i<=unlockedMissions;i++)
- {
- QString missionNum = QString("%1").arg(i);
- int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
- imageList += campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
- }
- }
- return imageList;
-}
-
-unsigned int getCampProgress(QString & teamName, QString & campName)
-{
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- return teamfile.value("Campaign " + campName + "/Progress", 0).toInt();
-}
-
-QMap<QString,QString> getUnlockedMissions2(QString & campaignName, QString & teamName)
-{
- QMap<QString,QString> hash;
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- unsigned int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
- qDebug("HERE is progress : %d",progress);
- unsigned int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
- qDebug("HERE is unlocked missions : %d",unlockedMissions);
-
- QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- unsigned int missionsNumber = campfile.value("MissionNum", 0).toInt();
- qDebug("HERE is number of missions : %d",missionsNumber);
-
- if(progress>=0 and unlockedMissions==0)
- {
- for(unsigned int i=1;i<=progress+1;i++)
- {
- hash[getCampaignScript(campaignName,i)] = campfile.value(QString("Mission %1/Name").arg(i)).toString();
- }
- }
- else if(unlockedMissions>0)
- {
- for(unsigned int i=1;i<=unlockedMissions;i++)
- {
- int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+i, -1).toInt();
- hash[getCampaignScript(campaignName,missionNumber)] = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
- }
- }
- return hash;
-}
-
-QStringList getUnlockedMissions(QString & teamName, QString & campName)
-{
- QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
- teamfile.setIniCodec("UTF-8");
- unsigned int mNum = teamfile.value("UnlockedMissions", 0).toInt();
-
- QStringList missionList;
- for (unsigned int i = 0; i < mNum; i++)
- {
- missionList += teamfile.value(QString("Mission%1").arg(i + 1)).toString();
- }
- return missionList;
-}
-
-QString getCampaignScript(QString campaign, unsigned int mNum)
-{
- QSettings campfile("physfs://Missions/Campaign/" + campaign + "/campaign.ini", QSettings::IniFormat, 0);
- campfile.setIniCodec("UTF-8");
- return campfile.value(QString("Mission %1/Script").arg(mNum)).toString();
-}
-
-QString getCampaignImage(QString campaign, unsigned int mNum)
-{
- return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(".png"));
-}
-
-QString getCampaignMissionName(QString campaign, unsigned int mNum)
-{
- return getCampaignScript(campaign,mNum).replace(QString(".lua"),QString(""));
-}
-
--- a/QTfrontend/hwform.cpp Fri Jun 28 22:06:57 2013 +0300
+++ b/QTfrontend/hwform.cpp Fri Jun 28 22:38:08 2013 +0300
@@ -1722,11 +1722,7 @@
void HWForm::StartCampaign()
{
CreateGame(0, 0, 0);
- // what if no picture? :D
- //QComboBox *combo = ui.pageCampaign->CBMission;
QString camp = ui.pageCampaign->CBCampaign->currentText();
- //unsigned int mNum = combo->count() - combo->currentIndex();
- //QString miss = getCampaignScript(camp, mNum);
QString miss = campaignMissionInfo[ui.pageCampaign->CBMission->currentIndex()].script;
QString campTeam = ui.pageCampaign->CBTeam->currentText();
@@ -1896,43 +1892,29 @@
void HWForm::UpdateCampaignPage(int index)
{
- qDebug("UpdateCampaignPage");
Q_UNUSED(index);
HWTeam team(ui.pageCampaign->CBTeam->currentText());
- ui.pageCampaign->CBMission->clear();
-
QString campaignName = ui.pageCampaign->CBCampaign->currentText();
- QString tName = team.name();
- QStringList missionEntries = getCampMissionList2(campaignName,tName);
+ QString tName = team.name();
- campaignMissionInfo = getCampMissionList3(campaignName,tName);
-
- //unlockedMissionsHash = getUnlockedMissions2(campaignName, tName);
- // if the campaign name changes update the campaignMissionDescriptions list
- // this will be used later in UpdateCampaignPageMission() to update
- // the mission description in the campaign page
- campaignMissionDescriptions.clear();
- campaignMissionImages.clear();
+ campaignMissionInfo = getCampMissionList(campaignName,tName);
ui.pageCampaign->CBMission->clear();
- campaignMissionDescriptions = getDescriptions(campaignName,tName);
- campaignMissionImages = getImages(campaignName,tName);
- for(int i=0;i<missionEntries.size();i++)
+
+ for(int i=0;i<campaignMissionInfo.size();i++)
{
+ // Maybe not enforce the prefix Mission %1, isn't so nice for the misison with no
+ // specific order
ui.pageCampaign->CBMission->addItem(QString("Mission %1: ").arg(campaignMissionInfo.size()-i) + QString(campaignMissionInfo[i].name), QString(campaignMissionInfo[i].name));
}
}
void HWForm::UpdateCampaignPageMission(int index)
{
- qDebug("UpdateCampaignPageMission");
- // update thumbnail
+ // update thumbnail and description
QString campaignName = ui.pageCampaign->CBCampaign->currentText();
- // update description
// when campaign changes the UpdateCampaignPageMission is triggered with wrong values
- // this will cause segfault. This check prevents illegal memory reads
- qDebug("INDEX IS %d and number of descs is %d",index,campaignMissionDescriptions.count());
- if(index > -1 && index < campaignMissionDescriptions.count()) {
- qDebug("INSIDE IF *******");
+ // this will cause segfault. This check prevents illegal memory reads
+ if(index > -1 && index < campaignMissionInfo.count()) {
ui.pageCampaign->lbltitle->setText("<h2>"+ui.pageCampaign->CBMission->currentText()+"</h2>");
ui.pageCampaign->lbldescription->setText(campaignMissionInfo[index].description);
ui.pageCampaign->btnPreview->setIcon(QIcon((":/res/campaign/"+campaignName+"/"+campaignMissionInfo[index].image)));