38 int y = (num-((ammo.height()/32)*x))*32; |
38 int y = (num-((ammo.height()/32)*x))*32; |
39 x*=32; |
39 x*=32; |
40 return ammo.copy(x, y, 32, 32); |
40 return ammo.copy(x, y, 32, 32); |
41 } |
41 } |
42 |
42 |
43 SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent) : |
43 SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QImage imagegrey, QWidget* parent) : |
44 QWidget(parent) |
44 QWidget(parent) |
45 { |
45 { |
46 QHBoxLayout* hbLayout = new QHBoxLayout(this); |
46 QHBoxLayout* hbLayout = new QHBoxLayout(this); |
47 hbLayout->setSpacing(1); |
47 hbLayout->setSpacing(1); |
48 hbLayout->setMargin(1); |
48 hbLayout->setMargin(1); |
51 lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum))); |
51 lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum))); |
52 lbl->setMaximumWidth(30); |
52 lbl->setMaximumWidth(30); |
53 lbl->setGeometry(0, 0, 30, 30); |
53 lbl->setGeometry(0, 0, 30, 30); |
54 hbLayout->addWidget(lbl); |
54 hbLayout->addWidget(lbl); |
55 |
55 |
56 item = new WeaponItem(image, this); |
56 item = new WeaponItem(image, imagegrey, this); |
57 item->setItemsNum(wNum); |
57 item->setItemsNum(wNum); |
58 item->setInfinityState(allowInfinite); |
58 item->setInfinityState(allowInfinite); |
59 hbLayout->addWidget(item); |
59 hbLayout->addWidget(item); |
60 |
60 |
61 hbLayout->setStretchFactor(lbl, 1); |
61 hbLayout->setStretchFactor(lbl, 1); |
122 int j = -1; |
127 int j = -1; |
123 int i = 0, k = 0; |
128 int i = 0, k = 0; |
124 for(; i < m_numItems; ++i) { |
129 for(; i < m_numItems; ++i) { |
125 if (i == 6) continue; |
130 if (i == 6) continue; |
126 if (k % 4 == 0) ++j; |
131 if (k % 4 == 0) ++j; |
127 SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this); |
132 SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this); |
128 weaponItems[i].append(swi); |
133 weaponItems[i].append(swi); |
129 p1Layout->addWidget(swi, j, k % 4); |
134 p1Layout->addWidget(swi, j, k % 4); |
130 |
135 |
131 SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this); |
136 SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), QImage(":/res/ammopicboxgrey.png"), this); |
132 weaponItems[i].append(pwi); |
137 weaponItems[i].append(pwi); |
133 p2Layout->addWidget(pwi, j, k % 4); |
138 p2Layout->addWidget(pwi, j, k % 4); |
134 |
139 |
135 SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this); |
140 SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), QImage(":/res/ammopicdelaygrey.png"), this); |
136 weaponItems[i].append(dwi); |
141 weaponItems[i].append(dwi); |
137 p3Layout->addWidget(dwi, j, k % 4); |
142 p3Layout->addWidget(dwi, j, k % 4); |
138 |
143 |
139 SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this); |
144 SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this); |
140 weaponItems[i].append(awi); |
145 weaponItems[i].append(awi); |
141 p4Layout->addWidget(awi, j, k % 4); |
146 p4Layout->addWidget(awi, j, k % 4); |
142 |
147 |
143 ++k; |
148 ++k; |
144 } |
149 } |
148 pageLayout->addWidget(m_name, i, 0, 1, 5); |
153 pageLayout->addWidget(m_name, i, 0, 1, 5); |
149 } |
154 } |
150 |
155 |
151 void SelWeaponWidget::setWeapons(const QString& ammo) |
156 void SelWeaponWidget::setWeapons(const QString& ammo) |
152 { |
157 { |
|
158 bool enable = true; |
|
159 for(int i = 0; i < cDefaultAmmos.size(); i++) |
|
160 if (!cDefaultAmmos[i].first.compare(m_name->text())) { |
|
161 enable = false; |
|
162 } |
153 for(int i = 0; i < m_numItems; ++i) { |
163 for(int i = 0; i < m_numItems; ++i) { |
154 twi::iterator it = weaponItems.find(i); |
164 twi::iterator it = weaponItems.find(i); |
155 if (it == weaponItems.end()) continue; |
165 if (it == weaponItems.end()) continue; |
156 it.value()[0]->setItemsNum(ammo[i].digitValue()); |
166 it.value()[0]->setItemsNum(ammo[i].digitValue()); |
157 it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue()); |
167 it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue()); |
158 it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue()); |
168 it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue()); |
159 it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue()); |
169 it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue()); |
160 } |
170 it.value()[0]->setEnabled(enable); |
161 update(); |
171 it.value()[1]->setEnabled(enable); |
|
172 it.value()[2]->setEnabled(enable); |
|
173 it.value()[3]->setEnabled(enable); |
|
174 } |
|
175 m_name->setEnabled(enable); |
162 } |
176 } |
163 |
177 |
164 void SelWeaponWidget::setDefault() |
178 void SelWeaponWidget::setDefault() |
165 { |
179 { |
|
180 for(int i = 0; i < cDefaultAmmos.size(); i++) |
|
181 if (!cDefaultAmmos[i].first.compare(m_name->text())) { |
|
182 return; |
|
183 } |
166 setWeapons(*cDefaultAmmoStore); |
184 setWeapons(*cDefaultAmmoStore); |
167 } |
185 } |
168 |
186 |
169 void SelWeaponWidget::save() |
187 void SelWeaponWidget::save() |
170 { |
188 { |
213 |
231 |
214 void SelWeaponWidget::deleteWeaponsName() |
232 void SelWeaponWidget::deleteWeaponsName() |
215 { |
233 { |
216 if (curWeaponsName == "") return; |
234 if (curWeaponsName == "") return; |
217 |
235 |
218 if (curWeaponsName == "Default") { |
236 for(int i = 0; i < cDefaultAmmos.size(); i++) |
219 QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set")); |
237 if (!cDefaultAmmos[i].first.compare(m_name->text())) { |
220 impossible.exec(); |
238 QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first)); |
221 return; |
239 return; |
222 } |
240 } |
223 |
241 |
224 QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel); |
242 QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel); |
225 |
243 |
226 if (reallyDelete.exec() == QMessageBox::Ok) { |
244 if (reallyDelete.exec() == QMessageBox::Ok) { |
227 wconf->remove(curWeaponsName); |
245 wconf->remove(curWeaponsName); |
228 emit weaponsDeleted(); |
246 emit weaponsDeleted(); |
229 } |
247 } |
230 } |
248 } |
231 |
249 |
|
250 void SelWeaponWidget::newWeaponsName() |
|
251 { |
|
252 setWeaponsName(tr("new")); |
|
253 } |
|
254 |
232 void SelWeaponWidget::setWeaponsName(const QString& name) |
255 void SelWeaponWidget::setWeaponsName(const QString& name) |
233 { |
256 { |
|
257 m_name->setText(name); |
|
258 |
|
259 curWeaponsName = name; |
|
260 |
234 if(name != "" && wconf->contains(name)) { |
261 if(name != "" && wconf->contains(name)) { |
235 setWeapons(wconf->value(name).toString()); |
262 setWeapons(wconf->value(name).toString()); |
236 } |
263 } else { |
237 |
264 setWeapons(*cDefaultAmmoStore); |
238 curWeaponsName = name; |
265 } |
239 |
|
240 m_name->setText(name); |
|
241 } |
266 } |
242 |
267 |
243 QStringList SelWeaponWidget::getWeaponNames() const |
268 QStringList SelWeaponWidget::getWeaponNames() const |
244 { |
269 { |
245 return wconf->allKeys(); |
270 return wconf->allKeys(); |
246 } |
271 } |
|
272 |
|
273 void SelWeaponWidget::copy() |
|
274 { |
|
275 QString ammo = getWeaponsString(curWeaponsName); |
|
276 setWeaponsName(tr("copy of") + " " + curWeaponsName); |
|
277 setWeapons(ammo); |
|
278 } |