1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-22 22:13:35 +02:00

code review

This commit is contained in:
Laserlicht 2024-09-27 18:14:48 +02:00
parent 2d60252e4c
commit 0e1bb73994
2 changed files with 15 additions and 24 deletions

View File

@ -37,18 +37,11 @@ CampaignRegions::RegionDescription CampaignRegions::RegionDescription::fromJson(
{
CampaignRegions::RegionDescription rd;
rd.infix = node["infix"].String();
rd.xpos = static_cast<int>(node["x"].Float());
rd.ypos = static_cast<int>(node["y"].Float());
rd.pos = Point(static_cast<int>(node["x"].Float()), static_cast<int>(node["y"].Float()));
if(!node["labelPos"].isNull())
{
rd.xLabelpos = static_cast<int>(node["labelPos"]["x"].Float());
rd.yLabelpos = static_cast<int>(node["labelPos"]["y"].Float());
}
rd.labelPos = Point(static_cast<int>(node["labelPos"]["x"].Float()), static_cast<int>(node["labelPos"]["y"].Float()));
else
{
rd.xLabelpos = std::nullopt;
rd.yLabelpos = std::nullopt;
}
rd.labelPos = std::nullopt;
return rd;
}
@ -90,16 +83,13 @@ ImagePath CampaignRegions::getBackgroundName() const
Point CampaignRegions::getPosition(CampaignScenarioID which) const
{
auto const & region = regions[which.getNum()];
return Point(region.xpos, region.ypos);
return region.pos;
}
std::optional<Point> CampaignRegions::getLabelPosition(CampaignScenarioID which) const
{
auto const & region = regions[which.getNum()];
if(region.xLabelpos && region.yLabelpos)
return Point(*region.xLabelpos, *region.yLabelpos);
else
return std::nullopt;
return region.labelPos;
}
ImagePath CampaignRegions::getNameFor(CampaignScenarioID which, int colorIndex, std::string type) const

View File

@ -16,6 +16,7 @@
#include "CampaignConstants.h"
#include "CampaignScenarioPrologEpilog.h"
#include "../gameState/HighScore.h"
#include "../Point.h"
VCMI_LIB_NAMESPACE_BEGIN
@ -27,7 +28,6 @@ class CMap;
class CMapHeader;
class CMapInfo;
class JsonNode;
class Point;
class IGameCallback;
class DLL_LINKAGE CampaignRegions
@ -40,20 +40,21 @@ class DLL_LINKAGE CampaignRegions
struct DLL_LINKAGE RegionDescription
{
std::string infix;
int xpos;
int ypos;
std::optional<int> xLabelpos;
std::optional<int> yLabelpos;
Point pos;
std::optional<Point> labelPos;
template <typename Handler> void serialize(Handler &h)
{
h & infix;
h & xpos;
h & ypos;
if (h.version >= Handler::Version::REGION_LABEL)
{
h & xLabelpos;
h & yLabelpos;
h & pos;
h & labelPos;
}
else
{
h & pos.x;
h & pos.y;
}
}