mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-18 17:40:48 +02:00
Editor for map name and description
This commit is contained in:
parent
8e953c223e
commit
49a6422d20
@ -17,6 +17,7 @@ set(editor_SRCS
|
||||
objectbrowser.cpp
|
||||
inspector.cpp
|
||||
mapsettings.cpp
|
||||
playersettings.cpp
|
||||
)
|
||||
|
||||
set(editor_HEADERS
|
||||
@ -37,6 +38,7 @@ set(editor_HEADERS
|
||||
objectbrowser.h
|
||||
inspector.h
|
||||
mapsettings.h
|
||||
playersettings.h
|
||||
)
|
||||
|
||||
set(editor_FORMS
|
||||
@ -44,6 +46,7 @@ set(editor_FORMS
|
||||
windownewmap.ui
|
||||
generatorprogress.ui
|
||||
mapsettings.ui
|
||||
playersettings.ui
|
||||
)
|
||||
|
||||
assign_source_group(${editor_SRCS} ${editor_HEADERS} VCMI_launcher.rc)
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "windownewmap.h"
|
||||
#include "objectbrowser.h"
|
||||
#include "inspector.h"
|
||||
#include "mapsettings.h"
|
||||
|
||||
static CBasicLogConfigurator * logConfig;
|
||||
|
||||
@ -203,6 +204,9 @@ void MainWindow::setMap(bool isNew)
|
||||
|
||||
mapLevel = 0;
|
||||
ui->mapView->setScene(scenes[mapLevel]);
|
||||
|
||||
//enable settings
|
||||
ui->actionMapSettings->setEnabled(true);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionOpen_triggered()
|
||||
@ -822,3 +826,8 @@ void MainWindow::on_inspectorWidget_itemChanged(QTableWidgetItem *item)
|
||||
inspector.setProperty(param, item->text());
|
||||
}
|
||||
|
||||
void MainWindow::on_actionMapSettings_triggered()
|
||||
{
|
||||
auto mapSettingsDialog = new MapSettings(this);
|
||||
}
|
||||
|
||||
|
@ -81,6 +81,8 @@ private slots:
|
||||
|
||||
void on_inspectorWidget_itemChanged(QTableWidgetItem *item);
|
||||
|
||||
void on_actionMapSettings_triggered();
|
||||
|
||||
public slots:
|
||||
|
||||
void treeViewSelected(const QModelIndex &selected, const QModelIndex &deselected);
|
||||
|
@ -63,7 +63,14 @@
|
||||
<addaction name="actionSave"/>
|
||||
<addaction name="actionSave_as"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuMap">
|
||||
<property name="title">
|
||||
<string>Map</string>
|
||||
</property>
|
||||
<addaction name="actionMapSettings"/>
|
||||
</widget>
|
||||
<addaction name="menuFile"/>
|
||||
<addaction name="menuMap"/>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="toolBar">
|
||||
<property name="windowTitle">
|
||||
@ -652,6 +659,9 @@
|
||||
<string>Terrains</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
@ -665,7 +675,11 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="terrainLayout"/>
|
||||
<layout class="QVBoxLayout" name="terrainLayout">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -792,6 +806,17 @@
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionMapSettings">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>General</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Map title and description</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
@ -1,14 +1,41 @@
|
||||
#include "mapsettings.h"
|
||||
#include "ui_mapsettings.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
MapSettings::MapSettings(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::MapSettings)
|
||||
MapSettings::MapSettings(MainWindow *parent) :
|
||||
QDialog(static_cast<QWidget*>(parent)),
|
||||
ui(new Ui::MapSettings),
|
||||
main(parent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
assert(main);
|
||||
assert(main->getMap());
|
||||
|
||||
ui->mapNameEdit->setText(QString::fromStdString(main->getMap()->name));
|
||||
ui->mapDescriptionEdit->setPlainText(QString::fromStdString(main->getMap()->description));
|
||||
|
||||
show();
|
||||
|
||||
//ui8 difficulty;
|
||||
//ui8 levelLimit;
|
||||
|
||||
//std::string victoryMessage;
|
||||
//std::string defeatMessage;
|
||||
//ui16 victoryIconIndex;
|
||||
//ui16 defeatIconIndex;
|
||||
|
||||
//std::vector<PlayerInfo> players; /// The default size of the vector is PlayerColor::PLAYER_LIMIT.
|
||||
}
|
||||
|
||||
MapSettings::~MapSettings()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void MapSettings::on_pushButton_clicked()
|
||||
{
|
||||
main->getMap()->name = ui->mapNameEdit->text().toStdString();
|
||||
main->getMap()->description = ui->mapDescriptionEdit->toPlainText().toStdString();
|
||||
close();
|
||||
}
|
||||
|
@ -7,16 +7,21 @@ namespace Ui {
|
||||
class MapSettings;
|
||||
}
|
||||
|
||||
class MainWindow;
|
||||
class MapSettings : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MapSettings(QWidget *parent = nullptr);
|
||||
explicit MapSettings(MainWindow *parent = nullptr);
|
||||
~MapSettings();
|
||||
|
||||
private slots:
|
||||
void on_pushButton_clicked();
|
||||
|
||||
private:
|
||||
Ui::MapSettings *ui;
|
||||
MainWindow * main;
|
||||
};
|
||||
|
||||
#endif // MAPSETTINGS_H
|
||||
|
@ -2,6 +2,9 @@
|
||||
<ui version="4.0">
|
||||
<class>MapSettings</class>
|
||||
<widget class="QDialog" name="MapSettings">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::ApplicationModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
@ -21,8 +24,18 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="text">
|
||||
<string>Ok</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLineEdit" name="mapNameEdit"/>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPlainTextEdit" name="plainTextEdit"/>
|
||||
<widget class="QPlainTextEdit" name="mapDescriptionEdit"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
@ -31,70 +44,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Players amount</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="locale">
|
||||
<locale language="English" country="UnitedStates"/>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QComboBox" name="comboBox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>3</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>4</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>5</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>6</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>7</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>8</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
14
mapeditor/playersettings.cpp
Normal file
14
mapeditor/playersettings.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include "playersettings.h"
|
||||
#include "ui_playersettings.h"
|
||||
|
||||
PlayerSettings::PlayerSettings(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::PlayerSettings)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
PlayerSettings::~PlayerSettings()
|
||||
{
|
||||
delete ui;
|
||||
}
|
22
mapeditor/playersettings.h
Normal file
22
mapeditor/playersettings.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef PLAYERSETTINGS_H
|
||||
#define PLAYERSETTINGS_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui {
|
||||
class PlayerSettings;
|
||||
}
|
||||
|
||||
class PlayerSettings : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PlayerSettings(QWidget *parent = nullptr);
|
||||
~PlayerSettings();
|
||||
|
||||
private:
|
||||
Ui::PlayerSettings *ui;
|
||||
};
|
||||
|
||||
#endif // PLAYERSETTINGS_H
|
18
mapeditor/playersettings.ui
Normal file
18
mapeditor/playersettings.ui
Normal file
@ -0,0 +1,18 @@
|
||||
<ui version="4.0">
|
||||
<class>PlayerSettings</class>
|
||||
<widget class="QDialog" name="PlayerSettings">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -4,6 +4,8 @@
|
||||
#include "../lib/rmg/CRmgTemplate.h"
|
||||
#include "../lib/rmg/CMapGenerator.h"
|
||||
#include "../lib/VCMI_Lib.h"
|
||||
#include "../lib/mapping/CMapEditManager.h"
|
||||
#include "../lib/CGeneralTextHandler.h"
|
||||
|
||||
#include "windownewmap.h"
|
||||
#include "ui_windownewmap.h"
|
||||
@ -40,9 +42,25 @@ void WindowNewMap::on_cancelButton_clicked()
|
||||
close();
|
||||
}
|
||||
|
||||
void generateRandomMap(CMapGenerator & gen, MainWindow * window, bool empty)
|
||||
void generateRandomMap(CMapGenerator & gen, MainWindow * window)
|
||||
{
|
||||
window->setMapRaw(gen.generate(empty));
|
||||
window->setMapRaw(gen.generate());
|
||||
}
|
||||
|
||||
void generateEmptyMap(CMapGenOptions & options, MainWindow * window)
|
||||
{
|
||||
std::unique_ptr<CMap> map(new CMap);
|
||||
map->version = EMapFormat::VCMI;
|
||||
map->width = options.getWidth();
|
||||
map->height = options.getHeight();
|
||||
map->twoLevel = options.getHasTwoLevels();
|
||||
|
||||
map->initTerrain();
|
||||
map->getEditManager()->clearTerrain(&CRandomGenerator::getDefault());
|
||||
map->getEditManager()->getTerrainSelection().selectRange(MapRect(int3(0, 0, 0), options.getWidth(), options.getHeight()));
|
||||
map->getEditManager()->drawTerrain(Terrain("grass"), &CRandomGenerator::getDefault());
|
||||
|
||||
window->setMapRaw(std::move(map));
|
||||
}
|
||||
|
||||
void WindowNewMap::on_okButtong_clicked()
|
||||
@ -69,35 +87,30 @@ void WindowNewMap::on_okButtong_clicked()
|
||||
mapGenOptions.setWaterContent(water);
|
||||
mapGenOptions.setMonsterStrength(monster);
|
||||
|
||||
if(ui->randomMapCheck->isChecked())
|
||||
{
|
||||
CMapGenerator generator(mapGenOptions);
|
||||
|
||||
//TODO: fix water and roads
|
||||
generator.disableModificator("RoadPlacer");
|
||||
generator.disableModificator("RiverPlacer");
|
||||
|
||||
auto progressBarWnd = new GeneratorProgress(generator, this);
|
||||
progressBarWnd->show();
|
||||
|
||||
{
|
||||
std::thread generate(&::generateRandomMap, std::ref(generator), static_cast<MainWindow*>(parent()), !ui->randomMapCheck->isChecked());
|
||||
std::thread generate(&::generateRandomMap, std::ref(generator), static_cast<MainWindow*>(parent()));
|
||||
progressBarWnd->update();
|
||||
generate.join();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
generateEmptyMap(mapGenOptions, static_cast<MainWindow*>(parent()));
|
||||
}
|
||||
|
||||
static_cast<MainWindow*>(parent())->setMap(true);
|
||||
close();
|
||||
}
|
||||
|
||||
void WindowNewMap::generateEmptyMap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WindowNewMap::generateRandomMap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WindowNewMap::on_sizeCombo_activated(int index)
|
||||
{
|
||||
std::map<int, std::pair<int, int>> sizes
|
||||
|
@ -39,9 +39,6 @@ private slots:
|
||||
|
||||
private:
|
||||
|
||||
void generateEmptyMap();
|
||||
void generateRandomMap();
|
||||
|
||||
void updateTemplateList();
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user