Adjust "sticky" fire (molotov) so it makes better fire pits, by making the kicks more regular, yet of random left/right. Tweak napalm slightly along same lines. Probably needs more balancing.
+ − #include <QGridLayout>
+ − #include <QImage>
+ − #include <QPixmap>
+ − #include <QMessageBox>
+ − #include <QFile>
+ − #include <QTextStream>
+ − #include <QRegExp>
+ − #include <QDebug>
+ − #include "mainform.h"
+ −
+ − MyWindow::MyWindow(QWidget * parent, Qt::WFlags flags)
+ − : QMainWindow(parent, flags)
+ −
+ − {
+ − QWidget * centralWidget = new QWidget(this);
+ − QGridLayout * mainlayout = new QGridLayout(centralWidget);
+ − mainlayout->setMargin(1);
+ − mainlayout->setSpacing(1);
+ −
+ − sa_xy = new QScrollArea(centralWidget);
+ − xy = new PixLabel();
+ − xy->setFixedSize(1024, 512);
+ − sa_xy->setWidget(xy);
+ −
+ − mainlayout->addWidget(sa_xy, 0, 0, 1, 4);
+ −
+ − setCentralWidget(centralWidget);
+ −
+ − buttAdd = new QPushButton(centralWidget);
+ − buttAdd->setText(tr("Add"));
+ − mainlayout->addWidget(buttAdd, 1, 0);
+ −
+ − buttCode = new QPushButton(centralWidget);
+ − buttCode->setText(tr("Code"));
+ − mainlayout->addWidget(buttCode, 1, 1);
+ −
+ − buttSave = new QPushButton(centralWidget);
+ − buttSave->setText(tr("Save"));
+ − mainlayout->addWidget(buttSave, 1, 3);
+ −
+ − buttLoad = new QPushButton(centralWidget);
+ − buttLoad->setText(tr("Load"));
+ − mainlayout->addWidget(buttLoad, 1, 2);
+ −
+ − connect(buttAdd, SIGNAL(clicked()), xy, SLOT(AddRect()));
+ − connect(buttCode, SIGNAL(clicked()), this, SLOT(Code()));
+ − connect(buttSave, SIGNAL(clicked()), this, SLOT(Save()));
+ − connect(buttLoad, SIGNAL(clicked()), this, SLOT(Load()));
+ − }
+ −
+ − void MyWindow::Code()
+ − {
+ − if (xy->rects.size())
+ − {
+ − QFile f("template.pas");
+ − if (!f.open(QIODevice::WriteOnly))
+ − {
+ − QMessageBox::information(this, tr("Error"),
+ − tr("Cannot save"));
+ − return ;
+ − }
+ −
+ − QTextStream stream(&f);
+ − stream << QString("const Template0Points: array[0..%1] of TSDL_Rect =").arg(xy->rects.size() - 1) << endl;
+ − stream << " (" << endl;
+ − for(int i = 0; i < xy->rects.size(); i++)
+ − {
+ − QRect r = xy->rects[i].normalized();
+ − stream << QString(" (x: %1; y: %2; w: %3; h: %4),").
+ − arg(r.x() * 4, 4).arg(r.y() * 4, 4).arg(r.width() * 4, 4).arg(r.height() * 4, 4) << endl;
+ − }
+ − stream << " );" << endl;
+ − f.close();
+ − }
+ − }
+ −
+ − void MyWindow::Save()
+ − {
+ − Code();
+ − }
+ −
+ − void MyWindow::Load()
+ − {
+ − QFile f("template.pas");
+ − if (!f.open(QIODevice::ReadOnly))
+ − {
+ − QMessageBox::information(this, tr("Error"),
+ − tr("Cannot open file"));
+ − return ;
+ − }
+ −
+ − QTextStream stream(&f);
+ − QStringList sl;
+ − while (!stream.atEnd())
+ − {
+ − sl << stream.readLine();
+ − }
+ − xy->rects.clear();
+ − for (int i = 0; i < sl.size(); ++i)
+ − {
+ − QRegExp re("x:\\s+(\\d+);\\sy:\\s+(\\d+);\\sw:\\s+(\\d+);\\sh:\\s+(\\d+)");
+ − re.indexIn(sl.at(i));
+ − QStringList coords = re.capturedTexts();
+ − qDebug() << sl.at(i) << coords;
+ − if ((coords.size() == 5) && (coords[0].size()))
+ − xy->rects.push_back(QRect(coords[1].toInt() / 4, coords[2].toInt() / 4, coords[3].toInt() / 4, coords[4].toInt() / 4));
+ − }
+ − f.close();
+ − xy->repaint();
+ − }