1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

code review: renaming

This commit is contained in:
Laserlicht
2025-06-18 23:38:48 +02:00
parent 824a748373
commit c2c936276c
11 changed files with 178 additions and 147 deletions

View File

@@ -44,9 +44,9 @@
"treasureLikeZone" : { "type" : "number" }, "treasureLikeZone" : { "type" : "number" },
"customObjectsLikeZone" : { "type" : "number" }, "customObjectsLikeZone" : { "type" : "number" },
"visPositionX" : { "type" : "number" }, "visiblePositionX" : { "type" : "number" },
"visPositionY" : { "type" : "number" }, "visiblePositionY" : { "type" : "number" },
"visSize" : { "type" : "number" }, "visibleSize" : { "type" : "number" },
"terrainTypes": {"$ref" : "#/definitions/stringArray"}, "terrainTypes": {"$ref" : "#/definitions/stringArray"},
"bannedTerrains": {"$ref" : "#/definitions/stringArray"}, "bannedTerrains": {"$ref" : "#/definitions/stringArray"},

View File

@@ -153,8 +153,8 @@ ZoneOptions::ZoneOptions():
terrainTypeLikeZone(NO_ZONE), terrainTypeLikeZone(NO_ZONE),
treasureLikeZone(NO_ZONE), treasureLikeZone(NO_ZONE),
customObjectsLikeZone(NO_ZONE), customObjectsLikeZone(NO_ZONE),
visPosition(Point(0, 0)), visiblePosition(Point(0, 0)),
visSize(1.0) visibleSize(1.0)
{ {
} }
@@ -334,24 +334,24 @@ TRmgTemplateZoneId ZoneOptions::getTownsLikeZone() const
return townsLikeZone; return townsLikeZone;
} }
Point ZoneOptions::getVisPosition() const Point ZoneOptions::getVisiblePosition() const
{ {
return visPosition; return visiblePosition;
} }
void ZoneOptions::setVisPosition(Point value) void ZoneOptions::setVisiblePosition(Point value)
{ {
visPosition = value; visiblePosition = value;
} }
float ZoneOptions::getVisSize() const float ZoneOptions::getVisibleSize() const
{ {
return visSize; return visibleSize;
} }
void ZoneOptions::setVisSize(float value) void ZoneOptions::setVisibleSize(float value)
{ {
visSize = value; visibleSize = value;
} }
void ZoneOptions::addConnection(const ZoneConnection & connection) void ZoneOptions::addConnection(const ZoneConnection & connection)
@@ -519,9 +519,9 @@ void ZoneOptions::serializeJson(JsonSerializeFormat & handler)
} }
handler.serializeStruct("customObjects", objectConfig); handler.serializeStruct("customObjects", objectConfig);
handler.serializeInt("visPositionX", visPosition.x); handler.serializeInt("visiblePositionX", visiblePosition.x);
handler.serializeInt("visPositionY", visPosition.y); handler.serializeInt("visiblePositionY", visiblePosition.y);
handler.serializeFloat("visSize", visSize); handler.serializeFloat("visibleSize", visibleSize);
} }
ZoneConnection::ZoneConnection(): ZoneConnection::ZoneConnection():

View File

@@ -241,11 +241,11 @@ public:
TRmgTemplateZoneId getCustomObjectsLikeZone() const; TRmgTemplateZoneId getCustomObjectsLikeZone() const;
TRmgTemplateZoneId getTownsLikeZone() const; TRmgTemplateZoneId getTownsLikeZone() const;
Point getVisPosition() const; Point getVisiblePosition() const;
void setVisPosition(Point value); void setVisiblePosition(Point value);
float getVisSize() const; float getVisibleSize() const;
void setVisSize(float value); void setVisibleSize(float value);
protected: protected:
TRmgTemplateZoneId id; TRmgTemplateZoneId id;
@@ -254,8 +254,8 @@ protected:
ui32 maxTreasureValue; ui32 maxTreasureValue;
std::optional<int> owner; std::optional<int> owner;
Point visPosition; Point visiblePosition;
float visSize; float visibleSize;
ObjectConfig objectConfig; ObjectConfig objectConfig;
CTownInfo playerTowns; CTownInfo playerTowns;

