Browse Source

Enabled commander artifacts. Don't work yet.

DjWarmonger 13 năm trước cách đây
mục cha
commit
88639be91b
3 tập tin đã thay đổi với 38 bổ sung39 xóa
  1. 19 19
      client/CHeroWindow.cpp
  2. 17 18
      lib/CArtHandler.cpp
  3. 2 2
      lib/CArtHandler.h

+ 19 - 19
client/CHeroWindow.cpp

@@ -305,25 +305,25 @@ void CHeroWindow::questlog()
 void CHeroWindow::commanderWindow()
 {
 	//TODO: allow equipping commander artifacts by drag / drop
-	//bool artSelected = false;
-	//const CArtifactsOfHero::SCommonPart *commonInfo = artSets.front()->commonInfo;
-
-	//if (const CArtifactInstance *art = commonInfo->src.art)
-	//{
-	//	const CGHeroInstance *srcHero = commonInfo->src.AOH->getHero();
-	//	artSelected = true;
-	//	ArtifactLocation src (srcHero, commonInfo->src.slotID);
-	//	ArtifactLocation dst (curHero->commander.get(), commonInfo->src.slotID);
-	//	if (art->canBePutAt(dst, true))
-	//	{	//equip clicked stack
-	//		if(dst.getArt())
-	//		{
-	//			LOCPLINT->cb->swapArtifacts (dst, ArtifactLocation(srcHero, dst.getArt()->firstBackpackSlot(srcHero)));
-	//		}
-	//		LOCPLINT->cb->swapArtifacts(src, dst);
-	//	}
-	//}
-	//else
+	bool artSelected = false;
+	const CArtifactsOfHero::SCommonPart *commonInfo = artSets.front()->commonInfo;
+
+	if (const CArtifactInstance *art = commonInfo->src.art)
+	{
+		const CGHeroInstance *srcHero = commonInfo->src.AOH->getHero();
+		artSelected = true;
+		ArtifactLocation src (srcHero, commonInfo->src.slotID);
+		ArtifactLocation dst (curHero->commander.get(), art->firstAvailableSlot (curHero->commander));
+		if (art->canBePutAt(dst, true))
+		{	//equip clicked stack
+			if(dst.getArt())
+			{
+				LOCPLINT->cb->swapArtifacts (dst, ArtifactLocation(srcHero, dst.getArt()->firstBackpackSlot(srcHero)));
+			}
+			LOCPLINT->cb->swapArtifacts(src, dst);
+		}
+	}
+	else
 		GH.pushInt(new CCreatureWindow (curHero->commander));
 
 }

+ 17 - 18
lib/CArtHandler.cpp

@@ -200,7 +200,6 @@ CArtHandler::CArtHandler()
 	// War machines are the default big artifacts.
 	for (ui32 i = 3; i <= 6; i++)
 		bigArtifacts.insert(i);
-	//modableArtifacts = boost::assign::map_list_of(1, 1)(146,3)(147,3)(148,3)(150,3)(151,3)(152,3)(154,3)(156,2);
 }
 
 CArtHandler::~CArtHandler()
@@ -238,7 +237,7 @@ void CArtHandler::loadArtifacts(bool onlyTxt)
 		nart.price=atoi(pom.c_str());
 		nart.possibleSlots[ArtBearer::HERO]; //we want to generate map entry even if it will be empty
 		nart.possibleSlots[ArtBearer::CREATURE]; //we want to generate map entry even if it will be empty
-		//nart.possibleSlots[ArtBearer::COMMANDER];
+		nart.possibleSlots[ArtBearer::COMMANDER];
 		for(int j=0;j<slots.size();j++)
 		{
 			loadToIt(pom,buf,it,4);
@@ -512,21 +511,21 @@ void CArtHandler::makeItCreatureArt (int aid, bool onlyCreature /*=true*/)
 	if (onlyCreature)
 	{
 		a->possibleSlots[ArtBearer::HERO].clear();
-		//a->possibleSlots[ArtBearer::COMMANDER].clear();
+		a->possibleSlots[ArtBearer::COMMANDER].clear();
 	}
 	a->possibleSlots[ArtBearer::CREATURE].push_back(ArtifactPosition::CREATURE_SLOT);
 };
 
 void CArtHandler::makeItCommanderArt (int aid, bool onlyCommander /*=true*/)
 {
-	//CArtifact *a = artifacts[aid];
-	//if (onlyCommander)
-	//{
-	//	a->possibleSlots[ArtBearer::HERO].clear();
-	//	a->possibleSlots[ArtBearer::CREATURE].clear();
-	//}
-	//for (int i = ArtifactPosition::COMMANDER1; i <= ArtifactPosition::COMMANDER6; ++i)
-	//	a->possibleSlots[ArtBearer::COMMANDER].push_back(i);
+	CArtifact *a = artifacts[aid];
+	if (onlyCommander)
+	{
+		a->possibleSlots[ArtBearer::HERO].clear();
+		a->possibleSlots[ArtBearer::CREATURE].clear();
+	}
+	for (int i = ArtifactPosition::COMMANDER1; i <= ArtifactPosition::COMMANDER6; ++i)
+		a->possibleSlots[ArtBearer::COMMANDER].push_back(i);
 };
 
 void CArtHandler::addBonuses()
@@ -941,13 +940,13 @@ void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
 		if (allowed[i])
 			allowedArtifacts.push_back(artifacts[i]);
 	}
-	//if (GameConstants::COMMANDERS) //allow all commander artifacts for testing
-	//{
-	//	for (int i = 146; i <= 155; ++i)
-	//	{
-	//		allowedArtifacts.push_back(artifacts[i]);
-	//	}
-	//}
+	if (GameConstants::COMMANDERS) //allow all commander artifacts for testing
+	{
+		for (int i = 146; i <= 155; ++i)
+		{
+			allowedArtifacts.push_back(artifacts[i]);
+		}
+	}
 }
 
 CArtifactInstance::CArtifactInstance()

+ 2 - 2
lib/CArtHandler.h

@@ -28,8 +28,8 @@ namespace ArtifactPosition
 		MACH1, MACH2, MACH3, MACH4, SPELLBOOK, MISC5, 
 		AFTER_LAST,
 		//cres
-		CREATURE_SLOT = 0/*,
-		COMMANDER1 = 0, COMMANDER2, COMMANDER3, COMMANDER4, COMMANDER5, COMMANDER6*/
+		CREATURE_SLOT = 0,
+		COMMANDER1 = 0, COMMANDER2, COMMANDER3, COMMANDER4, COMMANDER5, COMMANDER6
 	};
 }