QTfrontend/campaign.cpp
author sheepluva
Thu, 23 Jan 2014 13:56:53 +0100
changeset 10061 b7161f00a6ca
parent 10017 de822cd3df3a
child 10108 c68cf030eded
permissions -rw-r--r--
hide complete IP of other users, when non-admin requests player info. showing the first two parts of the IP was kinda pointless to begin with (what for?) and has recently lead to increased abuse and lobby flooding due to bots collecting/posting IP tracking information
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
9998
736015b847e3 update copyright to 2014
sheepluva
parents: 9823
diff changeset
     3
 * Copyright (c) 2004-2014 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
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
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
9292
187ce630dddc y! code clean up :)
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9290
diff changeset
    26
QList<MissionInfo> getCampMissionList(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
{
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    28
    QList<MissionInfo> missionInfoList;
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    29
    QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0);
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    30
    teamfile.setIniCodec("UTF-8");
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    31
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
    32
    // 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
    33
    // 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
    34
    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
    35
    spaceCampName = spaceCampName.replace(QString("_"),QString(" "));
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    36
    if (!teamfile.childGroups().contains("Campaign " + campaignName) and
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    37
            teamfile.childGroups().contains("Campaign " + spaceCampName)){
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    38
        teamfile.beginGroup("Campaign " + spaceCampName);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    39
        QStringList keys = teamfile.childKeys();
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    40
        teamfile.endGroup();
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    41
        for (int i=0;i<keys.size();i++) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    42
            QVariant value = teamfile.value("Campaign " + spaceCampName + "/" + keys[i]);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    43
            teamfile.setValue("Campaign " + campaignName + "/" + keys[i], value);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    44
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    45
        teamfile.remove("Campaign " + spaceCampName);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    46
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    47
9308
4bddcc1a1450 merge and changed also spacecampaign name
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9294
diff changeset
    48
    int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt();
4bddcc1a1450 merge and changed also spacecampaign name
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9294
diff changeset
    49
    int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt();
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    50
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    51
    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
    52
    campfile.setIniCodec("UTF-8");
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    53
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    54
    DataManager & dataMgr = DataManager::instance();
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    55
        // get locale
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    56
        QSettings settings(dataMgr.settingsFileName(),
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    57
                           QSettings::IniFormat);
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    58
        QString loc = settings.value("misc/locale", "").toString();
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    59
        if (loc.isEmpty())
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    60
            loc = QLocale::system().name();
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    61
        QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    62
        // if file is non-existant try with language only
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    63
        if (!QFile::exists(campaignDescFile))
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    64
            campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    65
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    66
        // fallback if file for current locale is non-existant
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    67
        if (!QFile::exists(campaignDescFile))
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    68
            campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    69
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    70
        QSettings m_info(campaignDescFile, 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
    71
        m_info.setIniCodec("UTF-8");
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    72
9290
478aa681e702 this seems to work ok, but I have to clean up the code
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9286
diff changeset
    73
    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
    74
    {
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    75
        for(unsigned int i=progress+1;i>0;i--)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    76
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    77
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    78
            missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString();
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    79
            QString script = campfile.value(QString("Mission %1/Script").arg(i)).toString();
9308
4bddcc1a1450 merge and changed also spacecampaign name
Periklis Ntanasis <pntanasis@gmail.com>
parents: 9294
diff changeset
    80
            missionInfo.script = script;
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    81
            missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".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
    82
                                            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
    83
            QString image = campfile.value(QString("Mission %1/Script").arg(i)).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
    84
            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
    85
            if (!QFile::exists(missionInfo.image))
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    86
                missionInfo.image = ":/res/CampaignDefault.png";
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    87
            missionInfoList.append(missionInfo);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    88
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    89
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    90
    else if(unlockedMissions>0)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    91
    {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    92
        for(int i=1;i<=unlockedMissions;i++)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    93
        {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    94
            QString missionNum = QString("%1").arg(i);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    95
            int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt();
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    96
            MissionInfo missionInfo;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    97
            missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString();
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
    98
            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
    99
            missionInfo.script = script;
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   100
            missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".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
   101
                                            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
   102
            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
   103
            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
   104
            if (!QFile::exists(missionInfo.image))
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   105
                missionInfo.image = ":/res/CampaignDefault.png";
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   106
            missionInfoList.append(missionInfo);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   107
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   108
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 9998
diff changeset
   109
    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
   110
}