diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-10-31 21:16:59 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-10-31 21:16:59 +0300 |
commit | 2ff2ea08e8d158961d4d38c06ba93c52b919026d (patch) | |
tree | b4a1753f2cac1bdae8632375ecedd150108e1aad /src/input | |
parent | 0b1d9c0c58db75a1d4249f7b0fc3320b4de8cfa2 (diff) | |
download | mv-2ff2ea08e8d158961d4d38c06ba93c52b919026d.tar.gz mv-2ff2ea08e8d158961d4d38c06ba93c52b919026d.tar.bz2 mv-2ff2ea08e8d158961d4d38c06ba93c52b919026d.tar.xz mv-2ff2ea08e8d158961d4d38c06ba93c52b919026d.zip |
Add NOBLOCK input actions condition. This mean if player not blocked by special things like statuses.
Diffstat (limited to 'src/input')
-rw-r--r-- | src/input/inputactionmap.h | 2 | ||||
-rw-r--r-- | src/input/inputcondition.h | 4 | ||||
-rw-r--r-- | src/input/inputmanager.cpp | 19 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 2f6626799..f3e75ed40 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -263,7 +263,7 @@ static const InputActionData inputActionData Input::GRP_DEFAULT, &Actions::sit, InputAction::NO_VALUE, 50, - InputCondition::GAME | InputCondition::NOTARGET, + InputCondition::GAME | InputCondition::NOTARGET | InputCondition::NOBLOCK, "sit", UseArgs_false, Protected_false}, diff --git a/src/input/inputcondition.h b/src/input/inputcondition.h index 5687b6f6a..0f6e4cb6d 100644 --- a/src/input/inputcondition.h +++ b/src/input/inputcondition.h @@ -46,11 +46,13 @@ namespace InputCondition ALIVE = 32768, // player alive NOVENDING = 65536, // vending disabled NOROOM = 131072, // not joined room + NOBLOCK = 262144, // no blocked move (trick dead) SHORTCUT = 2 + 4 + 16 + 512 + 2048, // flags for shortcut keys SHORTCUT0 = 2 + 4 + 16 + 512, // flags for shortcut keys GAME = 2 + 4 + 8 + 16 + 64 + 2048, // main game key GAME2 = 2 + 8 + 16 + 64 + 2048, - ARROWKEYS = 2 + 4 + 8 + 16 + 64 + 2048 + 4096 + 16384 + 65536 + 131072 + ARROWKEYS = 2 + 4 + 8 + 16 + 64 + 2048 + 4096 + + 16384 + 65536 + 131072 + 262144 }; } // namespace InputCondition diff --git a/src/input/inputmanager.cpp b/src/input/inputmanager.cpp index 27d15a366..59fd1ff2d 100644 --- a/src/input/inputmanager.cpp +++ b/src/input/inputmanager.cpp @@ -732,11 +732,22 @@ void InputManager::updateConditionMask() if (Game::instance()) mMask |= InputCondition::INGAME; - if (!localPlayer || localPlayer->getFollow().empty()) - mMask |= InputCondition::NOFOLLOW; + if (localPlayer) + { + if (localPlayer->getFollow().empty()) + mMask |= InputCondition::NOFOLLOW; - if (localPlayer && localPlayer->isAlive()) - mMask |= InputCondition::ALIVE; + if (!localPlayer->isTrickDead()) + mMask |= InputCondition::NOBLOCK; + + if (localPlayer->isAlive()) + mMask |= InputCondition::ALIVE; + } + else + { + mMask |= InputCondition::NOFOLLOW; + mMask |= InputCondition::NOBLOCK; + } #endif if (!settings.awayMode) |