فهرست منبع

Merge pull request #4870 from SoundSSGood/secSkillPlace-fix

CHeroOverview secondary skill icons fixed
Ivan Savenko 11 ماه پیش
والد
کامیت
da8fe13632

+ 3 - 3
client/widgets/CComponentHolder.cpp

@@ -266,11 +266,11 @@ CSecSkillPlace::CSecSkillPlace(const Point & position, const ImageSize & imageSi
 {
 {
 	OBJECT_CONSTRUCTION;
 	OBJECT_CONSTRUCTION;
 
 
-	auto imagePath = AnimationPath::builtin("SECSKILL");
+	auto imagePath = AnimationPath::builtin("SECSK82");
 	if(imageSize == ImageSize::MEDIUM)
 	if(imageSize == ImageSize::MEDIUM)
-		imagePath = AnimationPath::builtin("SECSK32");
+		imagePath = AnimationPath::builtin("SECSKILL");
 	if(imageSize == ImageSize::SMALL)
 	if(imageSize == ImageSize::SMALL)
-		imagePath = AnimationPath::builtin("SECSK82");
+		imagePath = AnimationPath::builtin("SECSK32");
 
 
 	image = std::make_shared<CAnimImage>(imagePath, 0);
 	image = std::make_shared<CAnimImage>(imagePath, 0);
 	component.type = ComponentType::SEC_SKILL;
 	component.type = ComponentType::SEC_SKILL;

+ 3 - 3
client/windows/CExchangeWindow.cpp

@@ -82,7 +82,7 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2,
 
 
 
 
 		for(int m=0; m < hero->secSkills.size(); ++m)
 		for(int m=0; m < hero->secSkills.size(); ++m)
-			secSkills[leftRight].push_back(std::make_shared<CSecSkillPlace>(Point(32 + 36 * m + 454 * leftRight, qeLayout ? 83 : 88), CSecSkillPlace::ImageSize::MEDIUM,
+			secSkills[leftRight].push_back(std::make_shared<CSecSkillPlace>(Point(32 + 36 * m + 454 * leftRight, qeLayout ? 83 : 88), CSecSkillPlace::ImageSize::SMALL,
 				hero->secSkills[m].first, hero->secSkills[m].second));
 				hero->secSkills[m].first, hero->secSkills[m].second));
 
 
 		specImages[leftRight] = std::make_shared<CAnimImage>(AnimationPath::builtin("UN32"), hero->getHeroType()->imageIndex, 0, 67 + 490 * leftRight, qeLayout ? 41 : 45);
 		specImages[leftRight] = std::make_shared<CAnimImage>(AnimationPath::builtin("UN32"), hero->getHeroType()->imageIndex, 0, 67 + 490 * leftRight, qeLayout ? 41 : 45);
@@ -95,12 +95,12 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2,
 	}
 	}
 
 
 	artifs[0] = std::make_shared<CArtifactsOfHeroMain>(Point(-334, 151));
 	artifs[0] = std::make_shared<CArtifactsOfHeroMain>(Point(-334, 151));
-	artifs[0]->clickPressedCallback = [this, hero = heroInst[0]](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(hero, artPlace.slot, true, false, false);};
+	artifs[0]->clickPressedCallback = [this, hero = heroInst[0]](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(hero, artPlace.slot, true, false, false, cursorPosition);};
 	artifs[0]->showPopupCallback = [this, heroArts = artifs[0]](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*heroArts, artPlace, cursorPosition);};
 	artifs[0]->showPopupCallback = [this, heroArts = artifs[0]](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*heroArts, artPlace, cursorPosition);};
 	artifs[0]->gestureCallback = [this, hero = heroInst[0]](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(hero, artPlace.slot, cursorPosition);};
 	artifs[0]->gestureCallback = [this, hero = heroInst[0]](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(hero, artPlace.slot, cursorPosition);};
 	artifs[0]->setHero(heroInst[0]);
 	artifs[0]->setHero(heroInst[0]);
 	artifs[1] = std::make_shared<CArtifactsOfHeroMain>(Point(98, 151));
 	artifs[1] = std::make_shared<CArtifactsOfHeroMain>(Point(98, 151));
-	artifs[1]->clickPressedCallback = [this, hero = heroInst[1]](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(hero, artPlace.slot, true, false, false);};
+	artifs[1]->clickPressedCallback = [this, hero = heroInst[1]](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(hero, artPlace.slot, true, false, false, cursorPosition);};
 	artifs[1]->showPopupCallback = [this, heroArts = artifs[1]](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*heroArts, artPlace, cursorPosition);};
 	artifs[1]->showPopupCallback = [this, heroArts = artifs[1]](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*heroArts, artPlace, cursorPosition);};
 	artifs[1]->gestureCallback = [this, hero = heroInst[1]](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(hero, artPlace.slot, cursorPosition);};
 	artifs[1]->gestureCallback = [this, hero = heroInst[1]](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(hero, artPlace.slot, cursorPosition);};
 	artifs[1]->setHero(heroInst[1]);
 	artifs[1]->setHero(heroInst[1]);

