1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Improve feature by triggering hero window refresh in response to netpack

This commit is contained in:
Dydzio
2023-07-22 21:51:14 +02:00
parent 05735a20e1
commit 47b6358e6e
4 changed files with 22 additions and 8 deletions

View File

@@ -476,6 +476,9 @@ void CPlayerInterface::heroManaPointsChanged(const CGHeroInstance * hero)
adventureInt->onHeroChanged(hero);
if (makingTurn && hero->tempOwner == playerID)
adventureInt->onHeroChanged(hero);
for (auto window : GH.windows().findWindows<BattleWindow>())
window->heroManaPointsChanged(hero);
}
void CPlayerInterface::heroMovePointsChanged(const CGHeroInstance * hero)
{

View File

@@ -584,15 +584,7 @@ void BattleInterface::endAction(const BattleAction* action)
//we have activated next stack after sending request that has been just realized -> blockmap due to movement has changed
if(action->actionType == EActionType::HERO_SPELL)
{
fieldController->redrawBackgroundWithHexes();
//update casting hero info window
auto hero = action->side == 0 ? attackingHero : defendingHero;
InfoAboutHero heroInfo = InfoAboutHero();
heroInfo.initFromHero(hero->instance(), InfoAboutHero::INBATTLE);
windowObject->updateHeroInfoWindow(action->side, heroInfo);
}
}
void BattleInterface::appendBattleLog(const std::string & newEntry)

View File

@@ -256,6 +256,21 @@ void BattleWindow::updateHeroInfoWindow(uint8_t side, const InfoAboutHero & hero
panelToUpdate->update(hero);
}
void BattleWindow::heroManaPointsChanged(const CGHeroInstance * hero)
{
if(hero == owner.attackingHeroInstance || hero == owner.defendingHeroInstance)
{
InfoAboutHero heroInfo = InfoAboutHero();
heroInfo.initFromHero(hero, InfoAboutHero::INBATTLE);
updateHeroInfoWindow(hero == owner.attackingHeroInstance ? 0 : 1, heroInfo);
}
else
{
logGlobal->error("BattleWindow::heroManaPointsChanged: 'Mana points changed' called for hero not belonging to current battle window");
}
}
void BattleWindow::activate()
{
GH.setStatusbar(console);

View File

@@ -79,9 +79,13 @@ public:
void hideQueue();
void showQueue();
/// Toggle permanent hero info windows visibility (HD mod feature)
void hideStickyHeroWindows();
void showStickyHeroWindows();
/// Event handler for netpack changing hero mana points
void heroManaPointsChanged(const CGHeroInstance * hero);
/// block all UI elements when player is not allowed to act, e.g. during enemy turn
void blockUI(bool on);