void AbstractController::saveAndUpdate(void) { saveLevel(_fileName); _undoStack->setClean(); updateSavingState(_undoStack->index()); _neverSavedBefore = false; _fileSaved = true; }
bool LevelEditor::saveLevelFromEditor(const std::string& dFolder){ if(m_Level){ m_Level->setName(m_NameBox->getString()); saveLevel(dFolder+"/"+m_Level->getName()+".blvl",m_Level); return true; } return false; }
GLvoid LevelEditor::buttonNextTriggered() { if (currentView == SET_NAME_VIEW) { if (currentName.endsWith(' ')) currentName.chop(1); if (currentName.startsWith(' ')) currentName.remove(0, 1); if (currentName != "") { currentName = currentName.toLower(); if (QFile::exists("resources/levels/xml/" + currentName + ".xml")) { currentError = "Name already taken."; return; } isMoving = true; emit playEffect(EFFECT_JUMPSMALL); currentActions->setPrimaryAction(GO_TO_SET_PARAM_VIEW); } } else if (currentView == SET_PARAM_VIEW) { isMoving = true; emit playEffect(EFFECT_JUMPSMALL); currentActions->setPrimaryAction(GO_TO_SET_GRAVITY_VIEW); } else if (currentView == SET_GRAVITY_VIEW) { emit playEffect(EFFECT_JUMPSMALL); isMoving = true; if (level == NULL) level = new Level(currentName, currentLength, currentWidth, this, asphaltSkin); level->setGravity(currentGravity); levelOffset->z -= ((currentLength * 0.4f) / 2.0f) - 10.0f; currentActions->setPrimaryAction(GO_TO_EDITING_LEVEL_VIEW); } else { saveLevel(); } }
void TlevelCreatorDlg::levelWasSelected(Tlevel level) { if (isNotSaved) saveLevel(); if (!level.name.isEmpty()) { m_questSett->loadLevel(&level); m_accSett->loadLevel(&level); // m_meloSett->loadLevel(&level); m_rangeSett->loadLevel(&level); } if (m_levelSett->levelSelector()->isSuitable()) { m_levelSett->startExamButton()->setDisabled(false); m_levelSett->startExerciseButton()->setDisabled(false); } else { m_levelSett->startExamButton()->setDisabled(true); m_levelSett->startExerciseButton()->setDisabled(true); } }
/** * @details Creates the level menu on the window and its necessary actions * in order to provide functionality for level saving, setting the * background tile of the level and exitting. */ void BBEditorWindow::createMenu() { QMenuBar * menuBar = this->menuBar(); QAction * saveFileAction; QAction * setBackgroundAction; QAction * exitAction; levelFileMenu = menuBar->addMenu("Level"); saveFileAction = levelFileMenu->addAction("Save"); connect(saveFileAction, SIGNAL(triggered()), this, SLOT(saveLevel())); setBackgroundAction = levelFileMenu->addAction("Background"); connect(setBackgroundAction, SIGNAL(triggered()), this, SLOT(getBackground())); exitAction = levelFileMenu->addAction("Quit"); connect(exitAction, SIGNAL(triggered()), this, SLOT(close())); }
void questionsSettings::loadLevel(Tlevel* level) { blockSignals(true); asNoteWdg->setAnswers(level->answersAs[TQAtype::e_asNote]); asNoteWdg->setChecked(level->questionAs.isNote()); // when it is false it cleans all checkBoxes to false asNameWdg->setAnswers(level->answersAs[TQAtype::e_asName]); asNameWdg->setChecked(level->questionAs.isName()); asFretPosWdg->setAnswers(level->answersAs[TQAtype::e_asFretPos]); asFretPosWdg->setChecked(level->questionAs.isFret()); asSoundWdg->setAnswers(level->answersAs[TQAtype::e_asSound]); asSoundWdg->setChecked(level->questionAs.isSound()); octaveRequiredChB->setChecked(level->requireOctave); styleRequiredChB->setChecked(level->requireStyle); showStrNrChB->setChecked(level->showStrNr); lowPosOnlyChBox->setChecked(level->onlyLowPos); m_intonationCombo->setCurrentIndex(level->intonation); if (level->melodyLen == 1) m_melodyLengthSpin->setRange(1, 1); else m_melodyLengthSpin->setRange(2, 50); m_melodyLengthSpin->setValue(level->melodyLen); m_finishOnTonicChB->setChecked(level->endsOnTonic); saveLevel(wLevel()); if (wLevel()->canBeMelody()) { m_melodiesGr->setChecked(true); m_singleGr->setChecked(false); if (level->questionAs.isNote() && level->answersAs[TQAtype::e_asNote].isSound()) m_playMelodyChB->setChecked(true); else m_playMelodyChB->setChecked(false); if (level->questionAs.isSound() && level->answersAs[TQAtype::e_asSound].isNote()) m_writeMelodyChB->setChecked(true); else m_writeMelodyChB->setChecked(false); } else { m_singleGr->setChecked(true); m_melodiesGr->setChecked(false); m_playMelodyChB->setChecked(false); m_writeMelodyChB->setChecked(false); } blockSignals(false); adjustToLevel(); }
void accidSettings::loadLevel (Tlevel* level) { blockSignals(true); m_sharpsChB->setChecked(level->withSharps); m_flatsChB->setChecked(level->withFlats); m_doubleAccChB->setChecked(level->withDblAcc); m_forceAccChB->setChecked(level->forceAccids); m_keySignGr->setChecked(level->useKeySign); if (level->isSingleKey) m_singleKeyRadio->setChecked(true); else m_rangeKeysRadio->setChecked(true); m_fromKeyCombo->setKeySignature(level->loKey); m_toKeyCombo->setKeySignature(level->hiKey); m_keyInAnswerChB->setChecked(level->manualKey); m_currKeySignChBox->setChecked(level->onlyCurrKey); keyRangeChanged(); changed(); saveLevel(wLevel()); blockSignals(false); }
void handleEvent(SDL_Event evt) { /* Left Ctrl+s -> Save level * Delete -> delete current block * Space -> Make current block draggable * Arrow keys -> Set direction of current block * Any valid letter -> create block of that type */ if(evt.type != SDL_KEYDOWN) return; if(evt.key.keysym.mod & KMOD_LCTRL && evt.key.keysym.sym == SDLK_s) { saveLevel(); } else if(evt.key.keysym.sym == SDLK_DELETE) { deleteBlock(); } else { switch(evt.key.keysym.sym) { case SDLK_UP: setBlockDirection(rtBlock::UP); break; case SDLK_DOWN: setBlockDirection(rtBlock::DOWN); break; case SDLK_RIGHT: setBlockDirection(rtBlock::RIGHT); break; case SDLK_LEFT: setBlockDirection(rtBlock::LEFT); break; case SDLK_SPACE: setDraggable(); break; default:setBlock(evt.key.keysym.sym); } } }
void StateEditor::handleEvents() { //////////////EVENT//////////////// if ( SDL_PollEvent(&event) ) { if ( event.type == SDL_QUIT ) setNextGameState(0); ////////////LEVEL EDITOR EVENT if ( event.type == SDL_MOUSEBUTTONDOWN ) { if (event.button.button == SDL_BUTTON_LEFT) b_placeObject = true; if (event.button.button == SDL_BUTTON_RIGHT) b_selectObject = true; } if ( event.type == SDL_MOUSEBUTTONUP ) { if (event.button.button == SDL_BUTTON_LEFT) b_placeObject = false; if (event.button.button == SDL_BUTTON_RIGHT) b_selectObject = false; } if ( event.type == SDL_KEYDOWN ) { switch(event.key.keysym.sym) { case SDLK_LEFT: f_left+=25; left = true; break; case SDLK_RIGHT: f_right+=25; right = true; break; case SDLK_DOWN: f_left = 0; f_right = 0; down = true; break; case SDLK_UP: up = true; break; default: break; } } if (event.type == SDL_KEYUP ) { switch(event.key.keysym.sym) { case SDLK_1: CURRENT_OBJECT = OBJECT_BLOCK; break; case SDLK_2: CURRENT_OBJECT = OBJECT_SPIKED; break; case SDLK_3: CURRENT_OBJECT = OBJECT_CONTROL; break; case SDLK_4: CURRENT_OBJECT = OBJECT_BREAKABLE; break; case SDLK_5: CURRENT_OBJECT = OBJECT_TIMED; break; case SDLK_6: CURRENT_OBJECT = OBJECT_PLAYER_BLOCK; break; case SDLK_7: CURRENT_OBJECT = OBJECT_FORCE_JUMP; break; case SDLK_8: CURRENT_OBJECT = OBJECT_EXIT; break; case SDLK_0: saveLevel(o_gameObjects, 0);break;//if ( play == false ) {saveLevel(o_gameObjects, 1); setUpLevel(o_gameObjects); play = true; objectNumber = NULL; } break; case SDLK_ESCAPE: setNextGameState(2);break; case SDLK_e: { for ( int n = 0; n < ( signed ) o_gameObjects.size(); n++ ) { GameObject * p; p = o_gameObjects[n]; delete p; } o_gameObjects.clear(); break; } /*case SDLK_c: { for ( int n = 0; n < 200; n++ ) { o_gameObjects.push_back(new Block(25,25)); } break; }*/ case SDLK_LEFT: f_left+=25; left = false; break; case SDLK_RIGHT: f_right+=25; right = false; break; case SDLK_DOWN: f_left = 0; f_right = 0; down = false; break; case SDLK_UP: up = false; break; //case SDLK_j: while ( 1 ) { std::cin >> f_speed; if ( std::cin.good() == true ) break; } break; //case SDLK_l: while ( 1 ) { std::cin >> f_time; if ( std::cin.good() == true ) break; } break; //case SDLK_DELETE: if ( b_deleteObject == false ) b_deleteObject = true; else if ( b_deleteObject == true ) b_deleteObject = false; break; default: break; } } } }
void Editor::lightMapsReady() { gDirtyLightmaps = false; saveLevel(); }
void TlevelCreatorDlg::loadFromFile() { if (isNotSaved) saveLevel(); m_levelSett->levelSelector()->loadFromFile(); }
void LevelEditor::itemClicked(QMouseEvent *event, QList<GLuint> listNames) { if (isMoving) return; Vector3f *pos = NULL; if (!listNames.isEmpty()) { switch (listNames.at(0)) { case BUTTON_VOLUME: if ((GLint(angleRotVolumeCube) % 90) == 0) { audioEnabled = !audioEnabled; emit enableAudio(audioEnabled); currentActions->appendSecondaryAction(ROTATE_VOLUMECUBE); } break; case BUTTON_SHORTEN: shorten(); break; case BUTTON_LENGTHEN: lengthen(); break; case BUTTON_REDUCE: reduce(); break; case BUTTON_ENLARGE: enlarge(); break; case BUTTON_GRAVITY_MINUS: gravityMinus(); break; case BUTTON_GRAVITY_PLUS: gravityPlus(); break; case BUTTON_BACK: buttonBackTriggered(); break; case BUTTON_NEXT: buttonNextTriggered(); break; case OBSTACLE_0: lastCentre = toolbarObstacleCentres.at(0); pos = getModelViewPos(new Vector3f(event->x(), event->y(), 0.0f), true); currentDelta = Vector3f(); deltaFromCentre = *pos - lastCentre; movingObject = 0; break; case OBSTACLE_1: lastCentre = toolbarObstacleCentres.at(1); pos = getModelViewPos(new Vector3f(event->x(), event->y(), 0.0f), true); currentDelta = Vector3f(); deltaFromCentre = *pos - lastCentre; movingObject = 1; break; case OBSTACLE_2: lastCentre = toolbarObstacleCentres.at(2); pos = getModelViewPos(new Vector3f(event->x(), event->y(), 0.0f), true); currentDelta = Vector3f(); deltaFromCentre = *pos - lastCentre; movingObject = 2; break; case OBSTACLE_3: lastCentre = toolbarObstacleCentres.at(3); pos = getModelViewPos(new Vector3f(event->x(), event->y(), 0.0f), true); currentDelta = Vector3f(); deltaFromCentre = *pos - lastCentre; movingObject = 3; break; case BUTTON_SAVE: saveLevel(); break; case BUTTON_CANCEL: level->clearTempObstaclesList(); emit playEffect(EFFECT_JUMP); break; case BUTTON_CLEAR: level->clearObstaclesList(); emit playEffect(EFFECT_JUMP); break; case BUTTON_EXIT: quitEditor(); break; case OBSTACLES: level->deleteObstacle(listNames.at(1)); break; } } }
void editLevelStateClass::update(sf::RenderWindow& window) { sf::Event event; while(window.pollEvent(event)) { if(event.type == sf::Event::Closed) { window.close(); } else if(event.type == sf::Event::KeyPressed) { switch(event.key.code) { case sf::Keyboard::Escape: { setNoMode(); break; } case sf::Keyboard::A: { drawAllFloor = !drawAllFloor; break; } case sf::Keyboard::F: { setAddFloorMode(); break; } case sf::Keyboard::W: { setAddWallMode("WALL"); break; } case sf::Keyboard::X: { setAddWallMode("STICKMAN_WALL"); break; } case sf::Keyboard::P: { currentMode = PLACE_PLAYER; break; } case sf::Keyboard::Return: { returnPressed(); break; } case sf::Keyboard::BackSpace: { backspacePressed(); break; } case sf::Keyboard::Delete: { deletePressed(); break; } case sf::Keyboard::LShift: { speedFactor = 5; break; } case sf::Keyboard::O: { saveLevel(); break; } case sf::Keyboard::I: { loadLevel(); break; } case sf::Keyboard::H: { moveAllLevel(-1, 0); break; } case sf::Keyboard::J: { moveAllLevel(0, 1); break; } case sf::Keyboard::K: { moveAllLevel(0, -1); break; } case sf::Keyboard::L: { moveAllLevel(1, 0); break; } case sf::Keyboard::F10: { global::activeGameStateStack->set(new mainMenuStateClass()); return; } case sf::Keyboard::Add: { if(static_cast<unsigned int>(currentFloor - 1) < listOfFloor.size()) { ++currentFloor; } break; } case sf::Keyboard::Subtract: { if(currentFloor > 0) { --currentFloor; } break; } case sf::Keyboard::B: { if(chooseNameOfLevel == false) { chooseNameOfLevel = true; tmpIndexOfLevel = currentIndexOfLevel; } else { --tmpIndexOfLevel; if(tmpIndexOfLevel < 0) { tmpIndexOfLevel = listOfLevel.size() - 1; } } nameOfLevelTextHasChanged(); break; } case sf::Keyboard::N: { if(chooseNameOfLevel == false) { chooseNameOfLevel = true; tmpIndexOfLevel = currentIndexOfLevel; } else { ++tmpIndexOfLevel; if(static_cast<unsigned int>(tmpIndexOfLevel) >= listOfLevel.size()) { tmpIndexOfLevel = 0; } } nameOfLevelTextHasChanged(); break; } case sf::Keyboard::M: { if(chooseNameOfLevel == true) { chooseNameOfLevel = false; currentIndexOfLevel = tmpIndexOfLevel; loadThisLevel(listOfLevel[currentIndexOfLevel]); } break; } default: { break; } } } else if(event.type == sf::Event::KeyReleased) { if(event.key.code == sf::Keyboard::LShift) { speedFactor = 1; } } else if(event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { leftClick(view.getCenter().x - ((WIDTH_SCREEN / 2) * zoomLevel) + event.mouseButton.x * zoomLevel, view.getCenter().y - ((HEIGHT_SCREEN / 2) * zoomLevel) + event.mouseButton.y * zoomLevel); } else if(event.mouseButton.button == sf::Mouse::Right) { rightClick(view.getCenter().x - ((WIDTH_SCREEN / 2) * zoomLevel) + event.mouseButton.x * zoomLevel, view.getCenter().y - ((HEIGHT_SCREEN / 2) * zoomLevel) + event.mouseButton.y * zoomLevel); } } else if(event.type == sf::Event::MouseWheelMoved) { zoomView(event.mouseWheel.delta); } if(event.type == sf::Event::TextEntered) { char character = static_cast<char>(event.text.unicode); if(character >= 48 && character <= 57 && currentMode == NO_MODE) { if(character - 48 < static_cast<char>(listOfFloor.size())) { currentFloor = character - 48; } } } } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Q)) { moveView(-speedView * zoomLevel - 1, 0); } if(sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { moveView(speedView * zoomLevel + 1, 0); } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) { moveView(0, -speedView * zoomLevel - 1); } if(sf::Keyboard::isKeyPressed(sf::Keyboard::S)) { moveView(0, speedView * zoomLevel + 1); } if(chooseNameOfLevel == true) { updateNameOfLevelText(); } }