+ 1 - 1
client/windows/CHeroBackpackWindow.cpp

@@ -35,7 +35,7 @@ CHeroBackpackWindow::CHeroBackpackWindow(const CGHeroInstance * hero, const std:
 	arts->moveBy(Point(windowMargin, windowMargin));
 	arts->moveBy(Point(windowMargin, windowMargin));
 	arts->clickPressedCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition)
 	arts->clickPressedCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition)
 	{
 	{
-		clickPressedOnArtPlace(arts->getHero(), artPlace.slot, true, false, true);
+		clickPressedOnArtPlace(arts->getHero(), artPlace.slot, true, false, true, cursorPosition);
 	};
 	};
 	arts->showPopupCallback = [this](CArtPlace & artPlace, const Point & cursorPosition)
 	arts->showPopupCallback = [this](CArtPlace & artPlace, const Point & cursorPosition)
 	{
 	{

+ 3 - 2
client/windows/CHeroOverview.cpp

@@ -18,7 +18,7 @@
 #include "../render/Colors.h"
 #include "../render/Colors.h"
 #include "../render/IImage.h"
 #include "../render/IImage.h"
 #include "../renderSDL/RenderHandler.h"
 #include "../renderSDL/RenderHandler.h"
-#include "../widgets/CComponent.h"
+#include "../widgets/CComponentHolder.h"
 #include "../widgets/Images.h"
 #include "../widgets/Images.h"
 #include "../widgets/TextControls.h"
 #include "../widgets/TextControls.h"
 #include "../widgets/GraphicalPrimitiveCanvas.h"
 #include "../widgets/GraphicalPrimitiveCanvas.h"
@@ -206,7 +206,8 @@ void CHeroOverview::genControls()
     i = 0;
     i = 0;
     for(auto & skill : (*CGI->heroh)[heroIdx]->secSkillsInit)
     for(auto & skill : (*CGI->heroh)[heroIdx]->secSkillsInit)
     {
     {
-        imageSecSkills.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("SECSK32"), (*CGI->skillh)[skill.first]->getIconIndex(skill.second + 2), 0, 302, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset)));
+        secSkills.push_back(std::make_shared<CSecSkillPlace>(Point(302, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset)),
+            CSecSkillPlace::ImageSize::SMALL, skill.first, skill.second));
         labelSecSkillsNames.push_back(std::make_shared<CLabel>(334 + 2 * borderOffset, 8 * borderOffset + yOffset + 186 + i * (32 + borderOffset) - 5, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->levels[skill.second - 1]));
         labelSecSkillsNames.push_back(std::make_shared<CLabel>(334 + 2 * borderOffset, 8 * borderOffset + yOffset + 186 + i * (32 + borderOffset) - 5, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->levels[skill.second - 1]));
         labelSecSkillsNames.push_back(std::make_shared<CLabel>(334 + 2 * borderOffset, 8 * borderOffset + yOffset + 186 + i * (32 + borderOffset) + 10, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, (*CGI->skillh)[skill.first]->getNameTranslated()));
         labelSecSkillsNames.push_back(std::make_shared<CLabel>(334 + 2 * borderOffset, 8 * borderOffset + yOffset + 186 + i * (32 + borderOffset) + 10, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, (*CGI->skillh)[skill.first]->getNameTranslated()));
         i++;
         i++;

+ 2 - 1
client/windows/CHeroOverview.h

@@ -19,6 +19,7 @@ class CComponentBox;
 class CTextBox;
 class CTextBox;
 class TransparentFilledRectangle;
 class TransparentFilledRectangle;
 class SimpleLine;
 class SimpleLine;
