author | unC0Rr |
Tue, 14 Apr 2015 11:18:14 +0300 | |
branch | 0.9.22 |
changeset 12404 | bcdffa237f14 |
parent 11046 | 47a8c19ecb60 |
child 11953 | 6da9bb4b3449 |
permissions | -rw-r--r-- |
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 | 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 | 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 | 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 | 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 | 36 |
if (!teamfile.childGroups().contains("Campaign " + campaignName) and |
37 |
teamfile.childGroups().contains("Campaign " + spaceCampName)){ |
|
38 |
teamfile.beginGroup("Campaign " + spaceCampName); |
|
39 |
QStringList keys = teamfile.childKeys(); |
|
40 |
teamfile.endGroup(); |
|
41 |
for (int i=0;i<keys.size();i++) { |
|
42 |
QVariant value = teamfile.value("Campaign " + spaceCampName + "/" + keys[i]); |
|
43 |
teamfile.setValue("Campaign " + campaignName + "/" + keys[i], value); |
|
44 |
} |
|
45 |
teamfile.remove("Campaign " + spaceCampName); |
|
46 |
} |
|
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 | 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 | 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 | 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 | 75 |
for(unsigned int i=progress+1;i>0;i--) |
76 |
{ |
|
77 |
MissionInfo missionInfo; |
|
78 |
missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); |
|
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 | 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 | 86 |
missionInfo.image = ":/res/CampaignDefault.png"; |
87 |
missionInfoList.append(missionInfo); |
|
88 |
} |
|
89 |
} |
|
90 |
else if(unlockedMissions>0) |
|
91 |
{ |
|
92 |
for(int i=1;i<=unlockedMissions;i++) |
|
93 |
{ |
|
94 |
QString missionNum = QString("%1").arg(i); |
|
95 |
int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); |
|
96 |
MissionInfo missionInfo; |
|
97 |
missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); |
|
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 | 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 | 105 |
missionInfo.image = ":/res/CampaignDefault.png"; |
106 |
missionInfoList.append(missionInfo); |
|
107 |
} |
|
108 |
} |
|
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 |
} |