1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Deactivate activeStack during spellCast

This commit is contained in:
Adriankhl 2023-03-24 22:43:41 +01:00
parent 459a6f067b
commit 76a71226a2
3 changed files with 21 additions and 1 deletions

View File

@ -310,6 +310,12 @@ void BattleInterface::spellCast(const BattleSpellCast * sc)
{
windowObject->blockUI(true);
// Disable current active stack duing the cast
// Store the current activeStack to stackToActivate
stacksController->deactivateStack();
CCS->curh->set(Cursor::Combat::BLOCKED);
const SpellID spellID = sc->spellID;
const CSpell * spell = spellID.toSpell();
auto targetedTile = sc->tile;
@ -551,6 +557,9 @@ void BattleInterface::endAction(const BattleAction* action)
{
const CStack *stack = curInt->cb->battleGetStackByID(action->stackNumber);
// Activate stack from stackToActivate because this might have been temporary disabled, e.g., during spell cast
activateStack();
stacksController->endAction(action);
windowObject->updateQueue();

View File

@ -683,6 +683,15 @@ void BattleStacksController::stackActivated(const CStack *stack)
owner.activateStack();
}
void BattleStacksController::deactivateStack()
{
if (!activeStack) {
return;
}
stackToActivate = activeStack;
setActiveStack(nullptr);
}
void BattleStacksController::activateStack()
{
if ( !currentAnimations.empty())

View File

@ -118,7 +118,9 @@ public:
void startAction(const BattleAction* action);
void endAction(const BattleAction* action);
void activateStack(); //sets activeStack to stackToActivate etc. //FIXME: No, it's not clear at all
void deactivateStack(); //copy activeStack to stackToActivate, then set activeStack to nullptr to temporary disable current stack
void activateStack(); //copy stackToActivate to activeStack to enable controls of the stack
void setActiveStack(const CStack *stack);
void setSelectedStack(const CStack *stack);