+class CSecSkillPlace;
 
 
 class CHeroOverview : public CWindowObject
 class CHeroOverview : public CWindowObject
 {
 {
@@ -60,7 +61,7 @@ class CHeroOverview : public CWindowObject
     std::vector<std::shared_ptr<CLabel>> labelSpellsNames;
     std::vector<std::shared_ptr<CLabel>> labelSpellsNames;
 
 
     std::shared_ptr<CLabel> labelSecSkillTitle;
     std::shared_ptr<CLabel> labelSecSkillTitle;
-    std::vector<std::shared_ptr<CAnimImage>> imageSecSkills;
+    std::vector<std::shared_ptr<CSecSkillPlace>> secSkills;
     std::vector<std::shared_ptr<CLabel>> labelSecSkillsNames;
     std::vector<std::shared_ptr<CLabel>> labelSecSkillsNames;
 
 
     void genBackground();
     void genBackground();

+ 2 - 2
client/windows/CHeroWindow.cpp

@@ -152,7 +152,7 @@ CHeroWindow::CHeroWindow(const CGHeroInstance * hero)
 	for(int i = 0; i < std::min<size_t>(hero->secSkills.size(), 8u); ++i)
 	for(int i = 0; i < std::min<size_t>(hero->secSkills.size(), 8u); ++i)
 	{
 	{
 		Rect r = Rect(i%2 == 0  ?  18  :  162,  276 + 48 * (i/2),  136,  42);
 		Rect r = Rect(i%2 == 0  ?  18  :  162,  276 + 48 * (i/2),  136,  42);
-		secSkills.emplace_back(std::make_shared<CSecSkillPlace>(r.topLeft(), CSecSkillPlace::ImageSize::LARGE));
+		secSkills.emplace_back(std::make_shared<CSecSkillPlace>(r.topLeft(), CSecSkillPlace::ImageSize::MEDIUM));
 
 
 		int x = (i % 2) ? 212 : 68;
 		int x = (i % 2) ? 212 : 68;
 		int y = 280 + 48 * (i/2);
 		int y = 280 + 48 * (i/2);
@@ -209,7 +209,7 @@ void CHeroWindow::update()
 		if(!arts)
 		if(!arts)
 		{
 		{
 			arts = std::make_shared<CArtifactsOfHeroMain>(Point(-65, -8));
 			arts = std::make_shared<CArtifactsOfHeroMain>(Point(-65, -8));
-			arts->clickPressedCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(curHero, artPlace.slot, true, false, false);};
+			arts->clickPressedCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition){clickPressedOnArtPlace(curHero, artPlace.slot, true, false, false, cursorPosition);};
 			arts->showPopupCallback = [this](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*arts, artPlace, cursorPosition);};
 			arts->showPopupCallback = [this](CArtPlace & artPlace, const Point & cursorPosition){showArtifactAssembling(*arts, artPlace, cursorPosition);};
 			arts->gestureCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(curHero, artPlace.slot, cursorPosition);};
 			arts->gestureCallback = [this](const CArtPlace & artPlace, const Point & cursorPosition){showQuickBackpackWindow(curHero, artPlace.slot, cursorPosition);};
 			arts->setHero(curHero);
 			arts->setHero(curHero);

+ 1 - 1
client/windows/CKingdomInterface.cpp

@@ -552,7 +552,7 @@ std::shared_ptr<CIntObject> CKingdomInterface::createMainTab(size_t index)
 			{
 			{
 				newHeroSet->clickPressedCallback = [this, newHeroSet](const CArtPlace & artPlace, const Point & cursorPosition)
 				newHeroSet->clickPressedCallback = [this, newHeroSet](const CArtPlace & artPlace, const Point & cursorPosition)
 				{
 				{
-					clickPressedOnArtPlace(newHeroSet->getHero(), artPlace.slot, false, false, false);
+					clickPressedOnArtPlace(newHeroSet->getHero(), artPlace.slot, false, false, false, cursorPosition);
 				};
 				};
 				newHeroSet->showPopupCallback = [this, newHeroSet](CArtPlace & artPlace, const Point & cursorPosition)
 				newHeroSet->showPopupCallback = [this, newHeroSet](CArtPlace & artPlace, const Point & cursorPosition)
 				{
 				{

+ 1 - 1
client/windows/CMarketWindow.cpp

@@ -262,7 +262,7 @@ void CMarketWindow::createAltarArtifacts(const IMarket * market, const CGHeroIns
 	const auto heroArts = altarArtifactsStorage->getAOHset();
 	const auto heroArts = altarArtifactsStorage->getAOHset();
 	heroArts->clickPressedCallback = [this, heroArts](const CArtPlace & artPlace, const Point & cursorPosition)
 	heroArts->clickPressedCallback = [this, heroArts](const CArtPlace & artPlace, const Point & cursorPosition)
 	{
 	{
-		clickPressedOnArtPlace(heroArts->getHero(), artPlace.slot, true, true, false);
+		clickPressedOnArtPlace(heroArts->getHero(), artPlace.slot, true, true, false, cursorPosition);
 	};
 	};
 	heroArts->showPopupCallback = [this, heroArts](CArtPlace & artPlace, const Point & cursorPosition)
 	heroArts->showPopupCallback = [this, heroArts](CArtPlace & artPlace, const Point & cursorPosition)
 	{
 	{

+ 5 - 3
client/windows/CWindowWithArtifacts.cpp

@@ -71,7 +71,7 @@ const CArtifactInstance * CWindowWithArtifacts::getPickedArtifact() const
 }
 }
 
 
 void CWindowWithArtifacts::clickPressedOnArtPlace(const CGHeroInstance * hero, const ArtifactPosition & slot,
 void CWindowWithArtifacts::clickPressedOnArtPlace(const CGHeroInstance * hero, const ArtifactPosition & slot,
-	bool allowExchange, bool altarTrading, bool closeWindow)
+	bool allowExchange, bool altarTrading, bool closeWindow, const Point & cursorPosition)
 {
 {
 	if(!LOCPLINT->makingTurn)
 	if(!LOCPLINT->makingTurn)
 		return;
 		return;
@@ -85,8 +85,7 @@ void CWindowWithArtifacts::clickPressedOnArtPlace(const CGHeroInstance * hero, c
 	}
 	}
 	else if(GH.isKeyboardShiftDown())
 	else if(GH.isKeyboardShiftDown())
 	{
 	{
-		if(ArtifactUtils::isSlotEquipment(slot))
-			GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
+		showQuickBackpackWindow(hero, slot, cursorPosition);
 	}
 	}
 	else if(auto art = hero->getArt(slot))
 	else if(auto art = hero->getArt(slot))
 	{
 	{
@@ -134,6 +133,9 @@ void CWindowWithArtifacts::showQuickBackpackWindow(const CGHeroInstance * hero,
 	if(!settings["general"]["enableUiEnhancements"].Bool())
 	if(!settings["general"]["enableUiEnhancements"].Bool())
 		return;
 		return;
 
 
+	if(!ArtifactUtils::isSlotEquipment(slot))
+		return;
+
 	GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
 	GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
 	auto backpackWindow = GH.windows().topWindow<CHeroQuickBackpackWindow>();
 	auto backpackWindow = GH.windows().topWindow<CHeroQuickBackpackWindow>();
 	backpackWindow->moveTo(cursorPosition - Point(1, 1));
 	backpackWindow->moveTo(cursorPosition - Point(1, 1));

+ 1 - 1
client/windows/CWindowWithArtifacts.h

@@ -28,7 +28,7 @@ public:
 	const CGHeroInstance * getHeroPickedArtifact() const;
 	const CGHeroInstance * getHeroPickedArtifact() const;
 	const CArtifactInstance * getPickedArtifact() const;
 	const CArtifactInstance * getPickedArtifact() const;
 	void clickPressedOnArtPlace(const CGHeroInstance * hero, const ArtifactPosition & slot,
 	void clickPressedOnArtPlace(const CGHeroInstance * hero, const ArtifactPosition & slot,
-		bool allowExchange, bool altarTrading, bool closeWindow);
+		bool allowExchange, bool altarTrading, bool closeWindow, const Point & cursorPosition);
 	void swapArtifactAndClose(const CArtifactsOfHeroBase & artsInst, const ArtifactPosition & slot, const ArtifactLocation & dstLoc);
 	void swapArtifactAndClose(const CArtifactsOfHeroBase & artsInst, const ArtifactPosition & slot, const ArtifactLocation & dstLoc);
 	void showArtifactAssembling(const CArtifactsOfHeroBase & artsInst, CArtPlace & artPlace, const Point & cursorPosition) const;
 	void showArtifactAssembling(const CArtifactsOfHeroBase & artsInst, CArtPlace & artPlace, const Point & cursorPosition) const;
 	void showQuickBackpackWindow(const CGHeroInstance * hero, const ArtifactPosition & slot, const Point & cursorPosition) const;
 	void showQuickBackpackWindow(const CGHeroInstance * hero, const ArtifactPosition & slot, const Point & cursorPosition) const;

+ 1 - 1
client/windows/GUIClasses.cpp

@@ -896,7 +896,7 @@ CUniversityWindow::CItem::CItem(CUniversityWindow * _parent, int _ID, int X, int
 	pos.x += X;
 	pos.x += X;
 	pos.y += Y;
 	pos.y += Y;
 
 
-	skill = std::make_shared<CSecSkillPlace>(Point(), CSecSkillPlace::ImageSize::LARGE, _ID, 1);
+	skill = std::make_shared<CSecSkillPlace>(Point(), CSecSkillPlace::ImageSize::MEDIUM, _ID, 1);
 	skill->setClickPressedCallback([this](const CComponentHolder&, const Point& cursorPosition)
 	skill->setClickPressedCallback([this](const CComponentHolder&, const Point& cursorPosition)
 		{
 		{
 			bool skillKnown = parent->hero->getSecSkillLevel(ID);
 			bool skillKnown = parent->hero->getSecSkillLevel(ID);