Grid the landscape, and shortcircuit checks on the collision array if there are no nearby checked in collisions to be collided with. This is a big win for fire's ammoshove in particular. Also add a +2 that seemed missing in the check, and update fire accordingly.
/*
* Hedgewars, a free turn based strategy game
* Copyright (c) 2007-2010 Andrey Korotaev <unC0Rr@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include "hwconsts.h"
QString * cProtoVer = new QString("${HEDGEWARS_PROTO_VER}");
QString * cDataDir = new QString("${HEDGEWARS_DATADIR}");
QString * cConfigDir = new QString("");
QString * cVersionString = new QString("${HEDGEWARS_VERSION}");
QDir * bindir = new QDir("${HEDGEWARS_BINDIR}");
QDir * cfgdir = new QDir();
QDir * datadir = new QDir();
QStringList * Themes;
QStringList * mapList;
QString * cDefaultAmmoStore = new QString(
"9391929422199121032235111001201000000211110111"
"0405040541600655546554464776576666666155510111"
"0000000000000205500000040007004000000000200000"
"1311110312111111123114111111111111111211111111"
);
int cAmmoNumber = cDefaultAmmoStore->size() / 4;
QList< QPair<QString, QString> > cDefaultAmmos =
QList< QPair<QString, QString> >()
<< qMakePair(QString("Default"), *cDefaultAmmoStore)
<< qMakePair(QString("Crazy"), QString(
"9999999999999999992999999999999999299999999999" // TODO: Remove Piano's unlimited uses!
"1111110111111111111111111111111111111111111111"
"0000000000000000000000000000000000000000000000"
"1311110312111111123114111111111111111211110101"))
<< qMakePair(QString("Pro mode"), QString(
"9090009000000000000009000000000000000000000900"
"0000000000000000000000000000000000000000000000"
"0000000000000205500000040007004000000000200000"
"1111111111111111111111111111111111111111100111"))
<< qMakePair(QString("Shoppa"), QString(
"0000009900000000000000000000000000000000000000"
"4444410044244402210112121222422000000002000400"
"0000000000000000000000000000000000000000000000"
"1111111111111111111111111111111111111111101111"))
<< qMakePair(QString("Basketball"),QString(
"0000009000000900000000000000000000000000000000"
"0000000000000000000000000000000000000000000000"
"0000000000000005500000040007004000000000200000"
"1111111111111111111111111111111111111111111111"))
<< qMakePair(QString("Minefield"), QString(
"0000009900090000000300000000000000000000000000"
"0000000000000000000000000000000000000000000000"
"0000000000000205500000040007004000000000200000"
"1111111111111111111111111111111111111111111111"))
;
QColor * color1 = new QColor(221, 0, 0);
QColor * color2 = new QColor( 67, 118, 233);
QColor * color3 = new QColor( 62, 147, 33);
QColor * color4 = new QColor(162, 61, 187);
QColor * color5 = new QColor(255, 147, 41);
QColor * color6 = new QColor(115, 115, 115);
QString * netHost = new QString();
quint16 netPort = 46631;
bool haveServer = ${HAVE_NETSERVER};
bool isDevBuild = ${HW_DEV};