# HG changeset patch
# User nemo
# Date 1267070666 0
# Node ID 13a53315ae1879e0db201e716fa83bb284e2a4e0
# Parent d44ae883896b93098291e6acf94a56444dd96125
Awesome patch from TheException - adds editing of weapon delay and crate count. Tiy might want to tweak the crate graphic, could make be smaller or less overlappy.
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/hedgewars.qrc
--- a/QTfrontend/hedgewars.qrc Wed Feb 24 16:41:35 2010 +0000
+++ b/QTfrontend/hedgewars.qrc Thu Feb 25 04:04:26 2010 +0000
@@ -79,5 +79,7 @@
res/chat_default_off.png
res/chat_ignore_off.png
res/chat_friend_off.png
+ res/ammopicbox.png
+ res/ammopicdelay.png
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/hwconsts.cpp.in
--- a/QTfrontend/hwconsts.cpp.in Wed Feb 24 16:41:35 2010 +0000
+++ b/QTfrontend/hwconsts.cpp.in Thu Feb 25 04:04:26 2010 +0000
@@ -33,27 +33,39 @@
QString * cDefaultAmmoStore = new QString(
"9391929422199121032235111001201000000211"
"0404000441400444645644444774776112211144"
+ "0000000000000205500000040007004000000000"
+ "1311111312111111123114111111111111111211"
);
-int cAmmoNumber = cDefaultAmmoStore->size() / 2;
+int cAmmoNumber = cDefaultAmmoStore->size() / 4;
QList< QPair > cDefaultAmmos =
QList< QPair >()
<< qMakePair(QString("Default"), *cDefaultAmmoStore)
<< qMakePair(QString("Crazy"), QString(
"9999999999999999992999999999999999299999"
- "1111111111111111111111111111111111111111"))
+ "1111111111111111111111111111111111111111"
+ "0000000000000205500000040007004000000000"
+ "1311111312111111123114111111111111111211"))
<< qMakePair(QString("Pro mode"), QString(
"9090009000000000000009000000000000000000"
- "0000000000000000000000000000000000000000"))
+ "0000000000000000000000000000000000000000"
+ "0000000000000205500000040007004000000000"
+ "1111111111111111111111111111111111111111"))
<< qMakePair(QString("Shoppa"), QString(
"0000009900000000000000000000000000000000"
- "4444410044244402210112121222422000000002"))
+ "4444410044244402210112121222422000000002"
+ "0000000000000205500000040007004000000000"
+ "1111111111111111111111111111111111111111"))
<< qMakePair(QString("Basketball"),QString(
"0000009000000900000000000000000000000000"
- "0000000000000000000000000000000000000000"))
+ "0000000000000000000000000000000000000000"
+ "0000000000000005500000040007004000000000"
+ "1111111111111111111111111111111111111111"))
<< qMakePair(QString("Minefield"), QString(
"0000009900090000000300000000000000000000"
- "0000000000000000000000000000000000000000"))
+ "0000000000000000000000000000000000000000"
+ "0000000000000205500000040007004000000000"
+ "1111111111111111111111111111111111111111"))
;
QColor * color1 = new QColor(221, 0, 0);
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/res/ammopicbox.png
Binary file QTfrontend/res/ammopicbox.png has changed
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/res/ammopicdelay.png
Binary file QTfrontend/res/ammopicdelay.png has changed
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/selectWeapon.cpp
--- a/QTfrontend/selectWeapon.cpp Wed Feb 24 16:41:35 2010 +0000
+++ b/QTfrontend/selectWeapon.cpp Thu Feb 25 04:04:26 2010 +0000
@@ -40,7 +40,7 @@
return ammo.copy(x, y, 32, 32);
}
-SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QWidget* parent) :
+SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent) :
QWidget(parent)
{
QHBoxLayout* hbLayout = new QHBoxLayout(this);
@@ -53,7 +53,7 @@
lbl->setGeometry(0, 0, 30, 30);
hbLayout->addWidget(lbl);
- item = new WeaponItem(QImage(":/res/ammopic.png"), this);
+ item = new WeaponItem(image, this);
item->setItemsNum(wNum);
item->setInfinityState(allowInfinite);
hbLayout->addWidget(item);
@@ -101,9 +101,19 @@
p2Layout = new QGridLayout(page2);
p2Layout->setSpacing(1);
p2Layout->setMargin(1);
+ QWidget * page3 = new QWidget(this);
+ p3Layout = new QGridLayout(page3);
+ p3Layout->setSpacing(1);
+ p3Layout->setMargin(1);
+ QWidget * page4 = new QWidget(this);
+ p4Layout = new QGridLayout(page4);
+ p4Layout->setSpacing(1);
+ p4Layout->setMargin(1);
tbw->addTab(page1, tr("Weapon set"));
tbw->addTab(page2, tr("Probabilities"));
+ tbw->addTab(page4, tr("Ammo in boxes"));
+ tbw->addTab(page3, tr("Delays"));
QGridLayout * pageLayout = new QGridLayout(this);
pageLayout->addWidget(tbw);
@@ -114,13 +124,21 @@
for(; i < m_numItems; ++i) {
if (i == 6) continue;
if (k % 4 == 0) ++j;
- SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), this);
+ SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this);
weaponItems[i].append(swi);
p1Layout->addWidget(swi, j, k % 4);
- SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), this);
+ SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this);
weaponItems[i].append(pwi);
p2Layout->addWidget(pwi, j, k % 4);
+
+ SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this);
+ weaponItems[i].append(dwi);
+ p3Layout->addWidget(dwi, j, k % 4);
+
+ SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this);
+ weaponItems[i].append(awi);
+ p4Layout->addWidget(awi, j, k % 4);
++k;
}
@@ -137,6 +155,8 @@
if (it == weaponItems.end()) continue;
it.value()[0]->setItemsNum(ammo[i].digitValue());
it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
+ it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
+ it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue());
}
update();
}
@@ -158,6 +178,8 @@
QString state1;
QString state2;
+ QString state3;
+ QString state4;
for(int i = 0; i < m_numItems; ++i) {
twi::const_iterator it = weaponItems.find(i);
@@ -165,12 +187,16 @@
state1.append(QString::number(num));
int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
state2.append(QString::number(prob));
+ int del = it == weaponItems.end() ? 0 : it.value()[2]->getItemsNum();
+ state3.append(QString::number(del));
+ int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
+ state4.append(QString::number(am));
}
if (curWeaponsName != "") {
// remove old entry
wconf->remove(curWeaponsName);
}
- wconf->setValue(m_name->text(), state1 + state2);
+ wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
emit weaponsChanged();
}
diff -r d44ae883896b -r 13a53315ae18 QTfrontend/selectWeapon.h
--- a/QTfrontend/selectWeapon.h Wed Feb 24 16:41:35 2010 +0000
+++ b/QTfrontend/selectWeapon.h Thu Feb 25 04:04:26 2010 +0000
@@ -33,7 +33,7 @@
Q_OBJECT
public:
- SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QWidget* parent=0);
+ SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent=0);
unsigned char getItemsNum() const;
void setItemsNum(const unsigned char num);
@@ -77,6 +77,8 @@
twi weaponItems;
QGridLayout* p1Layout;
QGridLayout* p2Layout;
+ QGridLayout* p3Layout;
+ QGridLayout* p4Layout;
};
#endif // _SELECT_WEAPON_INCLUDED
diff -r d44ae883896b -r 13a53315ae18 hedgewars/uAmmos.pas
--- a/hedgewars/uAmmos.pas Wed Feb 24 16:41:35 2010 +0000
+++ b/hedgewars/uAmmos.pas Thu Feb 25 04:04:26 2010 +0000
@@ -88,7 +88,7 @@
ammos: TAmmoCounts;
substr: shortstring; // TEMPORARY
begin
-TryDo(byte(s[0]) = byte(ord(High(TAmmoType))) * 2, 'Invalid ammo scheme (incompatible frontend)', true);
+TryDo(byte(s[0]) = byte(ord(High(TAmmoType))) * 4, 'Invalid ammo scheme (incompatible frontend)', true);
// FIXME - TEMPORARY hardcoded check on shoppa pending creation of crate *type* probability editor
substr:= Copy(s,1,15);
@@ -106,6 +106,8 @@
if a <> amNothing then
begin
Ammoz[a].Probability:= probability[byte(s[ord(a) + ord(High(TAmmoType))]) - byte('0')];
+ Ammoz[a].SkipTurns:= (byte(s[ord(a) + ord(High(TAmmoType)) + ord(High(TAmmoType))]) - byte('0'));
+ Ammoz[a].NumberInCase:= (byte(s[ord(a) + ord(High(TAmmoType)) + ord(High(TAmmoType)) + ord(High(TAmmoType))]) - byte('0'));
if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0;
cnt:= byte(s[ord(a)]) - byte('0');
// avoid things we already have infinite number
@@ -114,6 +116,8 @@
cnt:= AMMO_INFINITE;
Ammoz[a].Probability:= 0
end;
+ if Ammoz[a].NumberInCase = 0 then Ammoz[a].Probability:= 0;
+
// avoid things we already have by scheme
// merge this into DisableSomeWeapons ?
if ((a = amLowGravity) and ((GameFlags and gfLowGravity) <> 0)) or
@@ -125,7 +129,6 @@
Ammoz[a].Probability:= 0
end;
ammos[a]:= cnt;
- if shoppa then Ammoz[a].NumberInCase:= 1; // FIXME - TEMPORARY remove when crate number in case editor is added
if ((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0) and (Ammoz[a].SkipTurns = 0) and (a <> amTeleport) and (a <> amSkip) then
Ammoz[a].SkipTurns:= 1;
diff -r d44ae883896b -r 13a53315ae18 hedgewars/uGears.pas
--- a/hedgewars/uGears.pas Wed Feb 24 16:41:35 2010 +0000
+++ b/hedgewars/uGears.pas Thu Feb 25 04:04:26 2010 +0000
@@ -1969,7 +1969,7 @@
FollowGear:= nil;
-if shoppa then // FIXME - TEMPORARY REMOVE WHEN CRATE PROBABILITY IS ADDED
+if shoppa then // FIXME - TEMPORARY REMOVE WHEN CRATE PROBABILITY IS ADDED, INCLUDING DISABLING OF HEALTH CRATES
t:= 7
else
t:= getrandom(20);