Browse Source

code review

Laserlicht 1 year ago
parent
commit
0e1bb73994
2 changed files with 15 additions and 24 deletions
  1. 5 15
      lib/campaign/CampaignState.cpp
  2. 10 9
      lib/campaign/CampaignState.h

+ 5 - 15
lib/campaign/CampaignState.cpp

@@ -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

+ 10 - 9
lib/campaign/CampaignState.h

@@ -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;
 			}
 		}