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:
@@ -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"},
|
||||||
|
|||||||
@@ -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():
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
@@ -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
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
77
mapeditor/templateeditor/graphicelements/LineItem.cpp
Normal file
77
mapeditor/templateeditor/graphicelements/LineItem.cpp
Normal 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);
|
||||||
|
}
|
||||||
34
mapeditor/templateeditor/graphicelements/LineItem.h
Normal file
34
mapeditor/templateeditor/graphicelements/LineItem.h
Normal 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;
|
||||||
|
};
|
||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user