Browse Source

Merge pull request #2951 from Laserlicht/spell_icon

specific spell icon (artifacts)
Nordsoft91 2 years ago
parent
commit
8c6381b497

+ 18 - 0
client/widgets/CArtifactHolder.cpp

@@ -18,6 +18,7 @@
 #include "../windows/GUIClasses.h"
 #include "../render/Canvas.h"
 #include "../render/Colors.h"
+#include "../render/IRenderHandler.h"
 #include "../CPlayerInterface.h"
 #include "../CGameInfo.h"
 
@@ -25,6 +26,7 @@
 #include "../../lib/CGeneralTextHandler.h"
 #include "../../lib/ArtifactUtils.h"
 #include "../../lib/mapObjects/CGHeroInstance.h"
+#include "../../lib/CConfigHandler.h"
 
 void CArtPlace::setInternals(const CArtifactInstance * artInst)
 {
@@ -33,12 +35,16 @@ void CArtPlace::setInternals(const CArtifactInstance * artInst)
 	if(!artInst)
 	{
 		image->disable();
+		imageSpell->disable();
 		text.clear();
 		hoverText = CGI->generaltexth->allTexts[507];
 		return;
 	}
+
 	image->enable();
+	imageSpell->disable();
 	image->setFrame(artInst->artType->getIconIndex());
+	
 	if(artInst->getTypeId() == ArtifactID::SPELL_SCROLL)
 	{
 		auto spellID = artInst->getScrollSpellID();
@@ -48,6 +54,13 @@ void CArtPlace::setInternals(const CArtifactInstance * artInst)
 			baseType = CComponent::spell;
 			type = spellID;
 			bonusValue = 0;
+
+			if(settings["general"]["enableUiEnhancements"].Bool())
+			{
+				imageSpell->enable();
+				image->disable();
+				imageSpell->setFrame(spellID.num);
+			}
 		}
 	}
 	else
@@ -56,6 +69,7 @@ void CArtPlace::setInternals(const CArtifactInstance * artInst)
 		type = artInst->getTypeId();
 		bonusValue = 0;
 	}
+
 	text = artInst->getDescription();
 }
 
@@ -247,9 +261,13 @@ void CHeroArtPlace::createImage()
 	else if(ourArt)
 		imageIndex = ourArt->artType->getIconIndex();
 
+	imageSpell = std::make_shared<CAnimImage>(GH.renderHandler().loadAnimation(AnimationPath::builtin("spellscr")), 0, Rect(0, 5, 44, 34));
 	image = std::make_shared<CAnimImage>(AnimationPath::builtin("artifact"), imageIndex);
 	if(!ourArt)
+	{
 		image->disable();
+		imageSpell->disable();
+	}
 
 	selection = std::make_shared<CAnimImage>(AnimationPath::builtin("artifact"), ArtifactID::ART_SELECTION);
 	selection->disable();

+ 1 - 0
client/widgets/CArtifactHolder.h

@@ -34,6 +34,7 @@ class CArtPlace : public LRClickableAreaWTextComp
 {
 protected:
 	std::shared_ptr<CAnimImage> image;
+	std::shared_ptr<CAnimImage> imageSpell;
 	const CArtifactInstance * ourArt;
 
 	void setInternals(const CArtifactInstance * artInst);

+ 15 - 1
client/widgets/CWindowWithArtifacts.cpp

@@ -14,6 +14,10 @@
 #include "../gui/CursorHandler.h"
 #include "../gui/WindowHandler.h"
 
+#include "../render/IRenderHandler.h"
+#include "../render/CAnimation.h"
+#include "../render/IImage.h"
+
 #include "CComponent.h"
 
 #include "../windows/CHeroWindow.h"
@@ -25,6 +29,7 @@
 #include "../../lib/ArtifactUtils.h"
 #include "../../lib/CGeneralTextHandler.h"
 #include "../../lib/mapObjects/CGHeroInstance.h"
+#include "../../lib/CConfigHandler.h"
 
 void CWindowWithArtifacts::addSet(CArtifactsOfHeroPtr artSet)
 {
@@ -270,7 +275,16 @@ void CWindowWithArtifacts::artifactMoved(const ArtifactLocation & srcLoc, const
 			if(pickedArtInst)
 			{
 				markPossibleSlots();
-				CCS->curh->dragAndDropCursor(AnimationPath::builtin("artifact"), pickedArtInst->artType->getIconIndex());
+				
+				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());
 			}
 			else
 			{