Example #1
0
void InputManager::updateConditionMask()
{
    mMask = 1;
    if (keyboard.isEnabled())
        mMask += COND_ENABLED;
    if ((!chatWindow || !chatWindow->isInputFocused()) &&
        !NpcDialog::isAnyInputFocused() &&
        !InventoryWindow::isAnyInputFocused() &&
        (!tradeWindow || !tradeWindow->isInpupFocused()))
    {
        mMask += COND_NOINPUT;
    }

    if (!player_node || !player_node->getAway())
        mMask += COND_NOAWAY;

    if (!setupWindow || !setupWindow->isVisible())
        mMask += COND_NOSETUP;

    if (Game::instance() && Game::instance()->getValidSpeed())
        mMask += COND_VALIDSPEED;

    if (gui && !gui->getFocusHandler()->getModalFocused())
        mMask += COND_NOMODAL;

    NpcDialog *dialog = NpcDialog::getActive();
    if (!dialog || !dialog->isTextInputFocused())
        mMask += COND_NONPCINPUT;

    if (!player_node || !player_node->getDisableGameModifiers())
        mMask += COND_EMODS;

    if (!isActionActive(Input::KEY_STOP_ATTACK)
        && !isActionActive(Input::KEY_UNTARGET))
    {
        mMask += COND_NOTARGET;
    }

    if (!player_node || player_node->getFollow().empty())
        mMask += COND_NOFOLLOW;
}