mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Add SHIFT + hover shortcut to show movement highlight while pressed.
This commit is contained in:
@@ -198,6 +198,23 @@ void BattleWindow::keyPressed(const SDL_Keycode & key)
|
|||||||
{
|
{
|
||||||
owner.actionsController->endCastingSpell();
|
owner.actionsController->endCastingSpell();
|
||||||
}
|
}
|
||||||
|
else if(key == SDLK_LSHIFT)
|
||||||
|
{
|
||||||
|
// save and activate setting
|
||||||
|
Settings movementHighlightOnHover = settings.write["battle"]["movementHighlightOnHover"];
|
||||||
|
movementHighlightOnHoverCache = movementHighlightOnHover->Bool();
|
||||||
|
movementHighlightOnHover->Bool() = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BattleWindow::keyReleased(const SDL_Keycode & key)
|
||||||
|
{
|
||||||
|
if(key == SDLK_LSHIFT)
|
||||||
|
{
|
||||||
|
// set back to initial state
|
||||||
|
Settings movementHighlightOnHover = settings.write["battle"]["movementHighlightOnHover"];
|
||||||
|
movementHighlightOnHover->Bool() = movementHighlightOnHoverCache;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleWindow::clickRight(tribool down, bool previousState)
|
void BattleWindow::clickRight(tribool down, bool previousState)
|
||||||
|
@@ -85,6 +85,7 @@ public:
|
|||||||
void activate() override;
|
void activate() override;
|
||||||
void deactivate() override;
|
void deactivate() override;
|
||||||
void keyPressed(const SDL_Keycode & key) override;
|
void keyPressed(const SDL_Keycode & key) override;
|
||||||
|
void keyReleased(const SDL_Keycode& key) override;
|
||||||
void clickRight(tribool down, bool previousState) override;
|
void clickRight(tribool down, bool previousState) override;
|
||||||
void show(SDL_Surface *to) override;
|
void show(SDL_Surface *to) override;
|
||||||
void showAll(SDL_Surface *to) override;
|
void showAll(SDL_Surface *to) override;
|
||||||
@@ -98,5 +99,8 @@ public:
|
|||||||
/// Set possible alternative options. If more than 1 - the last will be considered as default option
|
/// Set possible alternative options. If more than 1 - the last will be considered as default option
|
||||||
void setAlternativeActions(const std::list<PossiblePlayerBattleAction> &);
|
void setAlternativeActions(const std::list<PossiblePlayerBattleAction> &);
|
||||||
|
|
||||||
|
private:
|
||||||
|
/// used to save the state of this setting on toggle.
|
||||||
|
bool movementHighlightOnHoverCache;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -418,7 +418,7 @@ void CGuiHandler::handleCurrentEvent( SDL_Event & current )
|
|||||||
for(auto i = miCopy.begin(); i != miCopy.end() && continueEventHandling; i++)
|
for(auto i = miCopy.begin(); i != miCopy.end() && continueEventHandling; i++)
|
||||||
if(vstd::contains(keyinterested,*i) && (!keysCaptured || (*i)->captureThisKey(key.keysym.sym)))
|
if(vstd::contains(keyinterested,*i) && (!keysCaptured || (*i)->captureThisKey(key.keysym.sym)))
|
||||||
{
|
{
|
||||||
if (key.state == SDL_PRESSED)
|
if (key.state == SDL_PRESSED && key.repeat == 0) // function like key_DOWN, and not like a periodic key_Pressed check
|
||||||
(**i).keyPressed(key.keysym.sym);
|
(**i).keyPressed(key.keysym.sym);
|
||||||
if (key.state == SDL_RELEASED)
|
if (key.state == SDL_RELEASED)
|
||||||
(**i).keyReleased(key.keysym.sym);
|
(**i).keyReleased(key.keysym.sym);
|
||||||
|
Reference in New Issue
Block a user