فهرست منبع

Remove few more implicit conversions

Ivan Savenko 2 سال پیش
والد
کامیت
34338f4eaa

+ 1 - 1
lib/CSkillHandler.cpp

@@ -77,7 +77,7 @@ void CSkill::registerIcons(const IconRegistar & cb) const
 {
 	for(int level = 1; level <= 3; level++)
 	{
-		int frame = 2 + level + 3 * id;
+		int frame = 2 + level + 3 * id.getNum();
 		const LevelInfo & skillAtLevel = at(level);
 		cb(frame, 0, "SECSK32", skillAtLevel.iconSmall);
 		cb(frame, 0, "SECSKILL", skillAtLevel.iconMedium);

+ 15 - 15
lib/CTownHandler.cpp

@@ -144,12 +144,12 @@ CFaction::~CFaction()
 
 int32_t CFaction::getIndex() const
 {
-	return index;
+	return index.getNum();
 }
 
 int32_t CFaction::getIconIndex() const
 {
-	return index; //???
+	return index.getNum(); //???
 }
 
 std::string CFaction::getJsonKey() const
@@ -172,8 +172,8 @@ void CFaction::registerIcons(const IconRegistar & cb) const
 		cb(info.icons[1][0] + 2, 0, "ITPA", info.iconSmall[1][0]);
 		cb(info.icons[1][1] + 2, 0, "ITPA", info.iconSmall[1][1]);
 
-		cb(index, 1, "CPRSMALL", info.towerIconSmall);
-		cb(index, 1, "TWCRPORT", info.towerIconLarge);
+		cb(index.getNum(), 1, "CPRSMALL", info.towerIconSmall);
+		cb(index.getNum(), 1, "TWCRPORT", info.towerIconLarge);
 
 	}
 }
@@ -734,7 +734,7 @@ void CTownHandler::loadBuilding(CTown * town, const std::string & stringID, cons
 
 	ret->town->buildings[ret->bid] = ret;
 
-	registerObject(source.meta, ret->town->getBuildingScope(), ret->identifier, ret->bid);
+	registerObject(source.meta, ret->town->getBuildingScope(), ret->identifier, ret->bid.getNum());
 }
 
 void CTownHandler::loadBuildings(CTown * town, const JsonNode & source)
@@ -1115,10 +1115,10 @@ void CTownHandler::loadObject(std::string scope, std::string name, const JsonNod
 	if (object->town)
 	{
 		auto & info = object->town->clientInfo;
-		info.icons[0][0] = 8 + object->index * 4 + 0;
-		info.icons[0][1] = 8 + object->index * 4 + 1;
-		info.icons[1][0] = 8 + object->index * 4 + 2;
-		info.icons[1][1] = 8 + object->index * 4 + 3;
+		info.icons[0][0] = 8 + object->index.getNum() * 4 + 0;
+		info.icons[0][1] = 8 + object->index.getNum() * 4 + 1;
+		info.icons[1][0] = 8 + object->index.getNum() * 4 + 2;
+		info.icons[1][1] = 8 + object->index.getNum() * 4 + 3;
 
 		VLC->identifiers()->requestIdentifier(scope, "object", "town", [=](si32 index)
 		{
@@ -1142,7 +1142,7 @@ void CTownHandler::loadObject(std::string scope, std::string name, const JsonNod
 		});
 	}
 
-	registerObject(scope, "faction", name, object->index);
+	registerObject(scope, "faction", name, object->index.getNum());
 }
 
 void CTownHandler::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index)
@@ -1158,10 +1158,10 @@ void CTownHandler::loadObject(std::string scope, std::string name, const JsonNod
 	if (object->town)
 	{
 		auto & info = object->town->clientInfo;
-		info.icons[0][0] = (GameConstants::F_NUMBER + object->index) * 2 + 0;
-		info.icons[0][1] = (GameConstants::F_NUMBER + object->index) * 2 + 1;
-		info.icons[1][0] = object->index * 2 + 0;
-		info.icons[1][1] = object->index * 2 + 1;
+		info.icons[0][0] = (GameConstants::F_NUMBER + object->index.getNum()) * 2 + 0;
+		info.icons[0][1] = (GameConstants::F_NUMBER + object->index.getNum()) * 2 + 1;
+		info.icons[1][0] = object->index.getNum() * 2 + 0;
+		info.icons[1][1] = object->index.getNum() * 2 + 1;
 
 		VLC->identifiers()->requestIdentifier(scope, "object", "town", [=](si32 index)
 		{
@@ -1173,7 +1173,7 @@ void CTownHandler::loadObject(std::string scope, std::string name, const JsonNod
 		});
 	}
 
-	registerObject(scope, "faction", name, object->index);
+	registerObject(scope, "faction", name, object->index.getNum());
 }
 
 void CTownHandler::loadRandomFaction()

+ 12 - 0
lib/constants/EntityIdentifiers.h

@@ -571,6 +571,12 @@ public:
 
 	static std::string encode(int32_t index);
 	static si32 decode(const std::string & identifier);
+
+	// TODO: Remove
+	constexpr operator int32_t () const
+	{
+		return num;
+	}
 };
 
 class MapObjectSubID : public Identifier<MapObjectSubID>
@@ -594,6 +600,12 @@ public:
 		this->num = value.getNum();
 		return *this;
 	}
+
+	// TODO: Remove
+	constexpr operator int32_t () const
+	{
+		return num;
+	}
 };
 
 class DLL_LINKAGE RoadId : public Identifier<RoadId>

+ 4 - 4
lib/constants/IdentifierBase.h

@@ -52,10 +52,10 @@ public:
 		num += change;
 	}
 
-	constexpr operator int32_t () const
-	{
-		return num;
-	}
+//	constexpr operator int32_t () const
+//	{
+//		return num;
+//	}
 
 	friend std::ostream& operator<<(std::ostream& os, const IdentifierBase& dt)
 	{

+ 1 - 1
lib/mapObjectConstructors/CObjectClassesHandler.cpp

@@ -117,7 +117,7 @@ std::vector<JsonNode> CObjectClassesHandler::loadLegacyData()
 		tmpl->readTxt(parser);
 		parser.endLine();
 
-		std::pair<si32, si32> key(tmpl->id.num, tmpl->subid);
+		std::pair key(tmpl->id, tmpl->subid);
 		legacyTemplates.insert(std::make_pair(key, std::shared_ptr<const ObjectTemplate>(tmpl)));
 	}
 

+ 1 - 1
lib/mapObjectConstructors/CObjectClassesHandler.h

@@ -74,7 +74,7 @@ class DLL_LINKAGE CObjectClassesHandler : public IHandlerBase
 	std::map<std::string, std::function<TObjectTypeHandler()> > handlerConstructors;
 
 	/// container with H3 templates, used only during loading, no need to serialize it
-	using TTemplatesContainer = std::multimap<std::pair<si32, si32>, std::shared_ptr<const ObjectTemplate>>;
+	using TTemplatesContainer = std::multimap<std::pair<MapObjectID, MapObjectSubID>, std::shared_ptr<const ObjectTemplate>>;
 	TTemplatesContainer legacyTemplates;
 
 	TObjectTypeHandler loadSubObjectFromJson(const std::string & scope, const std::string & identifier, const JsonNode & entry, ObjectClass * obj, size_t index);

+ 2 - 2
lib/mapObjects/CGDwelling.cpp

@@ -49,7 +49,7 @@ CGDwelling::~CGDwelling() = default;
 FactionID CGDwelling::randomizeFaction(CRandomGenerator & rand)
 {
 	if (ID == Obj::RANDOM_DWELLING_FACTION)
-		return FactionID(subID);
+		return FactionID(subID.getNum());
 
 	assert(ID == Obj::RANDOM_DWELLING || ID == Obj::RANDOM_DWELLING_LVL);
 	assert(randomizationInfo.has_value());
@@ -138,7 +138,7 @@ void CGDwelling::pickRandomObject(CRandomGenerator & rand)
 		auto testID = [&](const Obj & primaryID) -> MapObjectSubID
 		{
 			auto dwellingIDs = VLC->objtypeh->knownSubObjects(primaryID);
-			for (si32 entry : dwellingIDs)
+			for (MapObjectSubID entry : dwellingIDs)
 			{
 				const auto * handler = dynamic_cast<const DwellingInstanceConstructor *>(VLC->objtypeh->getHandlerFor(primaryID, entry).get());
 

+ 2 - 2
lib/mapObjects/ObjectTemplate.h

@@ -43,8 +43,8 @@ class DLL_LINKAGE ObjectTemplate
 
 public:
 	/// H3 ID/subID of this object
-	Obj id;
-	si32 subid;
+	MapObjectID id;
+	MapObjectSubID subid;
 	/// print priority, objects with higher priority will be print first, below everything else
 	si32 printPriority;
 	/// animation file that should be used to display object

+ 1 - 1
lib/mapping/MapFormatH3M.cpp

@@ -707,7 +707,7 @@ void CMapLoaderH3M::readDisposedHeroes()
 		for(int g = 0; g < disp; ++g)
 		{
 			map->disposedHeroes[g].heroId = reader->readHero();
-			map->disposedHeroes[g].portrait.setNum(reader->readHeroPortrait());
+			map->disposedHeroes[g].portrait = reader->readHeroPortrait();
 			map->disposedHeroes[g].name = readLocalizedString(TextIdentifier("header", "heroes", map->disposedHeroes[g].heroId));
 			reader->readBitmaskPlayers(map->disposedHeroes[g].players, false);
 		}

+ 2 - 2
lib/rmg/Zone.cpp

@@ -127,10 +127,10 @@ rmg::Area & Zone::freePaths()
 
 FactionID Zone::getTownType() const
 {
-	return FactionID(townType);
+	return townType;
 }
 
-void Zone::setTownType(si32 town)
+void Zone::setTownType(FactionID town)
 {
 	townType = town;
 }

+ 2 - 2
lib/rmg/Zone.h

@@ -59,7 +59,7 @@ public:
 	void fractalize();
 	
 	FactionID getTownType() const;
-	void setTownType(si32 town);
+	void setTownType(FactionID town);
 	TerrainId getTerrainType() const;
 	void setTerrainType(TerrainId terrain);
 		
@@ -108,7 +108,7 @@ protected:
 	std::vector<int3> possibleQuestArtifactPos;
 	
 	//template info
-	si32 townType;
+	FactionID townType;
 	TerrainId terrainType;
 };
 

+ 1 - 1
lib/rmg/modificators/TownPlacer.cpp

@@ -179,7 +179,7 @@ void TownPlacer::addNewTowns(int count, bool hasFort, const PlayerColor & player
 {
 	for(int i = 0; i < count; i++)
 	{
-		si32 subType = zone.getTownType();
+		FactionID subType = zone.getTownType();
 		
 		if(totalTowns>0)
 		{

+ 3 - 3
lib/rmg/modificators/TreasurePlacer.cpp

@@ -155,8 +155,8 @@ void TreasurePlacer::addAllPossibleObjects()
 		if(dwellingType == Obj::CREATURE_GENERATOR1)
 		{
 			//don't spawn original "neutral" dwellings that got replaced by Conflux dwellings in AB
-			static int elementalConfluxROE[] = {7, 13, 16, 47};
-			for(int & i : elementalConfluxROE)
+			static MapObjectSubID elementalConfluxROE[] = {7, 13, 16, 47};
+			for(auto const & i : elementalConfluxROE)
 				vstd::erase_if_present(subObjects, i);
 		}
 		
@@ -918,7 +918,7 @@ char TreasurePlacer::dump(const int3 & t)
 	return Modificator::dump(t);
 }
 
-void ObjectInfo::setTemplates(si32 type, si32 subtype, TerrainId terrainType)
+void ObjectInfo::setTemplates(MapObjectID type, MapObjectSubID subtype, TerrainId terrainType)
 {
 	auto templHandler = VLC->objtypeh->getHandlerFor(type, subtype);
 	if(!templHandler)

+ 1 - 1
lib/rmg/modificators/TreasurePlacer.h

@@ -29,7 +29,7 @@ struct ObjectInfo
 	//ui32 maxPerMap; //unused
 	std::function<CGObjectInstance *()> generateObject;
 	
-	void setTemplates(si32 type, si32 subtype, TerrainId terrain);
+	void setTemplates(MapObjectID type, MapObjectSubID subtype, TerrainId terrain);
 };
 
 class TreasurePlacer: public Modificator