void LevelManager::queryChild() { activeLevelState = currentLevel->getState(); switch(activeLevelState) { case state::CHILD_SUCCESS: switch(currentLevel->getExitCode()) { case EXIT_PREVIOUS: currentLevel->resetDefaults(EXIT_NULL); previousLevel(); break; case EXIT_FORWARD: currentLevel->resetDefaults(EXIT_NULL); forwardLevel(); break; /*default: exit(0); // Soemthing went super wrong D: break;*/ } break; case state::CHILD_EXIT: // Child completes unsuccessfully // This should be the state for when the child signals an exit to the title screen. currentLevel = 0; // LevelManager signalling exited unsuccessfully // Suggest a save at this point or some shit before return to menu? currentState = state::CHILD_EXIT; break; } }
void PlayField::keyPressEvent(QKeyEvent * e) { int x=levelMap_->xpos(); int y=levelMap_->ypos(); switch (e->key()) { case Qt::Key_Up: if (e->state() & Qt::ControlModifier) step(x, 0); else if (e->state() & Qt::ShiftModifier) push(x, 0); else push(x, y-1); break; case Qt::Key_Down: if (e->state() & Qt::ControlModifier) step(x, MAX_Y); else if (e->state() & Qt::ShiftModifier) push(x, MAX_Y); else push(x, y+1); break; case Qt::Key_Left: if (e->state() & Qt::ControlModifier) step(0, y); else if (e->state() & Qt::ShiftModifier) push(0, y); else push(x-1, y); break; case Qt::Key_Right: if (e->state() & Qt::ControlModifier) step(MAX_X, y); else if (e->state() & Qt::ShiftModifier) push(MAX_X, y); else push(x+1, y); break; case Qt::Key_Q: KApplication::kApplication()->closeAllWindows(); break; case Qt::Key_Backspace: case Qt::Key_Delete: if (e->state() & Qt::ControlModifier) redo(); else undo(); break; #if 0 case Qt::Key_X: levelMap_->random(); levelChange(); repaint(false); break; case Qt::Key_R: level(levelMap_->level()); return; break; case Qt::Key_N: nextLevel(); return; break; case Qt::Key_P: previousLevel(); return; break; case Qt::Key_U: undo(); return; break; case Qt::Key_I: history_->redo(levelMap_); repaint(false); return; break; case Qt::Key_S: { QString buf; history_->save(buf); printf("%s\n", (char *) buf); } return; break; case Qt::Key_L: stopMoving(); history_->clear(); level(levelMap_->level()); { char buf[4096]="r1*D1*D1*r1*@r1*D1*"; //scanf("%s", buf); history_->load(levelMap_, buf); } updateStepsXpm(); updatePushesXpm(); repaint(false); return; break; #endif case Qt::Key_Print: HtmlPrinter::printHtml(levelMap_); break; default: e->ignore(); return; break; } }