1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-14 02:33:51 +02:00

small fix

This commit is contained in:
Laserlicht 2024-07-17 13:48:00 +02:00
parent f54b84ead9
commit f0435d8b8e
3 changed files with 14 additions and 3 deletions

View File

@ -44,6 +44,7 @@
#include "../render/CAnimation.h"
#include "../render/IRenderHandler.h"
#include "../adventureMap/CInGameConsole.h"
#include "../eventsSDL/InputHandler.h"
#include "../../CCallback.h"
#include "../../lib/CStack.h"
@ -470,6 +471,7 @@ void QuickSpellPanel::create()
});
button->setOverlay(std::make_shared<CAnimImage>(AnimationPath::builtin("spellint"), !spellIdentifier.empty() ? id.num + 1 : 0));
button->addPopupCallback([this, i, hero](){
GH.input().hapticFeedback();
GH.windows().createAndPushWindow<CSpellWindow>(hero, owner.curInt.get(), true, [this, i](SpellID spell){
Settings configID = persistentStorage.write["quickSpell"][std::to_string(i)];
configID->String() = spell.toSpell()->identifier;
@ -479,7 +481,7 @@ void QuickSpellPanel::create()
if(!id.hasValue() || !id.toSpell()->canBeCast(owner.getBattle().get(), spells::Mode::HERO, hero))
{
buttonsDisabled.push_back(std::make_shared<TransparentFilledRectangle>(Rect(2, 5 + 37 * i, 48, 36), ColorRGBA(0, 0, 0, 172)));
buttonsDisabled.push_back(std::make_shared<TransparentFilledRectangle>(Rect(2, 5 + 37 * i, 48, 36), ColorRGBA(0, 0, 0, 128)));
}
labels.push_back(std::make_shared<CLabel>(7, 8 + 37 * i, EFonts::FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, config["keyboard"]["battleSpellShortcut" + std::to_string(i)].String()));

View File

@ -160,6 +160,8 @@ private:
BattleInterface & owner;
public:
bool isEnabled; // isActive() is not working on multiple conditions, because of this we need a seperate flag
QuickSpellPanel(BattleInterface & owner);
void create();

View File

@ -226,6 +226,7 @@ void BattleWindow::hideStickyQuickSpellWindow()
showStickyQuickSpellWindow->Bool() = false;
quickSpellWindow->disable();
quickSpellWindow->isEnabled = false;
setPositionInfoWindow();
createTimerInfoWindows();
@ -238,9 +239,15 @@ void BattleWindow::showStickyQuickSpellWindow()
showStickyQuickSpellWindow->Bool() = true;
if(GH.screenDimensions().x >= 1050)
{
quickSpellWindow->enable();
quickSpellWindow->isEnabled = true;
}
else
{
quickSpellWindow->disable();
quickSpellWindow->isEnabled = false;
}
setPositionInfoWindow();
createTimerInfoWindows();
@ -251,7 +258,7 @@ void BattleWindow::createTimerInfoWindows()
{
OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
int xOffsetAttacker = quickSpellWindow->isActive() ? -53 : 0;
int xOffsetAttacker = quickSpellWindow->isEnabled ? -53 : 0;
if(LOCPLINT->cb->getStartInfo()->turnTimerInfo.battleTimer != 0 || LOCPLINT->cb->getStartInfo()->turnTimerInfo.unitTimer != 0)
{
@ -373,7 +380,7 @@ void BattleWindow::updateQueue()
void BattleWindow::setPositionInfoWindow()
{
int xOffsetAttacker = quickSpellWindow->isActive() ? -53 : 0;
int xOffsetAttacker = quickSpellWindow->isEnabled ? -53 : 0;
if(defenderHeroWindow)
{
Point position = (GH.screenDimensions().x >= 1000)