# HG changeset patch # User unc0rr # Date 1256473187 0 # Node ID f8da275981e563d2832c7c09f9f5f515071ddd73 # Parent e16668bac20ff7cc30f99876535e0f971f0ff104 Partially implement loading mission options diff -r e16668bac20f -r f8da275981e5 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Sun Oct 25 10:39:12 2009 +0000 +++ b/hedgewars/uConsts.pas Sun Oct 25 12:19:47 2009 +0000 @@ -265,7 +265,7 @@ gfVampiric = $00000200; gfKarma = $00000400; gfArtillery = $00000800; - gfOneClanMode = $10000000; + gfOneClanMode = $00001000; gstDrowning = $00000001; gstHHDriven = $00000002; diff -r e16668bac20f -r f8da275981e5 tools/MissionsEditor/editor.cpp --- a/tools/MissionsEditor/editor.cpp Sun Oct 25 10:39:12 2009 +0000 +++ b/tools/MissionsEditor/editor.cpp Sun Oct 25 12:19:47 2009 +0000 @@ -1,3 +1,4 @@ +#include #include "editor.h" #include "ui_editor.h" @@ -5,9 +6,72 @@ : QMainWindow(parent), ui(new Ui::editor) { ui->setupUi(this); + + cbFlags + << ui->cbForts + << ui->cbMultiWeapon + << ui->cbSolidLand + << ui->cbBorder + << ui->cbDivideTeams + << ui->cbLowGravity + << ui->cbLaserSight + << ui->cbInvulnerable + << ui->cbMines + << ui->cbVampiric + << ui->cbKarma + << ui->cbArtillery + << ui->cbOneClanMode + ; } editor::~editor() { delete ui; } + +void editor::on_actionLoad_triggered() +{ + QString fileName = QFileDialog::getOpenFileName(this, QString(), QString(), "Missions (*.txt)"); + + if(!fileName.isEmpty()) + load(fileName); +} + +void editor::load(const QString & fileName) +{ + QFile file(fileName); + + if(!file.open(QIODevice::ReadOnly)) + { + QMessageBox::warning(this, "File error", "No such file"); + return ; + } + + QTextStream stream(&file); + + while(!stream.atEnd()) + { + QString line = stream.readLine(); + if (line.startsWith("seed")) + ui->leSeed->setText(line.mid(5)); + else + if (line.startsWith("$turntime")) + ui->sbTurnTime->setValue(line.mid(10).toInt()); + else + if (line.startsWith("$casefreq")) + ui->sbCrateDrops->setValue(line.mid(10).toInt()); + else + if (line.startsWith("$damagepct")) + ui->sbDamageModifier->setValue(line.mid(11).toInt()); + else + if (line.startsWith("$gmflags")) + { + quint32 flags = line.mid(9).toInt(); + foreach(QCheckBox * cb, cbFlags) + { + cb->setChecked(flags & 1); + flags >>= 1; + } + } + } +} diff -r e16668bac20f -r f8da275981e5 tools/MissionsEditor/editor.h --- a/tools/MissionsEditor/editor.h Sun Oct 25 10:39:12 2009 +0000 +++ b/tools/MissionsEditor/editor.h Sun Oct 25 12:19:47 2009 +0000 @@ -8,6 +8,8 @@ class editor; } +class QCheckBox; + class editor : public QMainWindow { Q_OBJECT @@ -18,6 +20,12 @@ private: Ui::editor *ui; + QList cbFlags; + + void load(const QString & fileName); + +private slots: + void on_actionLoad_triggered(); }; #endif // EDITOR_H diff -r e16668bac20f -r f8da275981e5 tools/MissionsEditor/editor.ui --- a/tools/MissionsEditor/editor.ui Sun Oct 25 10:39:12 2009 +0000 +++ b/tools/MissionsEditor/editor.ui Sun Oct 25 12:19:47 2009 +0000 @@ -18,8 +18,35 @@ - 0 + 1 + + + Mission + + + + + + Name + + + + + + + + + + Description + + + + + + + + Options @@ -232,6 +259,11 @@ + + + Teams + + Triggers @@ -254,25 +286,25 @@ &File - - + + - + - + &Load... - + &Save - + &Quit