#include "MainMenu.h" MainMenu::MenuResult MainMenu::Show(sf::RenderWindow& window) { //Load menu image from file sf::Texture image; image.loadFromFile(TEXTURE_DIR"mainmenu.png"); sf::Sprite sprite(image); //Setup clickable regions //Play menu item coordinates MenuItem levelTest; levelTest.rect.top = 0; levelTest.rect.height = 160; levelTest.rect.left = 0; levelTest.rect.width = 500; levelTest.action = LevelTest; MenuItem level1Button; level1Button.rect.top = 0; level1Button.rect.height = 160; level1Button.rect.left = 510; level1Button.rect.width = 1023; level1Button.action = Level1; MenuItem level2Button; level2Button.rect.top = 160; level2Button.rect.height = 390; level2Button.rect.left = 0; level2Button.rect.width = 500; level2Button.action = Level2; MenuItem level3Button; level3Button.rect.top = 160; level3Button.rect.height = 390; level3Button.rect.left = 510; level3Button.rect.width = 1023; level3Button.action = Level3; //Exit menu item coordinates MenuItem exitButton; exitButton.rect.top = 395; exitButton.rect.height = 560; exitButton.rect.left = 0; exitButton.rect.width = 1023; exitButton.action = Exit; _menuItems.push_back(levelTest); _menuItems.push_back(level1Button); _menuItems.push_back(level2Button); _menuItems.push_back(level3Button); _menuItems.push_back(exitButton); window.draw(sprite); window.display(); return GetMenuResponse(window); } MainMenu::MenuResult MainMenu::HandleClick(int x, int y) { std::list::iterator it; for (it = _menuItems.begin(); it != _menuItems.end(); it++) { sf::Rect menuItemRect = (*it).rect; if (x > menuItemRect.left && x < menuItemRect.left + menuItemRect.width && y > menuItemRect.top && y < menuItemRect.height + menuItemRect.top) { return (*it).action; } } return Nothing; } MainMenu::MenuResult MainMenu::GetMenuResponse(sf::RenderWindow& window) { sf::Event menuEvent; while (42 != 43) { while (window.pollEvent(menuEvent)) { if (menuEvent.type == sf::Event::MouseButtonPressed) { std::cout << "x Button: " << menuEvent.mouseButton.x << std::endl; std::cout << "y Button: " << menuEvent.mouseButton.y << std::endl; return HandleClick(menuEvent.mouseButton.x, menuEvent.mouseButton.y); } if (menuEvent.type == sf::Event::Closed) { return Exit; } } } }