author | koda |
Mon, 01 Nov 2010 18:51:38 +0100 | |
changeset 4082 | bfe14b38dad1 |
parent 3951 | c9a63db3e603 |
child 4125 | 877ecc9d9d82 |
permissions | -rw-r--r-- |
184 | 1 |
/* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
883 | 3 |
* Copyright (c) 2006-2008 Igor Ulyanov <iulyanov@gmail.com> |
184 | 4 |
* |
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
17 |
*/ |
|
18 |
||
19 |
#include <QPushButton> |
|
20 |
#include <QBuffer> |
|
21 |
#include <QUuid> |
|
22 |
#include <QBitmap> |
|
23 |
#include <QPainter> |
|
24 |
#include <QLinearGradient> |
|
25 |
#include <QColor> |
|
249 | 26 |
#include <QTextStream> |
677
9d0bcc3c903a
Save some vertical pixels using fewer margin in HWMapContainer
unc0rr
parents:
530
diff
changeset
|
27 |
#include <QApplication> |
1209 | 28 |
#include <QLabel> |
29 |
#include <QListWidget> |
|
30 |
#include <QVBoxLayout> |
|
1224 | 31 |
#include <QIcon> |
249 | 32 |
|
33 |
#include "hwconsts.h" |
|
788
00720357601f
- Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents:
682
diff
changeset
|
34 |
#include "mapContainer.h" |
1209 | 35 |
#include "igbox.h" |
184 | 36 |
|
37 |
HWMapContainer::HWMapContainer(QWidget * parent) : |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
38 |
QWidget(parent), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
39 |
mainLayout(this), |
3133 | 40 |
pMap(0), |
41 |
mapgen(MAPGEN_REGULAR), |
|
42 |
maze_size(0) |
|
184 | 43 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
44 |
hhSmall.load(":/res/hh_small.png"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
45 |
hhLimit = 18; |
1797 | 46 |
templateFilter = 0; |
2377 | 47 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
48 |
mainLayout.setContentsMargins(QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
49 |
1, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
50 |
QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
51 |
QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin)); |
2377 | 52 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
53 |
imageButt = new QPushButton(this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
54 |
imageButt->setObjectName("imageButt"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
55 |
imageButt->setFixedSize(256 + 6, 128 + 6); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
56 |
imageButt->setFlat(true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
57 |
imageButt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);//QSizePolicy::Minimum, QSizePolicy::Minimum); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
58 |
mainLayout.addWidget(imageButt, 0, 0, 1, 2); |
3870 | 59 |
//connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomSeed())); |
60 |
//connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme())); |
|
61 |
connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomMap())); |
|
249 | 62 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
63 |
chooseMap = new QComboBox(this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
64 |
chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); |
3865 | 65 |
chooseMap->addItem(QIcon(":/res/mapRandom.png"), QComboBox::tr("generated map...")); |
66 |
chooseMap->addItem(QIcon(":/res/mapMaze.png"), QComboBox::tr("generated maze...")); |
|
3185 | 67 |
chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions |
68 |
||
69 |
int missionindex = chooseMap->count(); |
|
3870 | 70 |
numMissions = 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
71 |
for (int i = 0; i < mapList->size(); ++i) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
72 |
QString map = (*mapList)[i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
73 |
QFile mapCfgFile( |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
74 |
QString("%1/Maps/%2/map.cfg") |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
75 |
.arg(datadir->absolutePath()) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
76 |
.arg(map)); |
3008 | 77 |
QFile mapLuaFile( |
78 |
QString("%1/Maps/%2/map.lua") |
|
79 |
.arg(datadir->absolutePath()) |
|
80 |
.arg(map)); |
|
1790 | 81 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
82 |
if (mapCfgFile.open(QFile::ReadOnly)) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
83 |
QString theme; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
84 |
quint32 limit = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
85 |
QList<QVariant> mapInfo; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
86 |
QTextStream input(&mapCfgFile); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
87 |
input >> theme; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
88 |
input >> limit; |
3008 | 89 |
mapInfo.push_back(map); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
90 |
mapInfo.push_back(theme); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
91 |
if (limit) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
92 |
mapInfo.push_back(limit); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
93 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
94 |
mapInfo.push_back(18); |
3008 | 95 |
mapInfo.push_back(mapLuaFile.exists()); |
3185 | 96 |
if(mapLuaFile.exists()) |
3870 | 97 |
{ |
3865 | 98 |
chooseMap->insertItem(missionindex++, QIcon(":/res/mapMission.png"), QComboBox::tr("Mission") + ": " + map, mapInfo); |
3870 | 99 |
numMissions++; |
100 |
} |
|
3185 | 101 |
else |
3865 | 102 |
chooseMap->addItem(QIcon(":/res/mapCustom.png"), map, mapInfo); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
103 |
mapCfgFile.close(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
104 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
105 |
} |
3185 | 106 |
chooseMap->insertSeparator(missionindex); // separator between missions and maps |
2377 | 107 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
108 |
connect(chooseMap, SIGNAL(currentIndexChanged(int)), this, SLOT(mapChanged(int))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
109 |
mainLayout.addWidget(chooseMap, 1, 1); |
249 | 110 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
111 |
QLabel * lblMap = new QLabel(tr("Map"), this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
112 |
mainLayout.addWidget(lblMap, 1, 0); |
1209 | 113 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
114 |
lblFilter = new QLabel(tr("Filter"), this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
115 |
mainLayout.addWidget(lblFilter, 2, 0); |
1802 | 116 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
117 |
CB_TemplateFilter = new QComboBox(this); |
1802 | 118 |
CB_TemplateFilter->addItem(tr("All"), 0); |
119 |
CB_TemplateFilter->addItem(tr("Small"), 1); |
|
120 |
CB_TemplateFilter->addItem(tr("Medium"), 2); |
|
121 |
CB_TemplateFilter->addItem(tr("Large"), 3); |
|
122 |
CB_TemplateFilter->addItem(tr("Cavern"), 4); |
|
123 |
CB_TemplateFilter->addItem(tr("Wacky"), 5); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
124 |
mainLayout.addWidget(CB_TemplateFilter, 2, 1); |
1802 | 125 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
126 |
connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int))); |
1802 | 127 |
|
3181 | 128 |
maze_size_label = new QLabel(tr("Type"), this); |
3133 | 129 |
mainLayout.addWidget(maze_size_label, 2, 0); |
130 |
maze_size_label->hide(); |
|
131 |
maze_size_selection = new QComboBox(this); |
|
3181 | 132 |
maze_size_selection->addItem(tr("Small tunnels"), 0); |
133 |
maze_size_selection->addItem(tr("Medium tunnels"), 1); |
|
134 |
maze_size_selection->addItem(tr("Large tunnels"), 2); |
|
135 |
maze_size_selection->addItem(tr("Small floating islands"), 3); |
|
136 |
maze_size_selection->addItem(tr("Medium floating islands"), 4); |
|
137 |
maze_size_selection->addItem(tr("Large floating islands"), 5); |
|
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
138 |
maze_size_selection->setCurrentIndex(1); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
139 |
maze_size = 1; |
3133 | 140 |
mainLayout.addWidget(maze_size_selection, 2, 1); |
141 |
maze_size_selection->hide(); |
|
142 |
connect(maze_size_selection, SIGNAL(currentIndexChanged(int)), this, SLOT(setMaze_size(int))); |
|
143 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
144 |
gbThemes = new IconedGroupBox(this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
145 |
gbThemes->setTitleTextPadding(60); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
146 |
gbThemes->setContentTopPadding(6); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
147 |
gbThemes->setTitle(tr("Themes")); |
1248 | 148 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
149 |
//gbThemes->setStyleSheet("padding: 0px"); // doesn't work - stylesheet is set with icon |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
150 |
mainLayout.addWidget(gbThemes, 0, 2, 3, 1); |
2377 | 151 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
152 |
QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
153 |
gbTLayout->setContentsMargins(0, 0, 0 ,0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
154 |
gbTLayout->setSpacing(0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
155 |
lwThemes = new QListWidget(this); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
156 |
lwThemes->setMinimumHeight(30); |
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3870
diff
changeset
|
157 |
lwThemes->setFixedWidth(140); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
158 |
for (int i = 0; i < Themes->size(); ++i) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
159 |
QListWidgetItem * lwi = new QListWidgetItem(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
160 |
lwi->setText(Themes->at(i)); |
3869 | 161 |
lwi->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(Themes->at(i)))); |
162 |
//lwi->setTextAlignment(Qt::AlignHCenter); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
163 |
lwThemes->addItem(lwi); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
164 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
165 |
connect(lwThemes, SIGNAL(currentRowChanged(int)), this, SLOT(themeSelected(int))); |
1802 | 166 |
|
167 |
// override default style to tighten up theme scroller |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
168 |
lwThemes->setStyleSheet(QString( |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
169 |
"QListWidget{" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
170 |
"border: solid;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
171 |
"border-width: 0px;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
172 |
"border-radius: 0px;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
173 |
"border-color: transparent;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
174 |
"background-color: #0d0544;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
175 |
"color: #ffcc00;" |
3869 | 176 |
"font: bold 13px;" |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
177 |
"}" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
178 |
) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
179 |
); |
2377 | 180 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
181 |
gbTLayout->addWidget(lwThemes); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
182 |
lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum); |
2377 | 183 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
184 |
mainLayout.setSizeConstraint(QLayout::SetFixedSize);//SetMinimumSize |
1215 | 185 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
186 |
setRandomSeed(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
187 |
setRandomTheme(); |
184 | 188 |
} |
189 |
||
190 |
void HWMapContainer::setImage(const QImage newImage) |
|
191 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
192 |
QPixmap px(256, 128); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
193 |
QPixmap pxres(256, 128); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
194 |
QPainter p(&pxres); |
184 | 195 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
196 |
px.fill(Qt::yellow); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
197 |
QBitmap bm = QBitmap::fromImage(newImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
198 |
px.setMask(bm); |
184 | 199 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
200 |
QLinearGradient linearGrad(QPoint(128, 0), QPoint(128, 128)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
201 |
linearGrad.setColorAt(1, QColor(0, 0, 192)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
202 |
linearGrad.setColorAt(0, QColor(66, 115, 225)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
203 |
p.fillRect(QRect(0, 0, 256, 128), linearGrad); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
204 |
p.drawPixmap(QPoint(0, 0), px); |
184 | 205 |
|
1790 | 206 |
addInfoToPreview(pxres); |
3133 | 207 |
chooseMap->setCurrentIndex(mapgen); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
208 |
pMap = 0; |
249 | 209 |
} |
210 |
||
1790 | 211 |
void HWMapContainer::setHHLimit(int newHHLimit) |
212 |
{ |
|
213 |
hhLimit = newHHLimit; |
|
214 |
} |
|
215 |
||
249 | 216 |
void HWMapContainer::mapChanged(int index) |
217 |
{ |
|
3133 | 218 |
switch(index) { |
219 |
case MAPGEN_REGULAR: |
|
220 |
mapgen = MAPGEN_REGULAR; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
221 |
changeImage(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
222 |
gbThemes->show(); |
1802 | 223 |
lblFilter->show(); |
224 |
CB_TemplateFilter->show(); |
|
3133 | 225 |
maze_size_label->hide(); |
226 |
maze_size_selection->hide(); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
227 |
emit mapChanged("+rnd+"); |
3133 | 228 |
emit mapgenChanged(mapgen); |
229 |
emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); |
|
230 |
break; |
|
231 |
case MAPGEN_MAZE: |
|
232 |
mapgen = MAPGEN_MAZE; |
|
233 |
changeImage(); |
|
234 |
gbThemes->show(); |
|
235 |
lblFilter->hide(); |
|
236 |
CB_TemplateFilter->hide(); |
|
237 |
maze_size_label->show(); |
|
238 |
maze_size_selection->show(); |
|
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
239 |
emit mapChanged("+maze+"); |
3133 | 240 |
emit mapgenChanged(mapgen); |
241 |
emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); |
|
242 |
break; |
|
243 |
default: |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
244 |
loadMap(index); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
245 |
gbThemes->hide(); |
1802 | 246 |
lblFilter->hide(); |
247 |
CB_TemplateFilter->hide(); |
|
3133 | 248 |
maze_size_label->hide(); |
249 |
maze_size_selection->hide(); |
|
3009 | 250 |
emit mapChanged(chooseMap->itemData(index).toList()[0].toString()); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
251 |
} |
331 | 252 |
} |
253 |
||
254 |
void HWMapContainer::loadMap(int index) |
|
255 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
256 |
QPixmap mapImage; |
3008 | 257 |
if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->itemData(index).toList()[0].toString() + "/preview.png")) { |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
258 |
changeImage(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
259 |
chooseMap->setCurrentIndex(0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
260 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
261 |
} |
1790 | 262 |
|
3008 | 263 |
hhLimit = chooseMap->itemData(index).toList()[2].toInt(); |
1790 | 264 |
addInfoToPreview(mapImage); |
265 |
} |
|
266 |
||
267 |
// Should this add text to identify map size? |
|
268 |
void HWMapContainer::addInfoToPreview(QPixmap image) |
|
269 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
270 |
QPixmap finalImage = QPixmap(image.size()); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
271 |
finalImage.fill(QColor(0, 0, 0, 0)); |
2377 | 272 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
273 |
QPainter p(&finalImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
274 |
p.drawPixmap(image.rect(), image); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
275 |
//p.setPen(QColor(0xf4,0x9e,0xe9)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
276 |
p.setPen(QColor(0xff,0xcc,0x00)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
277 |
p.setBrush(QColor(0, 0, 0)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
278 |
p.drawRect(image.rect().width() - hhSmall.rect().width() - 28, 3, 40, 20); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
279 |
p.setFont(QFont("MS Shell Dlg", 10)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
280 |
p.drawText(image.rect().width() - hhSmall.rect().width() - 14 - (hhLimit > 9 ? 10 : 0), 18, QString::number(hhLimit)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
281 |
p.drawPixmap(image.rect().width() - hhSmall.rect().width() - 5, 5, hhSmall.rect().width(), hhSmall.rect().height(), hhSmall); |
1790 | 282 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
283 |
imageButt->setIcon(finalImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
284 |
imageButt->setIconSize(image.size()); |
184 | 285 |
} |
286 |
||
287 |
void HWMapContainer::changeImage() |
|
288 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
289 |
if (pMap) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
290 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
291 |
disconnect(pMap, 0, this, SLOT(setImage(const QImage))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
292 |
disconnect(pMap, 0, this, SLOT(setHHLimit(int))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
293 |
pMap = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
294 |
} |
2021 | 295 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
296 |
pMap = new HWMap(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
297 |
connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
298 |
connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int))); |
3133 | 299 |
pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size); |
184 | 300 |
} |
301 |
||
1215 | 302 |
void HWMapContainer::themeSelected(int currentRow) |
303 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
304 |
QString theme = Themes->at(currentRow); |
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
305 |
QList<QVariant> mapInfoRegular; |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
306 |
mapInfoRegular.push_back(QString("+rnd+")); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
307 |
mapInfoRegular.push_back(theme); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
308 |
mapInfoRegular.push_back(18); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
309 |
mapInfoRegular.push_back(false); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
310 |
chooseMap->setItemData(0, mapInfoRegular); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
311 |
QList<QVariant> mapInfoMaze; |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
312 |
mapInfoMaze.push_back(QString("+maze+")); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
313 |
mapInfoMaze.push_back(theme); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
314 |
mapInfoMaze.push_back(18); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
315 |
mapInfoMaze.push_back(false); |
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
316 |
chooseMap->setItemData(1, mapInfoMaze); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
317 |
gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
318 |
emit themeChanged(theme); |
1215 | 319 |
} |
320 |
||
184 | 321 |
QString HWMapContainer::getCurrentSeed() const |
322 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
323 |
return m_seed; |
184 | 324 |
} |
325 |
||
249 | 326 |
QString HWMapContainer::getCurrentMap() const |
327 |
{ |
|
3133 | 328 |
if(chooseMap->currentIndex() <= 1) return QString(); |
3008 | 329 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString(); |
249 | 330 |
} |
331 |
||
332 |
QString HWMapContainer::getCurrentTheme() const |
|
333 |
{ |
|
3008 | 334 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[1].toString(); |
335 |
} |
|
336 |
||
337 |
bool HWMapContainer::getCurrentIsMission() const |
|
338 |
{ |
|
339 |
if(!chooseMap->currentIndex()) return false; |
|
340 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[3].toBool(); |
|
1790 | 341 |
} |
342 |
||
343 |
int HWMapContainer::getCurrentHHLimit() const |
|
344 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
345 |
return hhLimit; |
249 | 346 |
} |
347 |
||
1802 | 348 |
quint32 HWMapContainer::getTemplateFilter() const |
349 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
350 |
return CB_TemplateFilter->itemData(CB_TemplateFilter->currentIndex()).toInt(); |
1802 | 351 |
} |
352 |
||
184 | 353 |
void HWMapContainer::resizeEvent ( QResizeEvent * event ) |
354 |
{ |
|
355 |
//imageButt->setIconSize(imageButt->size()); |
|
356 |
} |
|
320 | 357 |
|
358 |
void HWMapContainer::setSeed(const QString & seed) |
|
359 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
360 |
m_seed = seed; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
361 |
changeImage(); |
320 | 362 |
} |
363 |
||
364 |
void HWMapContainer::setMap(const QString & map) |
|
365 |
{ |
|
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
366 |
if(map == "+rnd+" || map == "+maze+") |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
367 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
368 |
changeImage(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
369 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
370 |
} |
2377 | 371 |
|
3008 | 372 |
int id = 0; |
373 |
for(int i = 0; i < chooseMap->count(); i++) |
|
3195 | 374 |
if(!chooseMap->itemData(i).isNull() && chooseMap->itemData(i).toList()[0].toString() == map) |
3008 | 375 |
{ |
376 |
id = i; |
|
377 |
break; |
|
378 |
} |
|
379 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
380 |
if(id > 0) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
381 |
if (pMap) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
382 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
383 |
disconnect(pMap, 0, this, SLOT(setImage(const QImage))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
384 |
disconnect(pMap, 0, this, SLOT(setHHLimit(int))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
385 |
pMap = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
386 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
387 |
chooseMap->setCurrentIndex(id); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
388 |
loadMap(id); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
389 |
} |
320 | 390 |
} |
391 |
||
392 |
void HWMapContainer::setTheme(const QString & theme) |
|
393 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
394 |
QList<QListWidgetItem *> items = lwThemes->findItems(theme, Qt::MatchExactly); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
395 |
if(items.size()) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
396 |
lwThemes->setCurrentItem(items.at(0)); |
320 | 397 |
} |
3870 | 398 |
#include <QMessageBox> |
399 |
void HWMapContainer::setRandomMap() |
|
400 |
{ |
|
401 |
switch(chooseMap->currentIndex()) |
|
402 |
{ |
|
403 |
case MAPGEN_REGULAR: |
|
404 |
case MAPGEN_MAZE: |
|
405 |
setRandomSeed(); |
|
406 |
setRandomTheme(); |
|
407 |
break; |
|
408 |
default: |
|
409 |
if(chooseMap->currentIndex() < numMissions + 3) |
|
410 |
setRandomMission(); |
|
411 |
else |
|
412 |
setRandomStatic(); |
|
413 |
break; |
|
414 |
} |
|
415 |
} |
|
416 |
||
417 |
void HWMapContainer::setRandomStatic() |
|
418 |
{ |
|
419 |
chooseMap->setCurrentIndex(4 + numMissions + rand() % (chooseMap->count() - 4 - numMissions)); |
|
420 |
m_seed = QUuid::createUuid().toString(); |
|
421 |
} |
|
422 |
||
423 |
void HWMapContainer::setRandomMission() |
|
424 |
{ |
|
425 |
chooseMap->setCurrentIndex(3 + rand() % numMissions); |
|
426 |
m_seed = QUuid::createUuid().toString(); |
|
427 |
} |
|
320 | 428 |
|
429 |
void HWMapContainer::setRandomSeed() |
|
430 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
431 |
m_seed = QUuid::createUuid().toString(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
432 |
emit seedChanged(m_seed); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
433 |
changeImage(); |
320 | 434 |
} |
1318 | 435 |
|
436 |
void HWMapContainer::setRandomTheme() |
|
437 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
438 |
if(!Themes->size()) return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
439 |
quint32 themeNum = rand() % Themes->size(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
440 |
lwThemes->setCurrentRow(themeNum); |
1318 | 441 |
} |
1797 | 442 |
|
443 |
void HWMapContainer::setTemplateFilter(int filter) |
|
444 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
445 |
CB_TemplateFilter->setCurrentIndex(filter); |
1797 | 446 |
} |
1802 | 447 |
|
448 |
void HWMapContainer::templateFilterChanged(int filter) |
|
449 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
450 |
emit newTemplateFilter(filter); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
451 |
changeImage(); |
1802 | 452 |
} |
453 |
||
3133 | 454 |
MapGenerator HWMapContainer::get_mapgen(void) const |
455 |
{ |
|
456 |
return mapgen; |
|
457 |
} |
|
458 |
||
459 |
int HWMapContainer::get_maze_size(void) const |
|
460 |
{ |
|
461 |
return maze_size; |
|
462 |
} |
|
463 |
||
464 |
void HWMapContainer::setMaze_size(int size) |
|
465 |
{ |
|
466 |
maze_size = size; |
|
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
467 |
maze_size_selection->setCurrentIndex(size); |
3133 | 468 |
emit maze_sizeChanged(size); |
469 |
changeImage(); |
|
470 |
} |
|
471 |
||
472 |
void HWMapContainer::setMapgen(MapGenerator m) |
|
473 |
{ |
|
474 |
mapgen = m; |
|
475 |
emit mapgenChanged(m); |
|
476 |
changeImage(); |
|
477 |
} |