1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Merge pull request #4870 from SoundSSGood/secSkillPlace-fix

CHeroOverview secondary skill icons fixed
This commit is contained in:
Ivan Savenko
2024-11-06 22:02:28 +02:00
committed by GitHub
11 changed files with 23 additions and 19 deletions

View File

@@ -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;

View File

@@ -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]);

View File

@@ -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)
{ {

View File

@@ -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++;

View File

@@ -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();

View File

@@ -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);

View File

@@ -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)
{ {

View File

@@ -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)
{ {

View File

@@ -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)) showQuickBackpackWindow(hero, slot, cursorPosition);
GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
} }
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));

View File

@@ -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;

View File

@@ -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);