QTfrontend/selectWeapon.cpp
author smxx
Wed, 10 Feb 2010 00:55:40 +0000
changeset 2786 85f6425a4d74
parent 2471 1cfc9f897616
child 2860 13a53315ae18
permissions -rw-r--r--
Engine: * Added LUA scripting support for trainings (and maybe soon) scenarios/missions * Converted Shotgun and Bazooka Training to LUA * New dependency: LUA 5.1 * New Mission Objectives window * Extended default keybinds for non-iPhone builds * NOTE: Script function names etc. might change soon so don't work too hard on your own missions (for now)! This is experimental! Frontend: * Added support for new training maps/LUA scripts
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1004
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 725
diff changeset
     3
 * Copyright (c) 2006-2008 Ulyanov Igor <iulyanov@gmail.com>
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     4
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     8
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    12
 * GNU General Public License for more details.
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    13
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    14
 * You should have received a copy of the GNU General Public License
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    15
 * along with this program; if not, write to the Free Software
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    17
 */
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    18
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    19
#include "selectWeapon.h"
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    20
#include "weaponItem.h"
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
    21
#include "hwconsts.h"
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    22
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    23
#include <QPushButton>
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    24
#include <QGridLayout>
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    25
#include <QHBoxLayout>
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    26
#include <QLabel>
630
38338573e09a mask applied
displacer
parents: 629
diff changeset
    27
#include <QBitmap>
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
    28
#include <QLineEdit>
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
    29
#include <QSettings>
724
21706280d913 delete weapon set should work fine now
displacer
parents: 723
diff changeset
    30
#include <QMessageBox>
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    31
#include <QTabWidget>
2467
be6690c337fb offset for multi-column ammo image
nemo
parents: 2377
diff changeset
    32
#include <math.h>
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    33
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    34
QImage getAmmoImage(int num)
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    35
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    36
	static QImage ammo(":Ammos.png");
2471
1cfc9f897616 properly do offsets into mult-column ammo image (forgot y)
nemo
parents: 2467
diff changeset
    37
    int x = floor(num/(ammo.height()/32));
1cfc9f897616 properly do offsets into mult-column ammo image (forgot y)
nemo
parents: 2467
diff changeset
    38
    int y = (num-((ammo.height()/32)*x))*32;
1cfc9f897616 properly do offsets into mult-column ammo image (forgot y)
nemo
parents: 2467
diff changeset
    39
    x*=32;
1cfc9f897616 properly do offsets into mult-column ammo image (forgot y)
nemo
parents: 2467
diff changeset
    40
	return ammo.copy(x, y, 32, 32);
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    41
}
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    42
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    43
SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QWidget* parent) :
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    44
	QWidget(parent)
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    45
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    46
	QHBoxLayout* hbLayout = new QHBoxLayout(this);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    47
	hbLayout->setSpacing(1);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    48
	hbLayout->setMargin(1);
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
    49
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    50
	QLabel* lbl = new QLabel(this);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    51
	lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum)));
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    52
	lbl->setMaximumWidth(30);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    53
	lbl->setGeometry(0, 0, 30, 30);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    54
	hbLayout->addWidget(lbl);
639
69d7ff3ab6f0 some layout tune
displacer
parents: 631
diff changeset
    55
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    56
	item = new WeaponItem(QImage(":/res/ammopic.png"), this);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    57
	item->setItemsNum(wNum);
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    58
	item->setInfinityState(allowInfinite);
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    59
	hbLayout->addWidget(item);
639
69d7ff3ab6f0 some layout tune
displacer
parents: 631
diff changeset
    60
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    61
	hbLayout->setStretchFactor(lbl, 1);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    62
	hbLayout->setStretchFactor(item, 99);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    63
	hbLayout->setAlignment(lbl, Qt::AlignLeft | Qt::AlignVCenter);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    64
	hbLayout->setAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
    65
}
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    66
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    67
void SelWeaponItem::setItemsNum(const unsigned char num)
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    68
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    69
	item->setItemsNum(num);
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    70
}
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    71
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
    72
unsigned char SelWeaponItem::getItemsNum() const
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
    73
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    74
	return item->getItemsNum();
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
    75
}
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
    76
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    77
SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
1904
20348675b015 - Fix warnings in frontend
unc0rr
parents: 1576
diff changeset
    78
  QFrame(parent),
20348675b015 - Fix warnings in frontend
unc0rr
parents: 1576
diff changeset
    79
  m_numItems(numItems)
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
    80
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
    81
	wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
1004
4cbd91296df7 Don't let updated hedgewars version to make errors due to old weapons.ini
unc0rr
parents: 883
diff changeset
    82
1967
213d368a002f Predefine some ammo schemes
unc0rr
parents: 1904
diff changeset
    83
	for(int i = 0; i < cDefaultAmmos.size(); ++i)
213d368a002f Predefine some ammo schemes
unc0rr
parents: 1904
diff changeset
    84
		wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
    85
