Exemplo n.º 1
0
void VerifyHandler::invoke(logrec_t& r)
{
    w_assert0(r.valid_header());

    lsn_t lsn = r.lsn();
    PageID pid = r.pid();

    if (r.is_redo()) {
        checkRedo(r, pid, lsn, r.page_prev_lsn());

        if (r.is_multi_page()) {
            checkRedo(r, r.pid2(), lsn, r.page2_prev_lsn());
        }

        if (alloc_cache_t::is_alloc_pid(pid)) {
            // checkAlloc(r);
        }
    }

    if (merge) {
        w_assert0(pid >= lastPID);
        if (pid == lastPID) {
            w_assert0(lsn > lastLSN);
        }
        w_assert0(merge || lsn >= minLSN);
        w_assert0(merge || lsn <= maxLSN);
    }

    lastLSN = lsn;
    lastPID = pid;

    count++;
}
Exemplo n.º 2
0
Arquivo: player.cpp Projeto: zlv/Rong
void Player::moveMouse(QPointF& p) //изменение позиции мыши
{
    QPoint point;
    point.setY(p.y());
    if (directionSwaped_) //изменять направление, если включен бонус
        point.setX(-p.x());
    else
        point.setX( p.x());
    emit field_->circle()->platform(platform_)->changeAngle(point);
    checkRedo(); //проверка, правильно ли изменён угол
}
Exemplo n.º 3
0
//перемещать платформу по событию таймера / move element on timer event
void NoviceAI::timerTickd()
{
    if (listening_&timerTickdListening && direction_)
    {
        //увеличить или уменьшить угол
        field_->circle()->platform(platform_)->changeAngle(dang*direction_);
        //проверить на заход на другую платформу
        checkRedo();
        //больше не двигаться
        direction_ = 0;
    }
}
Exemplo n.º 4
0
Arquivo: player.cpp Projeto: zlv/Rong
void Player::keyPressed(int k) //нажатие на стрелку
{
    //подслушивать стрелки
    if (listening_&keyrdArrowListening)
    {
        Platform *platform = field_->circle()->platform(platform_);
        bool key = 1;
        if (listening_&keyrdSpeclListening) //движение с курсором
        {
            switch (k)
            {
            case Qt::Key_Up:
                cursor_.setY(cursor_.y()-dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_Left:
                cursor_.setX(cursor_.x()-dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_Down:
                cursor_.setY(cursor_.y()+dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_Right:
                cursor_.setX(cursor_.x()+dcoord*(directionSwaped_?-1:+1));
                break;
            default:
                key = 0;
            }
            if (key)
            {
                //показать курсор (или подсказку), если была нажата
                showCursor(); //какая-нибудь из наших клавиш
                checkRedo();
            }
        }
        //перемещение по двум сторонам
        else if (listening_&keyrdMovegListening)
        {
            double angle;
            switch (k)
            {
            case Qt::Key_Up:
            case Qt::Key_Left:
                //движение происходит влево, а не по часовой стрелке;
                angle = (platform_?-1:1)*dang*(directionSwaped_?-1:+1);
                emit platform->changeAngle(angle);//поэтому в зависимости
                checkRedo(); //от номера вагонетки ставится знак перед
                break; //изменением угла
            case Qt::Key_Down:
            case Qt::Key_Right:
                //движение происходит влево, а не по часовой стрелке;
                angle = (platform_?1:-1)*dang*(directionSwaped_?-1:+1);
                emit platform->changeAngle(angle);//поэтому в зависимости
                checkRedo(); //от номера вагонетки ставится знак перед
                break; //изменением угла
            default:
                key = 0;
            }
        }
        if (key)
        {
            //показать курсор (или подсказку), если была нажата
            showCursor(); //какая-нибудь из наших клавиш
            emit platform->changeAngle(cursor_);
        }
    }
    //альтернативные стрелки-буквы
    if (listening_&keyrdWasdkListening)
    {
        Platform *platform = field_->circle()->platform(platform_);
        bool key = 1;
        if (listening_&keyrdSpeclListening)
        {
            switch (k)
            {
            case Qt::Key_W:
                cursor_.setY(cursor_.y()-dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_A:
                cursor_.setX(cursor_.x()-dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_S:
                cursor_.setY(cursor_.y()+dcoord*(directionSwaped_?-1:+1));
                break;
            case Qt::Key_D:
                cursor_.setX(cursor_.x()+dcoord*(directionSwaped_?-1:+1));
                break;
            default:
                key = 0;
            }
            if (key)
            {
                //показать курсор (или подсказку), если была нажата
                showCursor(); //какая-нибудь из наших клавиш
                checkRedo();
            }
        }
        else if (listening_&keyrdMovegListening)
        {
            double angle;
            switch (k)
            {
            case Qt::Key_W:
            case Qt::Key_A:
                //движение происходит влево, а не по часовой стрелке;
                angle = (platform_?-1:1)*dang*(directionSwaped_?-1:+1);
                emit platform->changeAngle(angle);//поэтому в зависимости
                checkRedo(); //от номера вагонетки ставится знак перед
                break; //изменением угла
            case Qt::Key_S:
            case Qt::Key_D:
                //движение происходит влево, а не по часовой стрелке;
                angle = (platform_?1:-1)*dang*(directionSwaped_?-1:+1);
                emit platform->changeAngle(angle);//поэтому в зависимости
                checkRedo(); //от номера вагонетки ставится знак перед
                break; //изменением угла
            default:
                key = 0;
            }
        }
        if (key)
        {
            //показать курсор (или подсказку), если была нажата
            showCursor(); //какая-нибудь из наших клавиш
            emit platform->changeAngle(cursor_);
        }
    }
    //цифры для быстрого перехода к области круга
    if (listening_&keyrdNumbsListening)
    {
        Platform *platform = field_->circle()->platform(platform_);
        switch (k)
        {
        case Qt::Key_1:
        case Qt::Key_2:
        case Qt::Key_3:
        case Qt::Key_4:
        case Qt::Key_5:
        case Qt::Key_6:
        case Qt::Key_7:
        case Qt::Key_8:
        case Qt::Key_9:
            int num = k-Qt::Key_1; //номер сектора для перехода
            //угол перехода
            double angle = (PI*(num*2+1)/18*(platform_?+1:-1));
            //бонусное искажение
            if (directionSwaped_) angle = PI-angle;
            angle+=PI;
            emit platform->setAngle(angle);
            checkRedo();
            showCursor();
            break;
        }
    }
    //буквы для быстрого перехода к области круга
    if (listening_&keyrdAnumsListening)
    {
        Platform *platform = field_->circle()->platform(platform_);
        int num;
        bool key = 1;
        switch (k)
        {
        case Qt::Key_V:
            num = 0;
            break;
        case Qt::Key_B:
            num = 1;
            break;
        case Qt::Key_N:
            num = 2;
            break;
        case Qt::Key_G:
            num = 3;
            break;
        case Qt::Key_H:
            num = 4;
            break;
        case Qt::Key_J:
            num = 5;
            break;
        case Qt::Key_Y:
            num = 6;
            break;
        case Qt::Key_U:
            num = 7;
            break;
        case Qt::Key_I:
            num = 8;
            break;
        default:
            key = 0;
        }
        if (key)
        {
            //угол перехода
            double angle = (PI*(num*2+1)/18*(platform_?+1:-1));
            //бонусное искажение
            if (directionSwaped_) angle = PI-angle;
            angle+=PI;
            emit platform->setAngle(angle);
            checkRedo();
            showCursor();
        }
    }
}