QTfrontend/campaign.cpp
author Wuzzy <Wuzzy2@mail.ru>
Tue, 28 Aug 2018 05:46:33 +0200
changeset 13710 0da36902e5b6
parent 13274 e381f5260b45
child 13811 e3fee73c51a0
permissions -rw-r--r--
Space Invasion: Continue playing rounds in case the teams are tied at the end Rules in case of a tie: 1) Eliminate all teams not tied for the lead 2) Play another round with the remaining teams 3) Check for the winner again at the end of that round. If there's another tie, repeat the procedure
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
11948
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
{
11948
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(" "));
11948
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++) {
11948
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
        }
11948
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
11948
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
11951
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    49
/**
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
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: 11948
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: 11948
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: 11948
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: 11948
diff changeset
    54
*/
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
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: 11948
diff changeset
    56
{
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    57
    QSettings* teamfile = getCampTeamFile(campaignName, teamName);
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
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: 11948
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: 11948
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: 11948
diff changeset
    61
    {
11956
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11954
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: 11954
diff changeset
    63
        campfile.setIniCodec("UTF-8");
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11954
diff changeset
    64
        int totalMissions = campfile.value("MissionNum", 1).toInt();
221b38978401 Seperate campaign victories from campaign mission victories
Wuzzy <almikes@aol.com>
parents: 11954
diff changeset
    65
        return (progress > (progress - missionInList)) || (progress >= totalMissions);
11951
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    66
    }
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    67
    else if(unlockedMissions>0)
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    68
    {
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    69
        int fileMissionId = missionInList + 1;
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
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: 11948
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: 11948
diff changeset
    72
    }
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    73
    else
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    74
        return false;
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    75
}
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    76
b05db9ca6e1c Add support for storing and displaying success of campaign missions
Wuzzy <almikes@aol.com>
parents: 11948
diff changeset
    77
/** Returns true if the campaign has been won by the team */
11948
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
11957
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    85
QSettings* getCampMetaInfo()
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    86
{
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    87
    DataManager & dataMgr = DataManager::instance();
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    88
    // get locale
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    89
    QSettings settings(dataMgr.settingsFileName(),
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    90
    QSettings::IniFormat);
13274
e381f5260b45 Change how locale is loaded in frontend, and fix some bugs
Wuzzy <Wuzzy2@mail.ru>
parents: 12305
diff changeset
    91
    QString loc = QLocale().name();
11957
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    92
    QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    93
    // if file is non-existant try with language only
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    94
    if (!QFile::exists(campaignDescFile))
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    95
    campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    96
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    97
    // fallback if file for current locale is non-existant
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    98
    if (!QFile::exists(campaignDescFile))
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
    99
        campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   100
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   101
    QSettings* m_info = new QSettings(campaignDescFile, QSettings::IniFormat, 0);
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   102
    m_info->setIniCodec("UTF-8");
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   103
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   104
    return m_info;
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   105
}
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   106
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   107
/** Returns the localized campaign name */
12305
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11958
diff changeset
   108
QString getRealCampName(const QString & campaignName)
11957
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   109
{
12305
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11958
diff changeset
   110
    QString campaignNameSpaces = QString(campaignName).replace(QString("_"), QString(" "));
d3a52e51efd4 fix campaign missions not showing up for me
sheepluva
parents: 11958
diff changeset
   111
    return getCampMetaInfo()->value(campaignName+".name", campaignNameSpaces).toString();
11957
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   112
}
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   113
11948
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   114
QList<MissionInfo> getCampMissionList(QString & campaignName, QString & teamName)
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   115
{
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   116
    QList<MissionInfo> missionInfoList;
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   117
    QSettings* teamfile = getCampTeamFile(campaignName, teamName);
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   118
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   119
    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
   120
    int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   121
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   122
    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
   123
    campfile.setIniCodec("UTF-8");
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   124
11957
1201fc039e24 Make campaign names translatable
Wuzzy <almikes@aol.com>
parents: 11956
diff changeset
   125
    QSettings* m_info = getCampMetaInfo();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   126
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
   127
    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
   128
    {
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   129
        for(unsigned int i=progress+1;i>0;i--)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   130
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   131
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   132
            QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
11954
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11951
diff changeset
   133
            if(!script.isNull()) {
11958
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   134
                missionInfo.script = script;
11954
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11951
diff changeset
   135
                missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
11958
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   136
                QString scriptPrefix = campaignName+"-"+ script.replace(QString(".lua"),QString(""));
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   137
                missionInfo.realName = m_info->value(scriptPrefix+".name", missionInfo.name).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   138
                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
   139
                                            QObject::tr("No description available")).toString();
11954
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11951
diff changeset
   140
                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: 11951
diff changeset
   141
                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: 11951
diff changeset
   142
                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: 11951
diff changeset
   143
                    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: 11951
diff changeset
   144
                missionInfoList.append(missionInfo);
62be63822a96 Fix final mission of Progress-based campaigns (like ACF) not being recognized as finished
Wuzzy <almikes@aol.com>
parents: 11951
diff changeset
   145
            }
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   146
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   147
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   148
    else if(unlockedMissions>0)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   149
    {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   150
        for(int i=1;i<=unlockedMissions;i++)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   151
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   152
            QString missionNum = QString("%1").arg(i);
11948
6da9bb4b3449 Show check marks for campaigns with Won=true
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   153
            int missionNumber = teamfile->value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   154
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   155
            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
   156
            missionInfo.script = script;
11958
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   157
            missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   158
            QString scriptPrefix = campaignName+"-"+ script.replace(QString(".lua"),QString(""));
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   159
            missionInfo.realName = m_info->value(scriptPrefix+".name", missionInfo.name).toString();
de66192866d3 Make campaign mission names translatable
Wuzzy <almikes@aol.com>
parents: 11957
diff changeset
   160
            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
   161
                                            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
   162
            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
   163
            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
   164
            if (!QFile::exists(missionInfo.image))
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   165
                missionInfo.image = ":/res/CampaignDefault.png";
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   166
            missionInfoList.append(missionInfo);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   167
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   168
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   169
    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
   170
}