| 
					
				 | 
			
			
				@@ -35,6 +35,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "../../CCallback.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CWindowWithArtifacts::CWindowWithArtifacts(const std::vector<CArtifactsOfHeroPtr> * artSets) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if(artSets) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this->artSets.insert(this->artSets.end(), artSets->begin(), artSets->end()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void CWindowWithArtifacts::addSet(CArtifactsOfHeroPtr artSet) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	artSets.emplace_back(artSet); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -42,19 +48,13 @@ void CWindowWithArtifacts::addSet(CArtifactsOfHeroPtr artSet) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void CWindowWithArtifacts::addSetAndCallbacks(CArtifactsOfHeroPtr artSet) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	CArtifactsOfHeroBase::PutBackPickedArtCallback artPutBackFunctor = []() -> void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		CCS->curh->dragAndDropCursor(nullptr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	addSet(artSet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	std::visit([this, artPutBackFunctor](auto artSetWeak) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	std::visit([this](auto artSetWeak) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			auto artSet = artSetWeak.lock(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			artSet->clickPressedCallback = std::bind(&CWindowWithArtifacts::clickPressedArtPlaceHero, this, _1, _2, _3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			artSet->showPopupCallback = std::bind(&CWindowWithArtifacts::showPopupArtPlaceHero, this, _1, _2, _3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			artSet->gestureCallback = std::bind(&CWindowWithArtifacts::gestureArtPlaceHero, this, _1, _2, _3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			artSet->setPutBackPickedArtifactCallback(artPutBackFunctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, artSet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -146,7 +146,7 @@ void CWindowWithArtifacts::clickPressedArtPlaceHero(CArtifactsOfHeroBase & artsI 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						if(checkSpecialArts(*art, hero, std::is_same_v<decltype(artSetWeak), std::weak_ptr<CArtifactsOfHeroAltar>> ? true : false)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							assert(artSetPtr->getHero()->getSlotByInstance(art)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							assert(artSetPtr->getHero()->getSlotByInstance(art) != ArtifactPosition::PRE_FIRST); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							LOCPLINT->cb->swapArtifacts(ArtifactLocation(artSetPtr->getHero()->id, artSetPtr->getHero()->getSlotByInstance(art)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								ArtifactLocation(artSetPtr->getHero()->id, ArtifactPosition::TRANSITION_POS)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,17 +296,7 @@ void CWindowWithArtifacts::artifactMoved(const ArtifactLocation & srcLoc, const 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const auto hero = artSetPtr->getHero(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if(pickedArtInst) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				markPossibleSlots(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(pickedArtInst->getTypeId() == ArtifactID::SPELL_SCROLL && pickedArtInst->getScrollSpellID().num >= 0 && settings["general"]["enableUiEnhancements"].Bool()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					auto anim = GH.renderHandler().loadAnimation(AnimationPath::builtin("spellscr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					anim->load(pickedArtInst->getScrollSpellID().num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					std::shared_ptr<IImage> img = anim->getImage(pickedArtInst->getScrollSpellID().num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					CCS->curh->dragAndDropCursor(img->scaleFast(Point(44, 34))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					CCS->curh->dragAndDropCursor(AnimationPath::builtin("artifact"), pickedArtInst->artType->getIconIndex()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				setCursorAnimation(*pickedArtInst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -476,3 +466,19 @@ bool CWindowWithArtifacts::checkSpecialArts(const CArtifactInstance & artInst, c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CWindowWithArtifacts::setCursorAnimation(const CArtifactInstance & artInst) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	markPossibleSlots(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if(artInst.isScroll() && settings["general"]["enableUiEnhancements"].Bool()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assert(artInst.getScrollSpellID().num >= 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const auto animation = GH.renderHandler().loadAnimation(AnimationPath::builtin("spellscr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		animation->load(artInst.getScrollSpellID().num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CCS->curh->dragAndDropCursor(animation->getImage(artInst.getScrollSpellID().num)->scaleFast(Point(44, 34))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CCS->curh->dragAndDropCursor(AnimationPath::builtin("artifact"), artInst.artType->getIconIndex()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |