author | koda |
Thu, 07 Apr 2011 13:21:11 +0200 | |
changeset 5116 | d70febb51125 |
parent 4976 | 088d40d8aba2 |
child 5238 | 46ddaf14509d |
permissions | -rw-r--r-- |
184 | 1 |
/* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2006-2011 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> |
4519 | 32 |
#include <QLineEdit> |
4562 | 33 |
#include <QMessageBox> |
249 | 34 |
|
35 |
#include "hwconsts.h" |
|
788
00720357601f
- Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents:
682
diff
changeset
|
36 |
#include "mapContainer.h" |
1209 | 37 |
#include "igbox.h" |
184 | 38 |
|
39 |
HWMapContainer::HWMapContainer(QWidget * parent) : |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
40 |
QWidget(parent), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
41 |
mainLayout(this), |
3133 | 42 |
pMap(0), |
4562 | 43 |
mapgen(MAPGEN_REGULAR) |
184 | 44 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
45 |
hhSmall.load(":/res/hh_small.png"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
46 |
hhLimit = 18; |
1797 | 47 |
templateFilter = 0; |
2377 | 48 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
49 |
mainLayout.setContentsMargins(QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
50 |
1, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
51 |
QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
52 |
QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin)); |
2377 | 53 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
54 |
QWidget* mapWidget = new QWidget(this); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
55 |
mainLayout.addWidget(mapWidget, 0, 0, Qt::AlignHCenter); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
56 |
|
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
57 |
QGridLayout* mapLayout = new QGridLayout(mapWidget); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
58 |
mapLayout->setMargin(0); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
59 |
|
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
60 |
imageButt = new QPushButton(mapWidget); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
61 |
imageButt->setObjectName("imageButt"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
62 |
imageButt->setFixedSize(256 + 6, 128 + 6); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
63 |
imageButt->setFlat(true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
64 |
imageButt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);//QSizePolicy::Minimum, QSizePolicy::Minimum); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
65 |
mapLayout->addWidget(imageButt, 0, 0, 1, 2); |
4337 | 66 |
//connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomSeed())); |
67 |
//connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme())); |
|
68 |
connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomMap())); |
|
249 | 69 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
70 |
chooseMap = new QComboBox(mapWidget); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
71 |
chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); |
4125
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
72 |
chooseMap->addItem( |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
73 |
// FIXME - need real icons. Disabling until then |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
74 |
//QIcon(":/res/mapRandom.png"), |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
75 |
QComboBox::tr("generated map...")); |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
76 |
chooseMap->addItem( |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
77 |
// FIXME - need real icons. Disabling until then |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
78 |
//QIcon(":/res/mapMaze.png"), |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
79 |
QComboBox::tr("generated maze...")); |
4487 | 80 |
|
81 |
chooseMap->addItem(QComboBox::tr("hand drawn map...")); |
|
82 |
chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions |
|
83 |
||
3185 | 84 |
chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions |
85 |
||
86 |
int missionindex = chooseMap->count(); |
|
4337 | 87 |
numMissions = 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
88 |
for (int i = 0; i < mapList->size(); ++i) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
89 |
QString map = (*mapList)[i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
90 |
QFile mapCfgFile( |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
91 |
QString("%1/Maps/%2/map.cfg") |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
92 |
.arg(datadir->absolutePath()) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
93 |
.arg(map)); |
3008 | 94 |
QFile mapLuaFile( |
95 |
QString("%1/Maps/%2/map.lua") |
|
96 |
.arg(datadir->absolutePath()) |
|
97 |
.arg(map)); |
|
1790 | 98 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
99 |
if (mapCfgFile.open(QFile::ReadOnly)) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
100 |
QString theme; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
101 |
quint32 limit = 0; |
4513
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
102 |
QString scheme; |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
103 |
QString weapons; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
104 |
QList<QVariant> mapInfo; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
105 |
QTextStream input(&mapCfgFile); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
106 |
input >> theme; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
107 |
input >> limit; |
4513
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
108 |
input >> scheme; |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
109 |
input >> weapons; |
3008 | 110 |
mapInfo.push_back(map); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
111 |
mapInfo.push_back(theme); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
112 |
if (limit) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
113 |
mapInfo.push_back(limit); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
114 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
115 |
mapInfo.push_back(18); |
3008 | 116 |
mapInfo.push_back(mapLuaFile.exists()); |
4513
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
117 |
if (scheme.isEmpty()) |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
118 |
scheme = "locked"; |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
119 |
scheme.replace("_", " "); |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
120 |
if (weapons.isEmpty()) |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
121 |
weapons = "locked"; |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
122 |
weapons.replace("_", " "); |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
123 |
mapInfo.push_back(scheme); |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
124 |
mapInfo.push_back(weapons); |
3185 | 125 |
if(mapLuaFile.exists()) |
4337 | 126 |
{ |
4125
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
127 |
chooseMap->insertItem(missionindex++, |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
128 |
// FIXME - need real icons. Disabling until then |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
129 |
//QIcon(":/res/mapMission.png"), |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
130 |
QComboBox::tr("Mission") + ": " + map, mapInfo); |
4337 | 131 |
numMissions++; |
132 |
} |
|
3185 | 133 |
else |
4125
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
134 |
chooseMap->addItem( |
877ecc9d9d82
Disable icons on maps/generated terrain dropdowns since they haven't been drawn yet. Add per-hog-ammo button
nemo
parents:
3951
diff
changeset
|
135 |
// FIXME - need real icons. Disabling until then |
4337 | 136 |
//QIcon(":/res/mapCustom.png"), |
137 |
map, mapInfo); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
138 |
mapCfgFile.close(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
139 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
140 |
} |
3185 | 141 |
chooseMap->insertSeparator(missionindex); // separator between missions and maps |
2377 | 142 |
|
4941 | 143 |
connect(chooseMap, SIGNAL(activated(int)), this, SLOT(mapChanged(int))); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
144 |
mapLayout->addWidget(chooseMap, 1, 1); |
249 | 145 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
146 |
QLabel * lblMap = new QLabel(tr("Map"), mapWidget); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
147 |
mapLayout->addWidget(lblMap, 1, 0); |
1209 | 148 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
149 |
lblFilter = new QLabel(tr("Filter"), mapWidget); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
150 |
mapLayout->addWidget(lblFilter, 2, 0); |
1802 | 151 |
|
4941 | 152 |
cbTemplateFilter = new QComboBox(mapWidget); |
153 |
cbTemplateFilter->addItem(tr("All"), 0); |
|
154 |
cbTemplateFilter->addItem(tr("Small"), 1); |
|
155 |
cbTemplateFilter->addItem(tr("Medium"), 2); |
|
156 |
cbTemplateFilter->addItem(tr("Large"), 3); |
|
157 |
cbTemplateFilter->addItem(tr("Cavern"), 4); |
|
158 |
cbTemplateFilter->addItem(tr("Wacky"), 5); |
|
159 |
mapLayout->addWidget(cbTemplateFilter, 2, 1); |
|
1802 | 160 |
|
4941 | 161 |
connect(cbTemplateFilter, SIGNAL(activated(int)), this, SLOT(setTemplateFilter(int))); |
1802 | 162 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
163 |
maze_size_label = new QLabel(tr("Type"), mapWidget); |
3133 | 164 |
mainLayout.addWidget(maze_size_label, 2, 0); |
165 |
maze_size_label->hide(); |
|
4941 | 166 |
cbMazeSize = new QComboBox(mapWidget); |
167 |
cbMazeSize->addItem(tr("Small tunnels"), 0); |
|
168 |
cbMazeSize->addItem(tr("Medium tunnels"), 1); |
|
169 |
cbMazeSize->addItem(tr("Large tunnels"), 2); |
|
170 |
cbMazeSize->addItem(tr("Small floating islands"), 3); |
|
171 |
cbMazeSize->addItem(tr("Medium floating islands"), 4); |
|
172 |
cbMazeSize->addItem(tr("Large floating islands"), 5); |
|
173 |
cbMazeSize->setCurrentIndex(1); |
|
4562 | 174 |
|
4941 | 175 |
mapLayout->addWidget(cbMazeSize, 2, 1); |
176 |
cbMazeSize->hide(); |
|
177 |
connect(cbMazeSize, SIGNAL(activated(int)), this, SLOT(setMazeSize(int))); |
|
3133 | 178 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
179 |
gbThemes = new IconedGroupBox(mapWidget); |
4701 | 180 |
gbThemes->setTitleTextPadding(80); |
181 |
gbThemes->setContentTopPadding(15); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
182 |
gbThemes->setTitle(tr("Themes")); |
1248 | 183 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
184 |
//gbThemes->setStyleSheet("padding: 0px"); // doesn't work - stylesheet is set with icon |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
185 |
mapLayout->addWidget(gbThemes, 0, 2, 3, 1); |
2377 | 186 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
187 |
QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
188 |
gbTLayout->setContentsMargins(0, 0, 0 ,0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
189 |
gbTLayout->setSpacing(0); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
190 |
lwThemes = new QListWidget(mapWidget); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
191 |
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
|
192 |
lwThemes->setFixedWidth(140); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
193 |
for (int i = 0; i < Themes->size(); ++i) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
194 |
QListWidgetItem * lwi = new QListWidgetItem(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
195 |
lwi->setText(Themes->at(i)); |
3869 | 196 |
lwi->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(Themes->at(i)))); |
197 |
//lwi->setTextAlignment(Qt::AlignHCenter); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
198 |
lwThemes->addItem(lwi); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
199 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
200 |
connect(lwThemes, SIGNAL(currentRowChanged(int)), this, SLOT(themeSelected(int))); |
1802 | 201 |
|
202 |
// override default style to tighten up theme scroller |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
203 |
lwThemes->setStyleSheet(QString( |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
204 |
"QListWidget{" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
205 |
"border: solid;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
206 |
"border-width: 0px;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
207 |
"border-radius: 0px;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
208 |
"border-color: transparent;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
209 |
"background-color: #0d0544;" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
210 |
"color: #ffcc00;" |
3869 | 211 |
"font: bold 13px;" |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
212 |
"}" |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
213 |
) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
214 |
); |
2377 | 215 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
216 |
gbTLayout->addWidget(lwThemes); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
217 |
lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum); |
2377 | 218 |
|
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
219 |
mapLayout->setSizeConstraint(QLayout::SetFixedSize); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
220 |
|
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
221 |
QWidget* seedWidget = new QWidget(this); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
222 |
mainLayout.addWidget(seedWidget, 1, 0); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
223 |
|
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
224 |
QGridLayout* seedLayout = new QGridLayout(seedWidget); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
225 |
seedLayout->setMargin(0); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
226 |
|
4699 | 227 |
seedLabel = new QLabel(tr("Seed"), seedWidget); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
228 |
seedLayout->addWidget(seedLabel, 3, 0); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
229 |
seedEdit = new QLineEdit(seedWidget); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
230 |
seedEdit->setMaxLength(54); |
4550
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
231 |
connect(seedEdit, SIGNAL(returnPressed()), this, SLOT(seedEdited())); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
232 |
seedLayout->addWidget(seedEdit, 3, 1); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
233 |
seedLayout->setColumnStretch(1, 5); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
234 |
seedSet = new QPushButton(seedWidget); |
4699 | 235 |
seedSet->setText(QPushButton::tr("more")); |
4550
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
236 |
connect(seedSet, SIGNAL(clicked()), this, SLOT(seedEdited())); |
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
237 |
seedLayout->setColumnStretch(2, 1); |
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
238 |
seedLayout->addWidget(seedSet, 3, 2); |
1215 | 239 |
|
4699 | 240 |
seedLabel->setVisible(false); |
241 |
seedEdit->setVisible(false); |
|
242 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
243 |
setRandomSeed(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
244 |
setRandomTheme(); |
184 | 245 |
} |
246 |
||
247 |
void HWMapContainer::setImage(const QImage newImage) |
|
248 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
249 |
QPixmap px(256, 128); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
250 |
QPixmap pxres(256, 128); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
251 |
QPainter p(&pxres); |
184 | 252 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
253 |
px.fill(Qt::yellow); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
254 |
QBitmap bm = QBitmap::fromImage(newImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
255 |
px.setMask(bm); |
184 | 256 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
257 |
QLinearGradient linearGrad(QPoint(128, 0), QPoint(128, 128)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
258 |
linearGrad.setColorAt(1, QColor(0, 0, 192)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
259 |
linearGrad.setColorAt(0, QColor(66, 115, 225)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
260 |
p.fillRect(QRect(0, 0, 256, 128), linearGrad); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
261 |
p.drawPixmap(QPoint(0, 0), px); |
184 | 262 |
|
1790 | 263 |
addInfoToPreview(pxres); |
4561 | 264 |
//chooseMap->setCurrentIndex(mapgen); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
265 |
pMap = 0; |
249 | 266 |
} |
267 |
||
1790 | 268 |
void HWMapContainer::setHHLimit(int newHHLimit) |
269 |
{ |
|
270 |
hhLimit = newHHLimit; |
|
271 |
} |
|
272 |
||
249 | 273 |
void HWMapContainer::mapChanged(int index) |
274 |
{ |
|
3133 | 275 |
switch(index) { |
276 |
case MAPGEN_REGULAR: |
|
277 |
mapgen = MAPGEN_REGULAR; |
|
4562 | 278 |
updatePreview(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
279 |
gbThemes->show(); |
1802 | 280 |
lblFilter->show(); |
4941 | 281 |
cbTemplateFilter->show(); |
3133 | 282 |
maze_size_label->hide(); |
4941 | 283 |
cbMazeSize->hide(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
284 |
emit mapChanged("+rnd+"); |
3133 | 285 |
emit mapgenChanged(mapgen); |
286 |
emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); |
|
287 |
break; |
|
288 |
case MAPGEN_MAZE: |
|
289 |
mapgen = MAPGEN_MAZE; |
|
4562 | 290 |
updatePreview(); |
3133 | 291 |
gbThemes->show(); |
292 |
lblFilter->hide(); |
|
4941 | 293 |
cbTemplateFilter->hide(); |
3133 | 294 |
maze_size_label->show(); |
4941 | 295 |
cbMazeSize->show(); |
3141
70d65353bd60
prg adds option to toggle girders in maze, adjusts some frontend strings
nemo
parents:
3133
diff
changeset
|
296 |
emit mapChanged("+maze+"); |
3133 | 297 |
emit mapgenChanged(mapgen); |
298 |
emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); |
|
299 |
break; |
|
4487 | 300 |
case MAPGEN_DRAWN: |
301 |
mapgen = MAPGEN_DRAWN; |
|
4562 | 302 |
updatePreview(); |
4487 | 303 |
gbThemes->show(); |
304 |
lblFilter->hide(); |
|
4941 | 305 |
cbTemplateFilter->hide(); |
4487 | 306 |
maze_size_label->hide(); |
4941 | 307 |
cbMazeSize->hide(); |
4487 | 308 |
emit mapChanged("+drawn+"); |
309 |
emit mapgenChanged(mapgen); |
|
310 |
emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); |
|
311 |
break; |
|
3133 | 312 |
default: |
4562 | 313 |
updatePreview(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
314 |
gbThemes->hide(); |
1802 | 315 |
lblFilter->hide(); |
4941 | 316 |
cbTemplateFilter->hide(); |
3133 | 317 |
maze_size_label->hide(); |
4941 | 318 |
cbMazeSize->hide(); |
3009 | 319 |
emit mapChanged(chooseMap->itemData(index).toList()[0].toString()); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
320 |
} |
331 | 321 |
} |
322 |
||
1790 | 323 |
// Should this add text to identify map size? |
324 |
void HWMapContainer::addInfoToPreview(QPixmap image) |
|
325 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
326 |
QPixmap finalImage = QPixmap(image.size()); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
327 |
finalImage.fill(QColor(0, 0, 0, 0)); |
2377 | 328 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
329 |
QPainter p(&finalImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
330 |
p.drawPixmap(image.rect(), image); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
331 |
//p.setPen(QColor(0xf4,0x9e,0xe9)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
332 |
p.setPen(QColor(0xff,0xcc,0x00)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
333 |
p.setBrush(QColor(0, 0, 0)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
334 |
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
|
335 |
p.setFont(QFont("MS Shell Dlg", 10)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
336 |
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
|
337 |
p.drawPixmap(image.rect().width() - hhSmall.rect().width() - 5, 5, hhSmall.rect().width(), hhSmall.rect().height(), hhSmall); |
1790 | 338 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
339 |
imageButt->setIcon(finalImage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
340 |
imageButt->setIconSize(image.size()); |
184 | 341 |
} |
342 |
||
4562 | 343 |
void HWMapContainer::askForGeneratedPreview() |
184 | 344 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
345 |
if (pMap) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
346 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
347 |
disconnect(pMap, 0, this, SLOT(setImage(const QImage))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
348 |
disconnect(pMap, 0, this, SLOT(setHHLimit(int))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
349 |
pMap = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
350 |
} |
2021 | 351 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
352 |
pMap = new HWMap(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
353 |
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
|
354 |
connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int))); |
4562 | 355 |
pMap->getImage(m_seed, |
356 |
getTemplateFilter(), |
|
357 |
get_mapgen(), |
|
4941 | 358 |
getMazeSize(), |
4562 | 359 |
getDrawnMapData() |
360 |
); |
|
184 | 361 |
} |
362 |
||
1215 | 363 |
void HWMapContainer::themeSelected(int currentRow) |
364 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
365 |
QString theme = Themes->at(currentRow); |
4487 | 366 |
QList<QVariant> mapInfo; |
367 |
mapInfo.push_back(QString("+rnd+")); |
|
368 |
mapInfo.push_back(theme); |
|
369 |
mapInfo.push_back(18); |
|
370 |
mapInfo.push_back(false); |
|
371 |
chooseMap->setItemData(0, mapInfo); |
|
372 |
mapInfo[0] = QString("+maze+"); |
|
373 |
chooseMap->setItemData(1, mapInfo); |
|
374 |
mapInfo[0] = QString("+drawn+"); |
|
375 |
chooseMap->setItemData(2, mapInfo); |
|
4701 | 376 |
gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon@2x.png").arg(datadir->absolutePath()).arg(theme))); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
377 |
emit themeChanged(theme); |
1215 | 378 |
} |
379 |
||
184 | 380 |
QString HWMapContainer::getCurrentSeed() const |
381 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
382 |
return m_seed; |
184 | 383 |
} |
384 |
||
249 | 385 |
QString HWMapContainer::getCurrentMap() const |
386 |
{ |
|
4562 | 387 |
if(chooseMap->currentIndex() < MAPGEN_MAP) return QString(); |
3008 | 388 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString(); |
249 | 389 |
} |
390 |
||
391 |
QString HWMapContainer::getCurrentTheme() const |
|
392 |
{ |
|
3008 | 393 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[1].toString(); |
394 |
} |
|
395 |
||
396 |
bool HWMapContainer::getCurrentIsMission() const |
|
397 |
{ |
|
398 |
if(!chooseMap->currentIndex()) return false; |
|
399 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[3].toBool(); |
|
1790 | 400 |
} |
401 |
||
402 |
int HWMapContainer::getCurrentHHLimit() const |
|
403 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
404 |
return hhLimit; |
249 | 405 |
} |
406 |
||
4513
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
407 |
QString HWMapContainer::getCurrentScheme() const |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
408 |
{ |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
409 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[4].toString(); |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
410 |
} |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
411 |
|
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
412 |
QString HWMapContainer::getCurrentWeapons() const |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
413 |
{ |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
414 |
return chooseMap->itemData(chooseMap->currentIndex()).toList()[5].toString(); |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
415 |
} |
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
416 |
|
1802 | 417 |
quint32 HWMapContainer::getTemplateFilter() const |
418 |
{ |
|
4941 | 419 |
return cbTemplateFilter->itemData(cbTemplateFilter->currentIndex()).toInt(); |
1802 | 420 |
} |
421 |
||
184 | 422 |
void HWMapContainer::resizeEvent ( QResizeEvent * event ) |
423 |
{ |
|
4560
5d6c7f88db73
- Some work on drawMap widget and scene to allow undo, clear, save and load operations
unc0rr
parents:
4557
diff
changeset
|
424 |
Q_UNUSED(event); |
184 | 425 |
//imageButt->setIconSize(imageButt->size()); |
426 |
} |
|
320 | 427 |
|
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
428 |
void HWMapContainer::intSetSeed(const QString & seed) |
320 | 429 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
430 |
m_seed = seed; |
4519 | 431 |
if (seed != seedEdit->text()) |
432 |
seedEdit->setText(seed); |
|
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
433 |
} |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
434 |
|
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
435 |
void HWMapContainer::setSeed(const QString & seed) |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
436 |
{ |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
437 |
intSetSeed(seed); |
4562 | 438 |
if (chooseMap->currentIndex() < MAPGEN_MAP) |
439 |
updatePreview(); |
|
320 | 440 |
} |
441 |
||
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
442 |
void HWMapContainer::intSetMap(const QString & map) |
320 | 443 |
{ |
3008 | 444 |
int id = 0; |
445 |
for(int i = 0; i < chooseMap->count(); i++) |
|
3195 | 446 |
if(!chooseMap->itemData(i).isNull() && chooseMap->itemData(i).toList()[0].toString() == map) |
3008 | 447 |
{ |
448 |
id = i; |
|
449 |
break; |
|
450 |
} |
|
451 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
452 |
if(id > 0) { |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
453 |
if (pMap) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
454 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
455 |
disconnect(pMap, 0, this, SLOT(setImage(const QImage))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
456 |
disconnect(pMap, 0, this, SLOT(setHHLimit(int))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
457 |
pMap = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
458 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
459 |
chooseMap->setCurrentIndex(id); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
460 |
} |
320 | 461 |
} |
462 |
||
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
463 |
void HWMapContainer::setMap(const QString &map) |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
464 |
{ |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
465 |
intSetMap(map); |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
466 |
updatePreview(); |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
467 |
} |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
468 |
|
320 | 469 |
void HWMapContainer::setTheme(const QString & theme) |
470 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
471 |
QList<QListWidgetItem *> items = lwThemes->findItems(theme, Qt::MatchExactly); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
472 |
if(items.size()) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
473 |
lwThemes->setCurrentItem(items.at(0)); |
320 | 474 |
} |
4562 | 475 |
|
4337 | 476 |
void HWMapContainer::setRandomMap() |
477 |
{ |
|
4419 | 478 |
setRandomSeed(); |
4337 | 479 |
switch(chooseMap->currentIndex()) |
480 |
{ |
|
481 |
case MAPGEN_REGULAR: |
|
482 |
case MAPGEN_MAZE: |
|
4511 | 483 |
setRandomTheme(); |
484 |
break; |
|
4487 | 485 |
case MAPGEN_DRAWN: |
4511 | 486 |
emit drawMapRequested(); |
4337 | 487 |
break; |
488 |
default: |
|
4566 | 489 |
if(chooseMap->currentIndex() <= numMissions + MAPGEN_MAP + 1) |
4337 | 490 |
setRandomMission(); |
491 |
else |
|
492 |
setRandomStatic(); |
|
493 |
break; |
|
494 |
} |
|
495 |
} |
|
496 |
||
497 |
void HWMapContainer::setRandomStatic() |
|
498 |
{ |
|
4566 | 499 |
int i = MAPGEN_MAP + 3 + numMissions + rand() % (chooseMap->count() - MAPGEN_MAP - 3 - numMissions); |
500 |
chooseMap->setCurrentIndex(i); |
|
4419 | 501 |
setRandomSeed(); |
4337 | 502 |
} |
503 |
||
504 |
void HWMapContainer::setRandomMission() |
|
505 |
{ |
|
4566 | 506 |
int i = MAPGEN_MAP + 2 + rand() % numMissions; |
507 |
qDebug() << i << MAPGEN_MAP << numMissions; |
|
508 |
chooseMap->setCurrentIndex(i); |
|
4419 | 509 |
setRandomSeed(); |
4337 | 510 |
} |
320 | 511 |
|
512 |
void HWMapContainer::setRandomSeed() |
|
513 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
514 |
m_seed = QUuid::createUuid().toString(); |
4519 | 515 |
seedEdit->setText(m_seed); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
516 |
emit seedChanged(m_seed); |
4562 | 517 |
if (chooseMap->currentIndex() < MAPGEN_MAP) |
4563 | 518 |
updatePreview(); |
320 | 519 |
} |
1318 | 520 |
|
521 |
void HWMapContainer::setRandomTheme() |
|
522 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
523 |
if(!Themes->size()) return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
524 |
quint32 themeNum = rand() % Themes->size(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2377
diff
changeset
|
525 |
lwThemes->setCurrentRow(themeNum); |
1318 | 526 |
} |
1797 | 527 |
|
4941 | 528 |
void HWMapContainer::intSetTemplateFilter(int filter) |
529 |
{ |
|
530 |
cbTemplateFilter->setCurrentIndex(filter); |
|
531 |
emit newTemplateFilter(filter); |
|
532 |
} |
|
533 |
||
1797 | 534 |
void HWMapContainer::setTemplateFilter(int filter) |
535 |
{ |
|
4941 | 536 |
intSetTemplateFilter(filter); |
4562 | 537 |
updatePreview(); |
1802 | 538 |
} |
539 |
||
3133 | 540 |
MapGenerator HWMapContainer::get_mapgen(void) const |
541 |
{ |
|
542 |
return mapgen; |
|
543 |
} |
|
544 |
||
4941 | 545 |
int HWMapContainer::getMazeSize(void) const |
3133 | 546 |
{ |
4941 | 547 |
return cbMazeSize->currentIndex(); |
3133 | 548 |
} |
549 |
||
4941 | 550 |
void HWMapContainer::intSetMazeSize(int size) |
3133 | 551 |
{ |
4941 | 552 |
cbMazeSize->setCurrentIndex(size); |
553 |
emit mazeSizeChanged(size); |
|
554 |
} |
|
555 |
||
556 |
void HWMapContainer::setMazeSize(int size) |
|
557 |
{ |
|
558 |
intSetMazeSize(size); |
|
4562 | 559 |
updatePreview(); |
3133 | 560 |
} |
561 |
||
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
562 |
void HWMapContainer::intSetMapgen(MapGenerator m) |
3133 | 563 |
{ |
564 |
mapgen = m; |
|
4562 | 565 |
chooseMap->setCurrentIndex(m); |
3133 | 566 |
emit mapgenChanged(m); |
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
567 |
} |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
568 |
|
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
569 |
void HWMapContainer::setMapgen(MapGenerator m) |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
570 |
{ |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
571 |
intSetMapgen(m); |
4562 | 572 |
updatePreview(); |
3133 | 573 |
} |
4489 | 574 |
|
4537 | 575 |
void HWMapContainer::setDrawnMapData(const QByteArray & ar) |
576 |
{ |
|
577 |
drawMapScene.decode(ar); |
|
4562 | 578 |
updatePreview(); |
4537 | 579 |
} |
580 |
||
4489 | 581 |
QByteArray HWMapContainer::getDrawnMapData() |
582 |
{ |
|
4520
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
583 |
return drawMapScene.encode(); |
4513
1dd97c710f5a
added general scripts to multiplayer and added option for scripts to allow user set schemes or weapon sets.
Henek
parents:
4511
diff
changeset
|
584 |
} |
4519 | 585 |
|
4550
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
586 |
void HWMapContainer::seedEdited() |
4519 | 587 |
{ |
4699 | 588 |
if (seedLabel->isVisible() == false ) |
589 |
{ |
|
590 |
seedLabel->setVisible(true); |
|
591 |
seedEdit->setVisible(true); |
|
592 |
seedSet->setText(tr("Set")); |
|
593 |
return; |
|
594 |
} |
|
595 |
||
4557
4004bef2aa9d
fix layout in game config widget as per nemo's request
Henek
parents:
4550
diff
changeset
|
596 |
if (seedEdit->text().isEmpty()) |
4519 | 597 |
seedEdit->setText(m_seed); |
598 |
else |
|
599 |
{ |
|
4550
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
600 |
setSeed(seedEdit->text()); |
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
601 |
emit seedChanged(seedEdit->text()); |
4519 | 602 |
} |
603 |
} |
|
4520
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
604 |
|
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
605 |
DrawMapScene * HWMapContainer::getDrawMapScene() |
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
606 |
{ |
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
607 |
return &drawMapScene; |
e7882bd1a894
Allow to draw maps in frontend and play them (only locally, some bugs to fix)
unc0rr
parents:
4519
diff
changeset
|
608 |
} |
4525 | 609 |
|
610 |
void HWMapContainer::mapDrawingFinished() |
|
611 |
{ |
|
4526 | 612 |
emit drawnMapChanged(getDrawnMapData()); |
4525 | 613 |
|
4562 | 614 |
updatePreview(); |
4550
d300ea498486
added set button to seed edit so maps won't regenerate as often
Henek
parents:
4537
diff
changeset
|
615 |
} |
4562 | 616 |
|
617 |
void HWMapContainer::updatePreview() |
|
618 |
{ |
|
4563 | 619 |
int curIndex = chooseMap->currentIndex(); |
620 |
||
621 |
switch(curIndex) |
|
4562 | 622 |
{ |
623 |
case MAPGEN_REGULAR: |
|
624 |
askForGeneratedPreview(); |
|
625 |
break; |
|
626 |
case MAPGEN_MAZE: |
|
627 |
askForGeneratedPreview(); |
|
628 |
break; |
|
629 |
case MAPGEN_DRAWN: |
|
630 |
askForGeneratedPreview(); |
|
631 |
break; |
|
632 |
default: |
|
633 |
QPixmap mapImage; |
|
4563 | 634 |
qDebug() << "Map data" << curIndex << chooseMap->currentText() << chooseMap->itemData(curIndex); |
4562 | 635 |
if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->itemData(curIndex).toList()[0].toString() + "/preview.png")) { |
636 |
imageButt->setIcon(QIcon()); |
|
637 |
return; |
|
638 |
} |
|
639 |
||
640 |
hhLimit = chooseMap->itemData(curIndex).toList()[2].toInt(); |
|
641 |
addInfoToPreview(mapImage); |
|
642 |
} |
|
643 |
} |
|
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
644 |
|
4941 | 645 |
void HWMapContainer::setAllMapParameters(const QString &map, MapGenerator m, int mazesize, const QString &seed, int tmpl) |
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
646 |
{ |
4941 | 647 |
intSetMap(map); |
648 |
intSetMapgen(m); |
|
649 |
intSetMazeSize(mazesize); |
|
650 |
intSetSeed(seed); |
|
651 |
intSetTemplateFilter(tmpl); |
|
4936
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
652 |
|
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
653 |
updatePreview(); |
d65d438acd23
Merge MAP, MAPGEN and SEED params into one on room join, so engine isn't spawned three times for a preview. Not tested as I'm unable to see my rooms (why?)
unc0rr
parents:
4701
diff
changeset
|
654 |
} |