View File

@@ -54,8 +54,9 @@ if(ENABLE_TEMPLATE_EDITOR)
${editor_SRCS} ${editor_SRCS}
templateeditor/templateeditor.cpp templateeditor/templateeditor.cpp
templateeditor/templateview.cpp templateeditor/templateview.cpp
templateeditor/graphicelements.cpp templateeditor/graphicelements/CardItem.cpp
templateeditor/algorithm.cpp templateeditor/graphicelements/LineItem.cpp
templateeditor/GeometryAlgorithm.cpp
templateeditor/terrainselector.cpp templateeditor/terrainselector.cpp
templateeditor/factionselector.cpp templateeditor/factionselector.cpp
templateeditor/mineselector.cpp templateeditor/mineselector.cpp
@@ -119,8 +120,9 @@ if(ENABLE_TEMPLATE_EDITOR)
${editor_HEADERS} ${editor_HEADERS}
templateeditor/templateeditor.h templateeditor/templateeditor.h
templateeditor/templateview.h templateeditor/templateview.h
templateeditor/graphicelements.h templateeditor/graphicelements/CardItem.h
templateeditor/algorithm.h templateeditor/graphicelements/LineItem.h
templateeditor/GeometryAlgorithm.h
templateeditor/terrainselector.h templateeditor/terrainselector.h
templateeditor/factionselector.h templateeditor/factionselector.h
templateeditor/mineselector.h templateeditor/mineselector.h

View File

