int main(){ numRounds = 1; //ask for number of players numberOfPlayers(); //ask players to choose a level selectLevel(); //play game playGame(); int round = playAgain(); while (round == 1){ reset(); numRounds++; playGame(); round = playAgain(); } if (round == 0){ displayFinalScore(); } return 0; }
void LevelPanel::onProcessContainer(gui2::WidgetEvents& events) { for (std::size_t i = 0; i < levelListEntries.size(); ++i) { auto levelEntry = levelListEntries[i]; if (levelEntry->isMouseDown()) { selectLevel(i); } } if (dropdownMusic->wasChanged()) { try { dungeon->getLevel(getSelectedLevel()).setMusic(songIDs.at(dropdownMusic->getSelection())); } catch (...) { // No level selected or song ID somehow out of range? Ignore. } } if (dropdownBoss->wasChanged()) { try { dungeon->getLevel(getSelectedLevel()).setBoss(bossIDs.at(dropdownBoss->getSelection())); } catch (...) { // No level selected or boss ID somehow out of range? Ignore. } } updateSlider(); if (levelListSlider->isEnabled()) { if ((levelListContainer->isMouseOver() || levelListSlider->isMouseOver()) && events.mouseWheelDelta != 0) { scrollVelocity -= events.mouseWheelDelta * 5; } if (std::abs(scrollVelocity) > 0.0001f) { float newSliderValue = levelListSlider->getValue() + scrollVelocity; if (newSliderValue > levelListSlider->getMax()) { newSliderValue = levelListSlider->getMax(); scrollVelocity = 0.f; } else if (newSliderValue < levelListSlider->getMin()) { newSliderValue = levelListSlider->getMin(); scrollVelocity = 0.f; } levelListSlider->setValue(newSliderValue); scrollVelocity *= 0.75f; } } levelListInnerContainer->setPosition(0.f, -levelListSlider->getValue()); levelListInnerContainer->setSize(levelListContainer->getSize().x, levelListInnerContainer->getSize().y); if (dungeon != nullptr) { if (buttonAddLevel->isClicked()) { std::size_t insertionIndex = hasSelectedLevel() ? getSelectedLevel() + 1 : dungeon->getLevelCount(); dungeon->insertLevel(insertionIndex); updateDungeon(); selectLevel(insertionIndex); } if (buttonRemoveLevel->isClicked()) { if (hasSelectedLevel()) { deleteConfirmMessage->show(); } } if (deleteConfirmMessage->wasClosed() && deleteConfirmMessage->getClickedButton() == 0) { if (hasSelectedLevel()) { dungeon->removeLevel(getSelectedLevel()); updateDungeon(); if (dungeon->getLevelCount() == 0) { deselectLevel(); } else { selectLevel(selectedLevel == dungeon->getLevelCount() ? selectedLevel - 1 : selectedLevel); } } } if (buttonDuplicateLevel->isClicked()) { if (hasSelectedLevel()) { dungeon->insertLevel(getSelectedLevel()); const Level & sourceLevel = dungeon->getLevel(getSelectedLevel() + 1); Level & destLevel = dungeon->getLevel(getSelectedLevel()); destLevel.assign(sourceLevel); updateDungeon(); selectLevel(getSelectedLevel() + 1); } } if (buttonMoveLevelUp->isClicked()) { if (hasSelectedLevel() && getSelectedLevel() > 0) { dungeon->swapLevels(getSelectedLevel(), getSelectedLevel() - 1); updateDungeon(); selectLevel(getSelectedLevel() - 1); } } if (buttonMoveLevelDown->isClicked()) { if (hasSelectedLevel() && getSelectedLevel() < dungeon->getLevelCount() - 1) { dungeon->swapLevels(getSelectedLevel(), getSelectedLevel() + 1); updateDungeon(); selectLevel(getSelectedLevel() + 1); } } } }
int NewGameScreen::update() { sf::Event event; while(window.pollEvent(event)) { sf::Vector2f v = (sf::Vector2f)sf::Mouse::getPosition(window); if (event.type == sf::Event::MouseMoved) { bool buttonHovered = false; if (whiteHumanButton.containsMousePos(v) && whitePlayerSelected != HumanType) { // Highlight whiteHumanButton whiteHumanButton.setState(Highlighted); buttonHovered = true; } else if (blackHumanButton.containsMousePos(v) && blackPlayerSelected != HumanType) { // Highlight blackHumanButton blackHumanButton.setState(Highlighted); buttonHovered = true; } else if (whiteAIButton.containsMousePos(v) && whitePlayerSelected != AIType) { // Highlight whiteAIButton whiteAIButton.setState(Highlighted); buttonHovered = true; } else if (blackAIButton.containsMousePos(v) && blackPlayerSelected != AIType) { // Highlight blackAIButton blackAIButton.setState(Highlighted); buttonHovered = true; } if (whitePlayerSelected == AIType) { if (whiteLevelOneButton.containsMousePos(v) && whiteLevel != 1) { whiteLevelOneButton.setState(Highlighted); buttonHovered = true; } else if (whiteLevelTwoButton.containsMousePos(v) && whiteLevel != 2) { whiteLevelTwoButton.setState(Highlighted); buttonHovered = true; } else if (whiteLevelThreeButton.containsMousePos(v) && whiteLevel != 3) { whiteLevelThreeButton.setState(Highlighted); buttonHovered = true; } else if (whiteLevelFourButton.containsMousePos(v) && whiteLevel != 4) { whiteLevelFourButton.setState(Highlighted); buttonHovered = true; } else if (whiteLevelFiveButton.containsMousePos(v) && whiteLevel != 5) { whiteLevelFiveButton.setState(Highlighted); buttonHovered = true; } } else { if (whitePlayerName.containsMousePos(v) && whitePlayerName.getState() != Selected) { whitePlayerName.setState(Highlighted); buttonHovered = true; } } if (blackPlayerSelected == AIType) { if (blackLevelOneButton.containsMousePos(v) && blackLevel != 1) { blackLevelOneButton.setState(Highlighted); buttonHovered = true; } else if (blackLevelTwoButton.containsMousePos(v) && blackLevel != 2) { blackLevelTwoButton.setState(Highlighted); buttonHovered = true; } else if (blackLevelThreeButton.containsMousePos(v) && blackLevel != 3) { blackLevelThreeButton.setState(Highlighted); buttonHovered = true; } else if (blackLevelFourButton.containsMousePos(v) && blackLevel != 4) { blackLevelFourButton.setState(Highlighted); buttonHovered = true; } else if (blackLevelFiveButton.containsMousePos(v) && blackLevel != 5) { blackLevelFiveButton.setState(Highlighted); buttonHovered = true; } } else { if (blackPlayerName.containsMousePos(v) && blackPlayerName.getState() != Selected) { blackPlayerName.setState(Highlighted); buttonHovered = true; } } if (playButton.containsMousePos(v)) { playButton.setState(Highlighted); buttonHovered = true; } else if (mainMenuButton.containsMousePos(v)) { mainMenuButton.setState(Highlighted); buttonHovered = true; } if (!buttonHovered) { // If nothing hovered clearButtonHighlights(); } } else if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { whitePlayerName.setState(Normal); blackPlayerName.setState(Normal); if (whiteHumanButton.containsMousePos(v) && whitePlayerSelected != HumanType) { // Select white human changePlayerType(HumanType, White); } else if (blackHumanButton.containsMousePos(v) && blackPlayerSelected != HumanType) { // Select black human changePlayerType(HumanType, Black); } else if (whiteAIButton.containsMousePos(v) && whitePlayerSelected != AIType) { // Select white AI changePlayerType(AIType, White); } else if (blackAIButton.containsMousePos(v) && blackPlayerSelected != AIType) { // Select black AI changePlayerType(AIType, Black); } if (whitePlayerSelected == AIType) { if (whiteLevelOneButton.containsMousePos(v) && whiteLevel != 1) { whiteLevel = 1; selectLevel(&whiteLevelOneButton, White); } else if (whiteLevelTwoButton.containsMousePos(v) && whiteLevel != 2) { whiteLevel = 2; selectLevel(&whiteLevelTwoButton, White); } else if (whiteLevelThreeButton.containsMousePos(v) && whiteLevel != 3) { whiteLevel = 3; selectLevel(&whiteLevelThreeButton, White); } else if (whiteLevelFourButton.containsMousePos(v) && whiteLevel != 4) { whiteLevel = 4; selectLevel(&whiteLevelFourButton, White); } else if (whiteLevelFiveButton.containsMousePos(v) && whiteLevel != 5) { whiteLevel = 5; selectLevel(&whiteLevelFiveButton, White); } } else { if (whiteNameText.containsMousePos(v) || whitePlayerName.containsMousePos(v)) { whitePlayerName.setState(Selected); blackPlayerName.setState(Normal); } } if (blackPlayerSelected == AIType) { if (blackLevelOneButton.containsMousePos(v) && blackLevel != 1) { blackLevel = 1; selectLevel(&blackLevelOneButton, Black); } else if (blackLevelTwoButton.containsMousePos(v) && blackLevel != 2) { blackLevel = 2; selectLevel(&blackLevelTwoButton, Black); } else if (blackLevelThreeButton.containsMousePos(v) && blackLevel != 3) { blackLevel = 3; selectLevel(&blackLevelThreeButton, Black); } else if (blackLevelFourButton.containsMousePos(v) && blackLevel != 4) { blackLevel = 4; selectLevel(&blackLevelFourButton, Black); } else if (blackLevelFiveButton.containsMousePos(v) && blackLevel != 5) { blackLevel = 5; selectLevel(&blackLevelFiveButton, Black); } } else { if (blackNameText.containsMousePos(v) || blackPlayerName.containsMousePos(v)) { blackPlayerName.setState(Selected); whitePlayerName.setState(Normal); } } if (playButton.containsMousePos(v)) { createGame(); return 2; // Goes to gamescreen } else if (mainMenuButton.containsMousePos(v)) { return 0; } return 1; } else if (event.type == sf::Event::TextEntered) { if (whitePlayerName.getState() == Selected) { if (event.key.code == 8) { if (whiteNameString.getSize() > 0) { whiteNameString.erase(whiteNameString.getSize() - 1); } } else if (event.key.code == 10) { whitePlayerName.setState(Normal); } else if (event.text.unicode < 128) { whiteNameString.insert(whiteNameString.getSize(), event.text.unicode); } whitePlayerName.setString(whiteNameString); } else if (blackPlayerName.getState() == Selected) { if (event.key.code == 8) { if (blackNameString.getSize() > 0) { blackNameString.erase(blackNameString.getSize() - 1); } } else if (event.key.code == 10) { blackPlayerName.setState(Normal); } else if (event.text.unicode < 128) { blackNameString.insert(blackNameString.getSize(), event.text.unicode); } blackPlayerName.setString(blackNameString); } } else if (event.type == sf::Event::Closed) { window.close(); return -1; } } return 1; }