| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- * HeroInfoWindow.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #include "StdInc.h"
- #include "HeroInfoWindow.h"
- #include "../widgets/Images.h"
- #include "../widgets/TextControls.h"
- #include "../../lib/GameLibrary.h"
- #include "../../lib/gameState/InfoAboutArmy.h"
- #include "../../lib/texts/CGeneralTextHandler.h"
- HeroInfoBasicPanel::HeroInfoBasicPanel(const InfoAboutHero & hero, const Point * position, bool initializeBackground)
- : CIntObject(0)
- {
- OBJECT_CONSTRUCTION;
- if(position != nullptr)
- moveTo(*position);
- if(initializeBackground)
- {
- background = std::make_shared<CPicture>(ImagePath::builtin("CHRPOP"));
- background->setPlayerColor(hero.owner);
- }
- initializeData(hero);
- }
- void HeroInfoBasicPanel::initializeData(const InfoAboutHero & hero)
- {
- OBJECT_CONSTRUCTION;
- auto attack = hero.details->primskills[0];
- auto defense = hero.details->primskills[1];
- auto power = hero.details->primskills[2];
- auto knowledge = hero.details->primskills[3];
- auto morale = hero.details->morale;
- auto luck = hero.details->luck;
- auto currentSpellPoints = hero.details->mana;
- auto maxSpellPoints = hero.details->manaLimit;
- icons.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PortraitsLarge"), hero.getIconIndex(), 0, 10, 6));
- //primary stats
- labels.push_back(std::make_shared<CLabel>(9, 75, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[380] + ":"));
- labels.push_back(std::make_shared<CLabel>(9, 87, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[381] + ":"));
- labels.push_back(std::make_shared<CLabel>(9, 99, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[382] + ":"));
- labels.push_back(std::make_shared<CLabel>(9, 111, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[383] + ":"));
- labels.push_back(std::make_shared<CLabel>(69, 87, EFonts::FONT_TINY, ETextAlignment::BOTTOMRIGHT, Colors::WHITE, std::to_string(attack)));
- labels.push_back(std::make_shared<CLabel>(69, 99, EFonts::FONT_TINY, ETextAlignment::BOTTOMRIGHT, Colors::WHITE, std::to_string(defense)));
- labels.push_back(std::make_shared<CLabel>(69, 111, EFonts::FONT_TINY, ETextAlignment::BOTTOMRIGHT, Colors::WHITE, std::to_string(power)));
- labels.push_back(std::make_shared<CLabel>(69, 123, EFonts::FONT_TINY, ETextAlignment::BOTTOMRIGHT, Colors::WHITE, std::to_string(knowledge)));
- //morale+luck
- labels.push_back(std::make_shared<CLabel>(9, 131, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[384] + ":"));
- labels.push_back(std::make_shared<CLabel>(9, 143, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, LIBRARY->generaltexth->allTexts[385] + ":"));
- icons.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("IMRL22"), std::clamp(morale + 3, 0, 6), 0, 47, 131));
- icons.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("ILCK22"), std::clamp(luck + 3, 0, 6), 0, 47, 143));
- //spell points
- labels.push_back(std::make_shared<CLabel>(39, 174, EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, LIBRARY->generaltexth->allTexts[387]));
- labels.push_back(std::make_shared<CLabel>(39, 186, EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, std::to_string(currentSpellPoints) + "/" + std::to_string(maxSpellPoints)));
- }
- void HeroInfoBasicPanel::update(const InfoAboutHero & updatedInfo)
- {
- icons.clear();
- labels.clear();
- initializeData(updatedInfo);
- }
- void HeroInfoBasicPanel::show(Canvas & to)
- {
- showAll(to);
- CIntObject::show(to);
- }
- HeroInfoWindow::HeroInfoWindow(const InfoAboutHero & hero, const Point * position)
- : CWindowObject(RCLICK_POPUP | SHADOW_DISABLED, ImagePath::builtin("CHRPOP"))
- {
- OBJECT_CONSTRUCTION;
- if(position != nullptr)
- moveTo(*position);
- background->setPlayerColor(hero.owner); //maybe add this functionality to base class?
- content = std::make_shared<HeroInfoBasicPanel>(hero, nullptr, false);
- }
|