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++; }
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(); //проверка, правильно ли изменён угол }
//перемещать платформу по событию таймера / move element on timer event void NoviceAI::timerTickd() { if (listening_&timerTickdListening && direction_) { //увеличить или уменьшить угол field_->circle()->platform(platform_)->changeAngle(dang*direction_); //проверить на заход на другую платформу checkRedo(); //больше не двигаться direction_ = 0; } }
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(); } } }