📄 toplevel.cpp
字号:
launchButtonText = tr("Select Key");#endif view->showText( tr( "Press '%1'\nto start playing", "e.g. Select Key" ). arg(launchButtonText), yellow ); setFocusPolicy( StrongFocus );}KAstTopLevel::~KAstTopLevel(){}void KAstTopLevel::keyPressEvent( QKeyEvent *event ){ if ( event->isAutoRepeat() || !actions.contains( event->key() ) ) { event->ignore(); return; } havePress = TRUE; Action a = actions[ event->key() ]; switch ( a ) { case RotateLeft: view->rotateLeft( TRUE ); break; case RotateRight: view->rotateRight( TRUE ); break; case Thrust: view->thrust( TRUE ); break; case Shoot: view->shoot( TRUE ); break; case Shield: view->setShield( TRUE ); break; case Teleport: view->teleport( TRUE ); break; case Brake: view->brake( TRUE ); break; default: event->ignore(); return; } event->accept();}void KAstTopLevel::keyReleaseEvent( QKeyEvent *event ){ if ( event->isAutoRepeat() || !actions.contains( event->key() ) ) { event->ignore(); return; } Action a = actions[ event->key() ]; switch ( a ) { case RotateLeft: view->rotateLeft( FALSE ); break; case RotateRight: view->rotateRight( FALSE ); break; case Thrust: view->thrust( FALSE ); break; case Brake: view->brake( FALSE ); break; case Shield: view->setShield( FALSE ); break; case Teleport: view->teleport( FALSE ); break; case Shoot:#ifndef QTOPIA_PHONE view->shoot( FALSE ); break;#else if ( !view->gameOver() && !waitShip ) { view->shoot(FALSE); break; } // rollover intended#endif case Launch: if ( havePress && view->gameOver() ) { slotNewGame(); } else if ( havePress && waitShip ) { view->newShip(); waitShip = FALSE; view->hideText();#ifdef QTOPIA_PHONE ContextBar::setLabel(this, Key_Select, "qasteroids/powerups/shoot", tr("Shoot") ); updateContext1();#endif } else { event->ignore(); havePress = FALSE; return; } break; case NewGame: slotNewGame(); break;/* case Pause: { view->pause( TRUE ); QMessageBox::information( this, tr("KAsteroids is paused"), tr("Paused") ); view->pause( FALSE ); } break;*/ default: event->ignore(); havePress = FALSE; return; } havePress = FALSE; event->accept();}void KAstTopLevel::showEvent( QShowEvent *e ){ QMainWindow::showEvent( e ); view->pause( FALSE ); setFocus();}void KAstTopLevel::hideEvent( QHideEvent *e ){ QMainWindow::hideEvent( e ); view->pause( TRUE );}void KAstTopLevel::focusInEvent( QFocusEvent * ){ view->pause( FALSE ); setFocus();}void KAstTopLevel::focusOutEvent( QFocusEvent * ){ view->pause( TRUE );}void KAstTopLevel::slotNewGame(){#ifdef QTOPIA_PHONE delete contextMenu; contextMenu = 0; ContextBar::setLabel(this, Key_Select, "qasteroids/powerups/shoot", tr("Shoot") );#endif shipsRemain = 3; score = 0; scoreLCD->display( 0 ); level = 0; levelLCD->display( level+1 ); shipsLCD->display( shipsRemain ); view->newGame(); view->setRockSpeed( levels[0].rockSpeed ); view->addRocks( levels[0].nrocks ); view->newShip(); waitShip = FALSE; view->hideText(); isPaused = FALSE;}void KAstTopLevel::slotMissileFired(){ missileFired.play();}void KAstTopLevel::slotShipKilled(){ shipsRemain--; shipsLCD->display( shipsRemain ); shipDestroyed.play(); if ( shipsRemain > 0 ) { waitShip = TRUE; view->showText( tr( "Ship Destroyed\nPress '%1'", "e.g. Select Key").arg(launchButtonText), yellow ); } else { view->endGame(); doStats(); }#ifdef QTOPIA_PHONE ContextBar::setLabel(this, Key_Select, "qasteroids/ship/ship0000", tr("Launch")); ContextBar::clearLabel(this, Key_Context1); if (!contextMenu) contextMenu = new ContextMenu( this );#endif}void KAstTopLevel::slotRockHit( int size ){ switch ( size ) { case 0: score += 10; break; case 1: score += 20; break; default: score += 40; } rockDestroyed.play(); scoreLCD->display( score );}void KAstTopLevel::slotRocksRemoved(){ level++; if ( level >= MAX_LEVELS ) level = MAX_LEVELS - 1; view->setRockSpeed( levels[level-1].rockSpeed ); view->addRocks( levels[level-1].nrocks ); levelLCD->display( level+1 );}void KAstTopLevel::doStats(){ QString r( "0.00" ); if ( view->shots() ) r = QString::number( (double)view->hits() / view->shots() * 100.0, 'g', 2 ); view->showText( tr( "GAME OVER\nPress '%1'\nfor a new game.", "%1 = e.g. Select Key" ).arg(launchButtonText), yellow, FALSE );}void KAstTopLevel::slotUpdateVitals(){ brakesLCD->display( view->brakeCount() ); shieldLCD->display( view->shieldCount() ); shootLCD->display( view->shootCount() );// teleportsLCD->display( view->teleportCount() ); powerMeter->setValue( view->power() ); #ifdef QTOPIA_PHONE updateContext1();#endif}#ifdef QTOPIA_PHONEvoid KAstTopLevel::updateContext1(){ static int lastLabel = -1; int label = view->shieldCount() && view->power() ? 1 : 0; if (label != lastLabel) { if (label) { if(contextMenu) { delete contextMenu; contextMenu = 0; } ContextBar::setLabel(this, Key_Context1, "qasteroids/powerups/shield", tr("Shield")); } else { ContextBar::clearLabel(this, Key_Context1); if(waitShip) { if(!contextMenu) contextMenu = new ContextMenu(this); } else { if(contextMenu) { delete contextMenu; contextMenu = 0; } } } lastLabel = label; }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -