Przeglądaj źródła

LIBRARY->resourceTypeHandler adjustments after develop merge

Mircea TheHonestCTO 2 miesięcy temu
rodzic
commit
dd7ea75b25

+ 2 - 1
AI/Nullkiller2/AIUtility.cpp

@@ -15,6 +15,7 @@
 #include "../../lib/UnlockGuard.h"
 #include "../../lib/CConfigHandler.h"
 #include "../../lib/entities/artifact/CArtifact.h"
+#include "../../lib/entities/ResourceTypeHandler.h"
 #include "../../lib/mapObjects/MapObjects.h"
 #include "../../lib/mapObjects/CQuest.h"
 #include "../../lib/mapping/TerrainTile.h"
@@ -420,7 +421,7 @@ int32_t getArtifactBonusScoreImpl(const std::shared_ptr<Bonus> & bonus)
 		case BonusType::UNDEAD_RAISE_PERCENTAGE:
 			return bonus->val * 400;
 		case BonusType::GENERATE_RESOURCE:
-			return bonus->val * LIBRARY->objh->resVals.at(bonus->subtype.as<GameResID>().getNum()) * 10;
+			return bonus->val * bonus->subtype.as<GameResID>().toResource()->getPrice() * 10;
 		case BonusType::SPELL_DURATION:
 			return bonus->val * 200;
 		case BonusType::MAGIC_RESISTANCE:

+ 1 - 3
AI/Nullkiller2/Analyzers/BuildAnalyzer.cpp

@@ -453,7 +453,7 @@ TResource BuildAnalyzer::goldApproximate(const TResources & res)
 	return goldApproximate(res[EGameResID::WOOD], EGameResID::WOOD) + goldApproximate(res[EGameResID::MERCURY], EGameResID::MERCURY) +
 		   goldApproximate(res[EGameResID::ORE], EGameResID::ORE) + goldApproximate(res[EGameResID::SULFUR], EGameResID::SULFUR) +
 		   goldApproximate(res[EGameResID::CRYSTAL], EGameResID::CRYSTAL) + goldApproximate(res[EGameResID::GEMS], EGameResID::GEMS) +
-		   goldApproximate(res[EGameResID::GOLD], EGameResID::GOLD) + goldApproximate(res[EGameResID::MITHRIL], EGameResID::MITHRIL);
+		   goldApproximate(res[EGameResID::GOLD], EGameResID::GOLD);
 }
 
 TResource BuildAnalyzer::goldApproximate(const TResource & res, const EGameResID resId)
@@ -471,8 +471,6 @@ TResource BuildAnalyzer::goldApproximate(const TResource & res, const EGameResID
 			return res * 150;
 		case EGameResID::GOLD:
 			return res;
-		case EGameResID::MITHRIL:
-			return res; // TODO: Mircea: What multiplier to give for mithril?
 		default:
 			throw std::runtime_error("Unsupported resource ID" + std::to_string(resId));
 	}

+ 3 - 2
AI/Nullkiller2/Engine/PriorityEvaluator.cpp

@@ -12,6 +12,7 @@
 
 #include "Nullkiller.h"
 #include "../../../lib/entities/artifact/CArtifact.h"
+#include "../../../lib/entities/ResourceTypeHandler.h"
 #include "../../../lib/mapObjectConstructors/AObjectTypeHandler.h"
 #include "../../../lib/mapObjectConstructors/CObjectClassesHandler.h"
 #include "../../../lib/mapObjects/CGResource.h"
@@ -136,7 +137,7 @@ int32_t getResourcesGoldReward(const TResources & res)
 {
 	int32_t result = 0;
 
-	for(auto r : GameResID::ALL_RESOURCES())
+	for(auto r : LIBRARY->resourceTypeHandler->getAllObjects())
 	{
 		if(res[r] > 0)
 			result += r == EGameResID::GOLD ? res[r] : res[r] * 100;
@@ -1639,7 +1640,7 @@ float PriorityEvaluator::evaluate(Goals::TSubgoal task, int priorityTier)
 						needed.positive();
 						int turnsTo = needed.maxPurchasableCount(income);
 						bool haveEverythingButGold = true;
-						for (int i = 0; i < GameConstants::RESOURCE_QUANTITY; i++)
+						for (GameResID & i : LIBRARY->resourceTypeHandler->getAllObjects())
 						{
 							if (i != GameResID::GOLD && resourcesAvailable[i] < evaluationContext.buildingCost[i])
 								haveEverythingButGold = false;

+ 3 - 2
AI/Nullkiller2/Goals/AbstractGoal.cpp

@@ -12,6 +12,7 @@
 #include "../AIGateway.h"
 #include "../../../lib/constants/StringConstants.h"
 #include "../../../lib/entities/artifact/CArtifact.h"
+#include "../../../lib/entities/ResourceTypeHandler.h"
 
 namespace NK2AI
 {
@@ -43,11 +44,11 @@ std::string AbstractGoal::toString() const
 	switch(goalType)
 	{
 	case COLLECT_RES:
-		desc = "COLLECT RESOURCE " + GameConstants::RESOURCE_NAMES[resID] + " (" + std::to_string(value) + ")";
+		desc = "COLLECT RESOURCE " + GameResID(resID).toResource()->getJsonKey() + " (" + std::to_string(value) + ")";
 		break;
 	case TRADE:
 	{
-		desc = (boost::format("TRADE %d of %s at objid %d") % value % GameConstants::RESOURCE_NAMES[resID] % objid).str();
+		desc = (boost::format("TRADE %d of %s at objid %d") % value % GameResID(resID).toResource()->getJsonKey() % objid).str();
 		break;
 	}
 	case GATHER_TROOPS: