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;
}
Example #3
0
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();
    }
}
Example #4
0
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()));
}
Example #6
0
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();
}
Example #7
0
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);
}
Example #8
0
 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);
         }
     }
 }
Example #9
0
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;
				}
			}
	}


}
Example #10
0
void Editor::lightMapsReady()
{
	gDirtyLightmaps = false;
	saveLevel();
}
Example #11
0
void TlevelCreatorDlg::loadFromFile() {
    if (isNotSaved)
        saveLevel();
    m_levelSett->levelSelector()->loadFromFile();
}
Example #12
0
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();
    }
}