@@ -1,5 +1,5 @@
/* /*
* algorithm.cpp, part of VCMI engine * GeometryAlgorithm.cpp, part of VCMI engine
* *
* Authors: listed in file AUTHORS in main folder * Authors: listed in file AUTHORS in main folder
* *
@@ -9,14 +9,14 @@
*/ */
#include "StdInc.h" #include "StdInc.h"
#include "algorithm.h" #include "GeometryAlgorithm.h"
double Algorithm::distance(double x1, double y1, double x2, double y2) double GeometryAlgorithm::distance(double x1, double y1, double x2, double y2)
{ {
return std::sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)) + 1e-9; return std::sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)) + 1e-9;
} }
bool Algorithm::edgesIntersect(const Node& a, const Node& b, const Node& c, const Node& d) bool GeometryAlgorithm::edgesIntersect(const Node& a, const Node& b, const Node& c, const Node& d)
{ {
auto cross = [](double x1, double y1, double x2, double y2) { auto cross = [](double x1, double y1, double x2, double y2) {
return x1 * y2 - y1 * x2; return x1 * y2 - y1 * x2;
@@ -35,7 +35,7 @@ bool Algorithm::edgesIntersect(const Node& a, const Node& b, const Node& c, cons
return s > 0 && s < 1 && t > 0 && t < 1; return s > 0 && s < 1 && t > 0 && t < 1;
} }
void Algorithm::forceDirectedLayout(std::vector<Node> & nodes, const std::vector<Edge> & edges, int iterations, double width, double height) void GeometryAlgorithm::forceDirectedLayout(std::vector<Node> & nodes, const std::vector<Edge> & edges, int iterations, double width, double height)
{ {
const double area = width * height; const double area = width * height;
const double k = std::sqrt(area / nodes.size()); const double k = std::sqrt(area / nodes.size());

View File

@@ -1,5 +1,5 @@
/* /*
* algorithm.h, part of VCMI engine * GeometryAlgorithm.h, part of VCMI engine
* *
* Authors: listed in file AUTHORS in main folder * Authors: listed in file AUTHORS in main folder
* *
@@ -11,7 +11,7 @@
#include "../StdInc.h" #include "../StdInc.h"
class Algorithm class GeometryAlgorithm
{ {
public: public:
struct Node struct Node

View File

@@ -1,5 +1,5 @@
/* /*
* graphicelements.cpp, part of VCMI engine * CardItem.cpp, part of VCMI engine
* *
* Authors: listed in file AUTHORS in main folder * Authors: listed in file AUTHORS in main folder
* *
@@ -9,12 +9,12 @@
*/ */
#include "StdInc.h" #include "StdInc.h"
#include "graphicelements.h" #include "CardItem.h"
#include <QObject> #include <QObject>
#include "../../lib/constants/EntityIdentifiers.h" #include "../../../lib/constants/EntityIdentifiers.h"
#include "../../lib/rmg/CRmgTemplate.h" #include "../../../lib/rmg/CRmgTemplate.h"
QDomElement CardItem::getElementById(const QDomDocument& doc, const QString& id) QDomElement CardItem::getElementById(const QDomDocument& doc, const QString& id)
{ {
@@ -176,7 +176,7 @@ void CardItem::setChestValue(int val)
iconElem.setAttribute("opacity", val ? "1.0" : "0.1"); iconElem.setAttribute("opacity", val ? "1.0" : "0.1");
} }
void CardItem::setSword(EMonsterStrength::EMonsterStrength val) void CardItem::setMonsterStrength(EMonsterStrength::EMonsterStrength val)
{ {
int level = 0; int level = 0;
if(val == EMonsterStrength::ZONE_WEAK || val == EMonsterStrength::GLOBAL_WEAK) if(val == EMonsterStrength::ZONE_WEAK || val == EMonsterStrength::GLOBAL_WEAK)
@@ -227,66 +227,3 @@ QVariant CardItem::itemChange(GraphicsItemChange change, const QVariant &value)
return QGraphicsSvgItem::itemChange(change, value); return QGraphicsSvgItem::itemChange(change, value);
} }
LineItem::LineItem():
clickCallback(nullptr)
{
setZValue(-2);
for(int i = 0; i < 10; i++) // render multiple times to increase outline effect
{
auto tmpTextItem = new QGraphicsTextItem(this);
tmpTextItem->setZValue(-1);
QFont font;
font.setPointSize(18);
tmpTextItem->setFont(font);
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();
shadowEffect->setBlurRadius(10);
shadowEffect->setEnabled(true);
shadowEffect->setOffset(0, 0);
shadowEffect->setColor(Qt::black);
tmpTextItem->setGraphicsEffect(shadowEffect);
tmpTextItem->setDefaultTextColor(Qt::white);
textItem.push_back(tmpTextItem);
}
}
void LineItem::setLineToolTip(const QString &toolTip)
{
for(auto & tmpTextItem : textItem)
tmpTextItem->setToolTip(toolTip);
setToolTip(toolTip);
}
void LineItem::setClickCallback(std::function<void()> func)
{
clickCallback = func;
}
void LineItem::setText(QString text)
{
for(auto & tmpTextItem : textItem)
{
tmpTextItem->setPlainText(text);
QRectF lineRect = boundingRect();
QRectF textRect = tmpTextItem->boundingRect();
tmpTextItem->setPos(QPointF(lineRect.x() + (lineRect.width() / 2) - (textRect.width() / 2), lineRect.y() + (lineRect.height() / 2) - (textRect.height() / 2)));
}
}
void LineItem::setId(int val)
{
id = val;
}
int LineItem::getId()
{
return id;
}
void LineItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton && clickCallback)
clickCallback();
QGraphicsLineItem::mousePressEvent(event);
}

View File

@@ -1,5 +1,5 @@
/* /*
* graphicelements.h, part of VCMI engine * CardItem.h, part of VCMI engine
* *
* Authors: listed in file AUTHORS in main folder * Authors: listed in file AUTHORS in main folder
* *
@@ -11,9 +11,9 @@
#include <QWidget> #include <QWidget>
#include <QGraphicsSvgItem> #include <QGraphicsSvgItem>
#include "../StdInc.h" #include "../../StdInc.h"
#include "../../lib/constants/EntityIdentifiers.h" #include "../../../lib/constants/EntityIdentifiers.h"
#include "../../lib/rmg/CRmgTemplate.h" #include "../../../lib/rmg/CRmgTemplate.h"
class CardItem : public QGraphicsSvgItem class CardItem : public QGraphicsSvgItem
{ {
@@ -44,30 +44,10 @@ public:
int getId(); int getId();
void setResAmount(GameResID res, int val); void setResAmount(GameResID res, int val);
void setChestValue(int val); void setChestValue(int val);
void setSword(EMonsterStrength::EMonsterStrength val); void setMonsterStrength(EMonsterStrength::EMonsterStrength val);
protected: protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override; void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
}; };
class LineItem : public QGraphicsLineItem
{
private:
std::vector<QGraphicsTextItem *> textItem;
std::function<void()> clickCallback;
int id = -1;
static constexpr int CLICKABLE_PADDING_AROUND_LINE = 10;
public:
LineItem();
void setClickCallback(std::function<void()> func);
void setText(QString text);
void setId(int val);
int getId();
void setLineToolTip(const QString &toolTip);
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
};

View File

@@ -0,0 +1,77 @@
/*
* LineItem.cpp, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "LineItem.h"
#include <QObject>
LineItem::LineItem():
clickCallback(nullptr)
{
setZValue(-2);
for(int i = 0; i < 10; i++) // render multiple times to increase outline effect
{
auto tmpTextItem = new QGraphicsTextItem(this);
tmpTextItem->setZValue(-1);
QFont font;
font.setPointSize(18);
tmpTextItem->setFont(font);
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();
shadowEffect->setBlurRadius(10);
shadowEffect->setEnabled(true);
shadowEffect->setOffset(0, 0);
shadowEffect->setColor(Qt::black);
tmpTextItem->setGraphicsEffect(shadowEffect);
tmpTextItem->setDefaultTextColor(Qt::white);
textItem.push_back(tmpTextItem);
}
}
void LineItem::setLineToolTip(const QString &toolTip)
{
for(auto & tmpTextItem : textItem)
tmpTextItem->setToolTip(toolTip);
setToolTip(toolTip);
}
void LineItem::setClickCallback(std::function<void()> func)
{
clickCallback = func;
}
void LineItem::setText(QString text)
{
for(auto & tmpTextItem : textItem)
{
tmpTextItem->setPlainText(text);
QRectF lineRect = boundingRect();
QRectF textRect = tmpTextItem->boundingRect();
tmpTextItem->setPos(QPointF(lineRect.x() + (lineRect.width() / 2) - (textRect.width() / 2), lineRect.y() + (lineRect.height() / 2) - (textRect.height() / 2)));
}
}
void LineItem::setId(int val)
{
id = val;
}
int LineItem::getId()
{
return id;
}
void LineItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton && clickCallback)
clickCallback();
QGraphicsLineItem::mousePressEvent(event);
}

View File

@@ -0,0 +1,34 @@
/*
* LineItem.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
#include <QWidget>
#include <QGraphicsSvgItem>
#include "../../StdInc.h"
class LineItem : public QGraphicsLineItem
{
private:
std::vector<QGraphicsTextItem *> textItem;
std::function<void()> clickCallback;
int id = -1;
static constexpr int CLICKABLE_PADDING_AROUND_LINE = 10;
public:
LineItem();
void setClickCallback(std::function<void()> func);
void setText(QString text);
void setId(int val);
int getId();
void setLineToolTip(const QString &toolTip);
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
};

View File

@@ -10,11 +10,12 @@
#include "StdInc.h" #include "StdInc.h"
#include "templateeditor.h" #include "templateeditor.h"
#include "ui_templateeditor.h" #include "ui_templateeditor.h"
#include "graphicelements.h" #include "graphicelements/CardItem.h"
#include "graphicelements/LineItem.h"
#include "terrainselector.h" #include "terrainselector.h"
#include "factionselector.h" #include "factionselector.h"
#include "mineselector.h" #include "mineselector.h"
#include "algorithm.h" #include "GeometryAlgorithm.h"
#include "../helper.h" #include "../helper.h"
@@ -88,29 +89,29 @@ void TemplateEditor::autoPositionZones()
{ {
auto & zones = templates[selectedTemplate]->getZones(); auto & zones = templates[selectedTemplate]->getZones();
std::vector<Algorithm::Node> nodes; std::vector<GeometryAlgorithm::Node> nodes;
std::default_random_engine rng(0); std::default_random_engine rng(0);
std::uniform_real_distribution<double> distX(0.0, 500); std::uniform_real_distribution<double> distX(0.0, 500);
std::uniform_real_distribution<double> distY(0.0, 500); std::uniform_real_distribution<double> distY(0.0, 500);
for(auto & item : zones) for(auto & item : zones)
{ {
Algorithm::Node node; GeometryAlgorithm::Node node;
node.x = distX(rng); node.x = distX(rng);
node.y = distY(rng); node.y = distY(rng);
node.id = item.first; node.id = item.first;
nodes.push_back(node); nodes.push_back(node);
} }
std::vector<Algorithm::Edge> edges; std::vector<GeometryAlgorithm::Edge> edges;
for(auto & item : templates[selectedTemplate]->getConnectedZoneIds()) for(auto & item : templates[selectedTemplate]->getConnectedZoneIds())
edges.push_back({ edges.push_back({
vstd::find_pos_if(nodes, [item](auto & elem){ return elem.id == item.getZoneA(); }), vstd::find_pos_if(nodes, [item](auto & elem){ return elem.id == item.getZoneA(); }),
vstd::find_pos_if(nodes, [item](auto & elem){ return elem.id == item.getZoneB(); }) vstd::find_pos_if(nodes, [item](auto & elem){ return elem.id == item.getZoneB(); })
}); });
Algorithm::forceDirectedLayout(nodes, edges, 1000, 500, 500); GeometryAlgorithm::forceDirectedLayout(nodes, edges, 1000, 500, 500);
for(auto & item : nodes) for(auto & item : nodes)
zones.at(item.id)->setVisPosition(Point(CardItem::GRID_SIZE * round(item.x / CardItem::GRID_SIZE), CardItem::GRID_SIZE * round(item.y / CardItem::GRID_SIZE))); zones.at(item.id)->setVisiblePosition(Point(CardItem::GRID_SIZE * round(item.x / CardItem::GRID_SIZE), CardItem::GRID_SIZE * round(item.y / CardItem::GRID_SIZE)));
} }
void TemplateEditor::loadContent(bool autoPosition) void TemplateEditor::loadContent(bool autoPosition)
@@ -126,12 +127,12 @@ void TemplateEditor::loadContent(bool autoPosition)
return; return;
auto & zones = templates[selectedTemplate]->getZones(); auto & zones = templates[selectedTemplate]->getZones();
if(autoPosition || std::all_of(zones.begin(), zones.end(), [](auto & item){ return item.second->getVisPosition().x == 0 && item.second->getVisPosition().y == 0; })) if(autoPosition || std::all_of(zones.begin(), zones.end(), [](auto & item){ return item.second->getVisiblePosition().x == 0 && item.second->getVisiblePosition().y == 0; }))
autoPositionZones(); autoPositionZones();
for(auto & zone : zones) for(auto & zone : zones)
if(zone.second->getVisSize() < 0.01) if(zone.second->getVisibleSize() < 0.01)
zone.second->setVisSize(1.0); zone.second->setVisibleSize(1.0);
for(auto & zone : zones) for(auto & zone : zones)
{ {
@@ -153,8 +154,8 @@ void TemplateEditor::loadContent(bool autoPosition)
for(auto & zone : templates[selectedTemplate]->getZones()) for(auto & zone : templates[selectedTemplate]->getZones())
if(zone.first == svgItem->getId()) if(zone.first == svgItem->getId())
{ {
zone.second->setVisPosition(Point(svgItem->pos().toPoint().rx() + (svgItem->boundingRect().width() * svgItem->scale() / 2), svgItem->pos().toPoint().ry() + (svgItem->boundingRect().height() * svgItem->scale() / 2))); zone.second->setVisiblePosition(Point(svgItem->pos().toPoint().rx() + (svgItem->boundingRect().width() * svgItem->scale() / 2), svgItem->pos().toPoint().ry() + (svgItem->boundingRect().height() * svgItem->scale() / 2)));
zone.second->setVisSize(svgItem->scale()); zone.second->setVisibleSize(svgItem->scale());
} }
loadZoneMenuContent(true); loadZoneMenuContent(true);
}); });
@@ -241,8 +242,8 @@ void TemplateEditor::updateZonePositions()
for(auto & card : cards) for(auto & card : cards)
{ {
auto & zone = templates[selectedTemplate]->getZones().at(card.first); auto & zone = templates[selectedTemplate]->getZones().at(card.first);
card.second->setPos(zone->getVisPosition().x - (card.second->boundingRect().width() * card.second->scale() / 2), zone->getVisPosition().y - (card.second->boundingRect().height() * card.second->scale() / 2)); card.second->setPos(zone->getVisiblePosition().x - (card.second->boundingRect().width() * card.second->scale() / 2), zone->getVisiblePosition().y - (card.second->boundingRect().height() * card.second->scale() / 2));
card.second->setScale(zone->getVisSize()); card.second->setScale(zone->getVisibleSize());
} }
updateConnectionLines(); updateConnectionLines();
@@ -282,9 +283,9 @@ void TemplateEditor::updateZoneCards(TRmgTemplateZoneId id)
for(auto & res : {GameResID::WOOD, GameResID::ORE, GameResID::MERCURY, GameResID::SULFUR, GameResID::CRYSTAL, GameResID::GEMS, GameResID::GOLD}) for(auto & res : {GameResID::WOOD, GameResID::ORE, GameResID::MERCURY, GameResID::SULFUR, GameResID::CRYSTAL, GameResID::GEMS, GameResID::GOLD})
card.second->setResAmount(res, zone->getMinesInfo().count(res) ? zone->getMinesInfo().at(res) : 0); card.second->setResAmount(res, zone->getMinesInfo().count(res) ? zone->getMinesInfo().at(res) : 0);
card.second->setChestValue(zone->getMaxTreasureValue()); card.second->setChestValue(zone->getMaxTreasureValue());
card.second->setSword(zone->monsterStrength); card.second->setMonsterStrength(zone->monsterStrength);
card.second->setToolTip(getZoneToolTip(zone)); card.second->setToolTip(getZoneToolTip(zone));
card.second->setScale(zone->getVisSize()); card.second->setScale(zone->getVisibleSize());
card.second->updateContent(); card.second->updateContent();
} }
} }
@@ -296,9 +297,9 @@ void TemplateEditor::loadZoneMenuContent(bool onlyPosition)
auto setValue = [](auto& target, const auto& newValue){ target->setValue(newValue); }; auto setValue = [](auto& target, const auto& newValue){ target->setValue(newValue); };
auto & zone = templates[selectedTemplate]->getZones().at(selectedZone); auto & zone = templates[selectedTemplate]->getZones().at(selectedZone);
setValue(ui->spinBoxZoneVisPosX, zone->getVisPosition().x); setValue(ui->spinBoxZoneVisPosX, zone->getVisiblePosition().x);
setValue(ui->spinBoxZoneVisPosY, zone->getVisPosition().y); setValue(ui->spinBoxZoneVisPosY, zone->getVisiblePosition().y);
setValue(ui->doubleSpinBoxZoneVisSize, zone->getVisSize()); setValue(ui->doubleSpinBoxZoneVisSize, zone->getVisibleSize());
if(onlyPosition) if(onlyPosition)
return; return;
@@ -467,8 +468,8 @@ void TemplateEditor::saveZoneMenuContent()
auto zone = templates[selectedTemplate]->getZones().at(selectedZone); auto zone = templates[selectedTemplate]->getZones().at(selectedZone);
auto type = static_cast<ETemplateZoneType>(ui->comboBoxZoneType->currentData().toInt()); auto type = static_cast<ETemplateZoneType>(ui->comboBoxZoneType->currentData().toInt());
zone->setVisPosition(Point(ui->spinBoxZoneVisPosX->value(), ui->spinBoxZoneVisPosY->value())); zone->setVisiblePosition(Point(ui->spinBoxZoneVisPosX->value(), ui->spinBoxZoneVisPosY->value()));
zone->setVisSize(ui->doubleSpinBoxZoneVisSize->value()); zone->setVisibleSize(ui->doubleSpinBoxZoneVisSize->value());
zone->setType(type); zone->setType(type);
zone->setSize(ui->spinBoxZoneSize->value()); zone->setSize(ui->spinBoxZoneSize->value());
zone->playerTowns.townCount = ui->spinBoxTownCountPlayer->value(); zone->playerTowns.townCount = ui->spinBoxTownCountPlayer->value();