QTfrontend/campaign.cpp
author Wuzzy <Wuzzy2@mail.ru>
Fri, 27 Oct 2017 05:03:58 +0200
changeset 12787 389453e1e09e
parent 12310 d3a52e51efd4
child 13279 e381f5260b45
permissions -rw-r--r--
ACF7: Fix possible Lua error spam in intro sequence This was caused by a race of onGearDelete vs AnimationSetup. If AnimationSetup came first, it uses old values from the natives table. The solution is to force the code to guarantee that AnimationSetup always coms after deleting gears in the natives table.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     1
/*
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10108
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     4
 *
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     8
 *
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    13
 *
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 10017
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    17
 */
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    18
9000
af202eff659c remove about 45 useless #include statements from campain.* - copypasta ftw, eh? :p
sheepluva
parents: 8434
diff changeset
    19
#include "campaign.h"
af202eff659c remove about 45 useless #include statements from campain.* - copypasta ftw, eh? :p
sheepluva
parents: 8434
diff changeset
    20
#include "hwconsts.h"
9278
33a30ce9782f this seems to works, still wip
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9275
diff changeset
    21
#include "DataManager.h"
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    22
#include <QSettings>
9278
33a30ce9782f this seems to works, still wip
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9275
diff changeset
    23
#include <QObject>
9292
187ce630dddc y! code clean up :)
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9290
diff changeset
    24