1576
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    86
	QStringList keys = wconf->allKeys();
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    87
	for(int i = 0; i < keys.size(); i++)
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    88
	{
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    89
		if (wconf->value(keys[i]).toString().size() != cDefaultAmmoStore->size())
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    90
			wconf->remove(keys[i]);
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    91
	}
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    92
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
    93
	QString currentState = *cDefaultAmmoStore;
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
    94
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    95
	QTabWidget * tbw = new QTabWidget(this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    96
	QWidget * page1 = new QWidget(this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    97
	p1Layout = new QGridLayout(page1);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    98
	p1Layout->setSpacing(1);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
    99
	p1Layout->setMargin(1);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   100
	QWidget * page2 = new QWidget(this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   101
	p2Layout = new QGridLayout(page2);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   102
	p2Layout->setSpacing(1);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   103
	p2Layout->setMargin(1);
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   104
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   105
	tbw->addTab(page1, tr("Weapon set"));
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   106
	tbw->addTab(page2, tr("Probabilities"));
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   107
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   108
	QGridLayout * pageLayout = new QGridLayout(this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   109
	pageLayout->addWidget(tbw);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   110
629
fb03a39a10ff more icons at weapon select
displacer
parents: 624
diff changeset
   111
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   112
	int j = -1;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   113
	int i = 0, k = 0;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   114
	for(; i < m_numItems; ++i) {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   115
		if (i == 6) continue;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   116
		if (k % 4 == 0) ++j;
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   117
		SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   118
		weaponItems[i].append(swi);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   119
		p1Layout->addWidget(swi, j, k % 4);
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   120
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   121
		SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), this);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   122
		weaponItems[i].append(pwi);
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   123
		p2Layout->addWidget(pwi, j, k % 4);
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   124
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   125
		++k;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   126
	}
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   127
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   128
	//pLayout->setRowStretch(5, 100);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   129
	m_name = new QLineEdit(this);
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   130
	pageLayout->addWidget(m_name, i, 0, 1, 5);
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 598
diff changeset
   131
}
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
   132
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   133
void SelWeaponWidget::setWeapons(const QString& ammo)
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   134
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   135
	for(int i = 0; i < m_numItems; ++i) {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   136
		twi::iterator it = weaponItems.find(i);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   137
		if (it == weaponItems.end()) continue;
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   138
		it.value()[0]->setItemsNum(ammo[i].digitValue());
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   139
		it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   140
	}
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   141
	update();
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   142
}
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   143
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   144
void SelWeaponWidget::setDefault()
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   145
{
1576
a02353129a41 Check for deprecated ammo schemes at startup and delete them
unc0rr
parents: 1509
diff changeset
   146
	setWeapons(*cDefaultAmmoStore);
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   147
}
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   148
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   149
void SelWeaponWidget::save()
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   150
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   151
	if (m_name->text() == "Default") {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   152
		QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not edit default weapon set"));
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   153
		impossible.exec();
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   154
		return;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   155
	}
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   156
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   157
	if (m_name->text() == "") return;
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   158
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   159
	QString state1;
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   160
	QString state2;
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   161
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   162
	for(int i = 0; i < m_numItems; ++i) {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   163
		twi::const_iterator it = weaponItems.find(i);
2371
a20b6e26044b Fix broken infinite skip turns logic
unc0rr
parents: 2369
diff changeset
   164
		int num = it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum(); // 9 is for 'skip turn'
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   165
		state1.append(QString::number(num));
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   166
		int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   167
		state2.append(QString::number(prob));
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   168
	}
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   169
	if (curWeaponsName != "") {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   170
		// remove old entry
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   171
		wconf->remove(curWeaponsName);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   172
	}
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   173
	wconf->setValue(m_name->text(), state1 + state2);
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   174
	emit weaponsChanged();
683
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   175
}
57d624f71e65 select default and save weapons added
displacer
parents: 682
diff changeset
   176
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
   177
int SelWeaponWidget::operator [] (unsigned int weaponIndex) const
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
   178
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   179
	twi::const_iterator it = weaponItems.find(weaponIndex);
2369
c3eb11f1ab3a Implement probability editor for weapon schemes (engine doesn't support that yet)
unc0rr
parents: 1967
diff changeset
   180
	return it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum();
681
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
   181
}
7a20c50988ec working weapons select
displacer
parents: 644
diff changeset
   182
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   183
QString SelWeaponWidget::getWeaponsString(const QString& name) const
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   184
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   185
	return wconf->value(name).toString();
696
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   186
}
d6f32ed6edc8 working multiplayer weapons combo
displacer
parents: 695
diff changeset
   187
718
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   188
void SelWeaponWidget::deleteWeaponsName()
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   189
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   190
	if (curWeaponsName == "") return;
724
21706280d913 delete weapon set should work fine now
displacer
parents: 723
diff changeset
   191
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   192
	if (curWeaponsName == "Default") {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   193
		QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set"));
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   194
		impossible.exec();
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   195
		return;
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   196
	}
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   197
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   198
	QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
2377
f3fab2b09e0c And in frontend
nemo
parents: 2371
diff changeset
   199
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   200
	if (reallyDelete.exec() == QMessageBox::Ok) {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   201
		wconf->remove(curWeaponsName);
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   202
		emit weaponsDeleted();
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   203
	}
718
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   204
}
f93a38d2c982 delete weapon button added
displacer
parents: 717
diff changeset
   205
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   206
void SelWeaponWidget::setWeaponsName(const QString& name)
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   207
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   208
	if(name != "" && wconf->contains(name)) {
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   209
		setWeapons(wconf->value(name).toString());
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   210
	}
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   211
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   212
	curWeaponsName = name;
717
490dc8bb5b87 edit weapons is really edit now
displacer
parents: 696
diff changeset
   213
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   214
	m_name->setText(name);
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   215
}
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   216
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   217
QStringList SelWeaponWidget::getWeaponNames() const
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   218
{
1509
34f7dd4efe84 Small fixes mixed with formatting changes
unc0rr
parents: 1456
diff changeset
   219
	return wconf->allKeys();
694
436045756181 working save weapons to file
displacer
parents: 683
diff changeset
   220
}