Răsfoiți Sursa

limit text size; fix

Laserlicht 4 luni în urmă
părinte
comite
678408c02c
1 a modificat fișierele cu 13 adăugiri și 4 ștergeri
  1. 13 4
      client/windows/CHeroWindow.cpp

+ 13 - 4
client/windows/CHeroWindow.cpp

@@ -160,14 +160,16 @@ CHeroWindow::CHeroWindow(const CGHeroInstance * hero)
 
 	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),  (secSkillSlider && i%2 == 1) ? 120 : 136,  42);
+		bool isSmallBox = (secSkillSlider && i%2 == 1);
+		Rect r = Rect(i%2 == 0  ?  18  :  162,  276 + 48 * (i/2), isSmallBox ? 120 : 136,  42);
 		secSkills.emplace_back(std::make_shared<CSecSkillPlace>(r.topLeft(), CSecSkillPlace::ImageSize::MEDIUM));
 
 		int x = (i % 2) ? 212 : 68;
 		int y = 280 + 48 * (i/2);
+		int width = isSmallBox ? 71 : 87;
 
-		secSkillValues.push_back(std::make_shared<CLabel>(x, y, FONT_SMALL, ETextAlignment::TOPLEFT));
-		secSkillNames.push_back(std::make_shared<CLabel>(x, y+20, FONT_SMALL, ETextAlignment::TOPLEFT));
+		secSkillValues.push_back(std::make_shared<CLabel>(x, y, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, "", width));
+		secSkillNames.push_back(std::make_shared<CLabel>(x, y+20, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, "", width));
 	}
 
 	// various texts
@@ -244,9 +246,16 @@ void CHeroWindow::update()
 	}
 
 	//secondary skills support
-	for(size_t g=0; g< secSkills.size(); ++g)
+	for(size_t g=0; g < secSkills.size(); ++g)
 	{
 		int offset = secSkillSlider ? secSkillSlider->getValue() * 2 : 0;
+		if(curHero->secSkills.size() < g + offset + 1)
+		{
+			secSkillNames[g]->setText("");
+			secSkillValues[g]->setText("");
+			secSkills[g]->setSkill(SecondarySkill::NONE);
+			break;
+		}
 		SecondarySkill skill = curHero->secSkills[g + offset].first;
 		int	level = curHero->getSecSkillLevel(skill);
 		std::string skillName = skill.toEntity(LIBRARY)->getNameTranslated();