#include <QLocale>
8434
4821897a0f10 big indentation/whitespaces cleanup
sheepluva
parents: 8049
diff changeset
    25
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    26
QSettings* getCampTeamFile(QString & campaignName, QString & teamName)
9294
f9b31c3efd35 added deafult image if not one available in campaign
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9292
diff changeset
    27
{
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    28
    QSettings* teamfile = new QSettings(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    29
    teamfile->setIniCodec("UTF-8");
9821
7501208fd025 check if save from old campaign name scheme exists and if so rename it to use _ instead of spaces -see issue 722
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9308
diff changeset
    30
    // if entry not found check if there is written without _
7501208fd025 check if save from old campaign name scheme exists and if so rename it to use _ instead of spaces -see issue 722
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9308
diff changeset
    31
    // if then is found rename it to use _
7501208fd025 check if save from old campaign name scheme exists and if so rename it to use _ instead of spaces -see issue 722
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9308
diff changeset
    32
    QString spaceCampName = campaignName;
7501208fd025 check if save from old campaign name scheme exists and if so rename it to use _ instead of spaces -see issue 722
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9308
diff changeset
    33
    spaceCampName = spaceCampName.replace(QString("_"),QString(" "));
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    34
    if (!teamfile->childGroups().contains("Campaign " + campaignName) and
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    35
            teamfile->childGroups().contains("Campaign " + spaceCampName)){
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    36
        teamfile->beginGroup("Campaign " + spaceCampName);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    37
        QStringList keys = teamfile->childKeys();
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    38
        teamfile->endGroup();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    39
        for (int i=0;i<keys.size();i++) {
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    40
            QVariant value = teamfile->value("Campaign " + spaceCampName + "/" + keys[i]);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    41
            teamfile->setValue("Campaign " + campaignName + "/" + keys[i], value);
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    42
        }
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    43
        teamfile->remove("Campaign " + spaceCampName);
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    44
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    45
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    46
    return teamfile;
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    47
}
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    48
11956
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    49
/**
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    50
    Returns true if the specified mission has been completed
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    51
    campaignName: Name of the campaign in question
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    52
    missionInList: QComboBox index of the mission as selected in the mission widget
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    53
    teamName: Name of the playing team
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    54
*/
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    55
bool isMissionWon(QString & campaignName, int missionInList, QString & teamName)
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    56
{
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    57
    QSettings* teamfile = getCampTeamFile(campaignName, teamName);
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    58
    int progress = teamfile->value("Campaign " + campaignName + "/Progress", 0).toInt();
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    59
    int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    60
    if(progress>0 and unlockedMissions==0)
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    61
    {
11961
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11959
diff changeset
    62
        QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11959
diff changeset
    63
        campfile.setIniCodec("UTF-8");
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11959
diff changeset
    64
        int totalMissions = campfile.value("MissionNum", 1).toInt();
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11959
diff changeset
    65
        return (progress > (progress - missionInList)) || (progress >= totalMissions);
11956
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    66
    }
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    67
    else if(unlockedMissions>0)
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    68
    {
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    69
        int fileMissionId = missionInList + 1;
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    70
        int actualMissionId = teamfile->value(QString("Campaign %1/Mission%2").arg(campaignName, QString::number(fileMissionId)), false).toInt();
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    71
        return teamfile->value(QString("Campaign %1/Mission%2Won").arg(campaignName, QString::number(actualMissionId)), false).toBool();
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    72
    }
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    73
    else
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    74
        return false;
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    75
}
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    76
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11953
diff changeset
    77
/** Returns true if the campaign has been won by the team */
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    78
bool isCampWon(QString & campaignName, QString & teamName)
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    79
{
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    80
    QSettings* teamfile = getCampTeamFile(campaignName, teamName);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    81
    bool won = teamfile->value("Campaign " + campaignName + "/Won", false).toBool();
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    82
    return won;
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    83
}
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    84
11962
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    85
QSettings* getCampMetaInfo()
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    86
{
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    87
    DataManager & dataMgr = DataManager::instance();
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    88
    // get locale
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    89
    QSettings settings(dataMgr.settingsFileName(),
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    90
    QSettings::IniFormat);
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    91
    QString loc = settings.value("misc/locale", "").toString();
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    92
    if (loc.isEmpty())
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    93
        loc = QLocale::system().name();
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    94
    QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    95
    // if file is non-existant try with language only
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    96
    if (!QFile::exists(campaignDescFile))
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    97
    campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    98
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
    99
    // fallback if file for current locale is non-existant
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   100
    if (!QFile::exists(campaignDescFile))
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   101
        campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   102
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   103
    QSettings* m_info = new QSettings(campaignDescFile, QSettings::IniFormat, 0);
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   104
    m_info->setIniCodec("UTF-8");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   105
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   106
    return m_info;
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   107
}
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   108
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   109
/** Returns the localized campaign name */
12310
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11963
diff changeset
   110
QString getRealCampName(const QString & campaignName)
11962
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   111
{
12310
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11963
diff changeset
   112
    QString campaignNameSpaces = QString(campaignName).replace(QString("_"), QString(" "));
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11963
diff changeset
   113
    return getCampMetaInfo()->value(campaignName+".name", campaignNameSpaces).toString();
11962
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   114
}
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   115
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   116
QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName)
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   117
{
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   118
    QList<MissionInfo> missionInfoList;
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   119
    QSettings* teamfile = getCampTeamFile(campaignName, teamName);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   120
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   121
    int progress = teamfile->value("Campaign " + campaignName + "/Progress", 0).toInt();
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   122
    int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   123
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   124
    QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0);
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   125
    campfile.setIniCodec("UTF-8");
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   126
11962
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11961
diff changeset
   127
    QSettings* m_info = getCampMetaInfo();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   128
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   129
    if(progress>=0 and unlockedMissions==0)
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   130
    {
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   131
        for(unsigned int i=progress+1;i>0;i--)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   132
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   133
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   134
            QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
11959
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   135
            if(!script.isNull()) {
11963
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   136
                missionInfo.script = script;
11959
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   137
                missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
11963
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   138
                QString scriptPrefix = campaignName+"-"+ script.replace(QString(".lua"),QString(""));
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   139
                missionInfo.realName = m_info->value(scriptPrefix+".name", missionInfo.name).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   140
                missionInfo.description = m_info->value(scriptPrefix + ".desc",
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   141
                                            QObject::tr("No description available")).toString();
11959
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   142
                QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png"));
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   143
                missionInfo.image = ":/res/campaign/"+campaignName+"/"+image;
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   144
                if (!QFile::exists(missionInfo.image))
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   145
                    missionInfo.image = ":/res/CampaignDefault.png";
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   146
                missionInfoList.append(missionInfo);
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   147
            }
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   148
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   149
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   150
    else if(unlockedMissions>0)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   151
    {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   152
        for(int i=1;i<=unlockedMissions;i++)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   153
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   154
            QString missionNum = QString("%1").arg(i);
11953
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   155
            int missionNumber = teamfile->value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   156
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   157
            QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString();
9308
4bddcc1a1450 merge and changed also spacecampaign name
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9294
diff changeset
   158
            missionInfo.script = script;
11963
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   159
            missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   160
            QString scriptPrefix = campaignName+"-"+ script.replace(QString(".lua"),QString(""));
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   161
            missionInfo.realName = m_info->value(scriptPrefix+".name", missionInfo.name).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11962
diff changeset
   162
            missionInfo.description = m_info->value(scriptPrefix + ".desc",
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   163
                                            QObject::tr("No description available")).toString();
9294
f9b31c3efd35 added deafult image if not one available in campaign
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9292
diff changeset
   164
            QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png"));
f9b31c3efd35 added deafult image if not one available in campaign
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9292
diff changeset
   165
            missionInfo.image = ":/res/campaign/"+campaignName+"/"+image;
f9b31c3efd35 added deafult image if not one available in campaign
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9292
diff changeset
   166
            if (!QFile::exists(missionInfo.image))
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   167
                missionInfo.image = ":/res/CampaignDefault.png";
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   168
            missionInfoList.append(missionInfo);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   169
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   170
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   171
    return missionInfoList;
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   172
}