int main() { std::list<MenuItem*> menu; std::list<MenuItem*>::iterator it; MenuItem menuItem1("Americano", 1500); MenuItem menuItem2("Latte", 2000); MenuItem menuItem3("Cappuccino", 2000); MenuItem menuItem4("Macchiato", 2500); MenuItem menuItem5("Espresso", 2500); menu.push_back(&menuItem1); menu.push_back(&menuItem2); Customer customer; Barista barista; customer.order("Americano", menu, barista); Coffee* coffee = customer.getCoffee(); std::cout << "--- My Coffee ---" << std::endl; std::cout << coffee->getName() << std::endl; std::cout << coffee->cost() << std::endl; return 1; }
StateMachine::State StateMachine::runGameDone() { State nextState; ResourceManager &resourceManager = ResourceManager::getInstance(); sf::RenderWindow &win = resourceManager.win; sf::Sprite backGround; backGround.SetTexture(resourceManager.textures.getTexture(0,"MenuBackground")); backGround.SetPosition(win.GetWidth()/2 - backGround.GetSize().x/2, win.GetHeight()/2 - backGround.GetSize().y/2); int x = resourceManager.win.GetWidth()/2 - 430; int y = resourceManager.win.GetHeight()/2 + 270; Menu menu(x, y); Menu::MenuItem menuItem1("Main menu", mainMenu); menu.addMenuItem(menuItem1); sf::Sound sound; for (int i=0; i<resourceManager.numberOfPlayers; i++) { if (resourceManager.players[i]->numberOfCardsLeft <= 0) { sound.SetBuffer(resourceManager.sounds.getSound(resourceManager.players[i]->themeId,"Winning")); } } sound.Play(); Stats stats[4]; for (int i=0; i<resourceManager.numberOfPlayers; i++) { stats[i].readStatsFromPlayer(resourceManager.players[i]); resourceManager.drawableList.push_back(&stats[i]); } for (int i=0; i<resourceManager.mice.numberOfActivatedDevices; i++) { resourceManager.mice.mouseList[i].visible = (i==0) ? true : false; } bool done = false; while(!done){ resourceManager.mice.update(); win.Clear(); sf::Event event; while (win.PollEvent(event)) { if (event.Type == sf::Event::Closed) { nextState = quit; win.Close(); done = true; } if ((event.Type == sf::Event::KeyPressed) && (event.Key.Code == sf::Keyboard::Escape)) { nextState = quit; win.Close(); done = true; } } win.Draw(backGround); resourceManager.processDrawables(); done = menu.getClickedState(nextState); win.Display(); } return nextState; }
StateMachine::State StateMachine::runMainMenu() { State nextState; ResourceManager &resourceManager = ResourceManager::getInstance(); sf::RenderWindow &win = resourceManager.win; sf::Sprite backGround; backGround.SetTexture(resourceManager.textures.getTexture(0,"MenuBackground")); backGround.SetPosition(win.GetWidth()/2 - backGround.GetSize().x/2, win.GetHeight()/2 - backGround.GetSize().y/2); sf::Sprite header; header.SetTexture(resourceManager.textures.getTexture(0,"HeaderMagicMemory")); header.SetPosition(win.GetWidth()/2 - header.GetSize().x/2, (win.GetHeight()/2 - 300) - header.GetSize().y/2); Menu menu; Menu::MenuItem menuItem1("New game", gameSetup); Menu::MenuItem menuItem2("Reload mice", loading); Menu::MenuItem menuItem3("Help", help); Menu::MenuItem menuItem4("Credits", credits); Menu::MenuItem menuItem5("Quit", quit); menu.addMenuItem(menuItem1); menu.addMenuItem(menuItem2); menu.addMenuItem(menuItem3); menu.addMenuItem(menuItem4); menu.addMenuItem(menuItem5); bool done = false; while (!done) { resourceManager.mice.update(); win.Clear(); sf::Event event; while (win.PollEvent(event)) { if (event.Type == sf::Event::Closed) { nextState = quit; win.Close(); done = true; } if ((event.Type == sf::Event::KeyPressed) && (event.Key.Code == sf::Keyboard::Escape)) { nextState = quit; win.Close(); done = true; } } win.Draw(backGround); win.Draw(header); resourceManager.processDrawables(); done = menu.getClickedState(nextState); win.Display(); } return nextState; }
StateMachine::State StateMachine::runHighScore() { State nextState; ResourceManager &resourceManager = ResourceManager::getInstance(); sf::RenderWindow &win = resourceManager.win; sf::Sprite backGround; backGround.SetTexture(resourceManager.textures.getTexture(0,"MenuBackground")); backGround.SetPosition(win.GetWidth()/2 - backGround.GetSize().x/2, win.GetHeight()/2 - backGround.GetSize().y/2); sf::Sprite header; header.SetTexture(resourceManager.textures.getTexture(0,"HeaderHighScore")); header.SetPosition(win.GetWidth()/2 - header.GetSize().x/2, (win.GetHeight()/2 -300) - header.GetSize().y/2); int x = resourceManager.win.GetWidth()/2 - 430; int y = resourceManager.win.GetHeight()/2 + 270; Menu menu(x, y); Menu::MenuItem menuItem1("Back", mainMenu); menu.addMenuItem(menuItem1); bool done = false; while(!done){ resourceManager.mice.update(); win.Clear(); sf::Event event; while (win.PollEvent(event)) { if (event.Type == sf::Event::Closed) { nextState = quit; win.Close(); done = true; } if ((event.Type == sf::Event::KeyPressed) && (event.Key.Code == sf::Keyboard::Escape)) { nextState = quit; win.Close(); done = true; } } win.Draw(backGround); win.Draw(header); resourceManager.processDrawables(); done = menu.getClickedState(nextState); win.Display(); } return nextState; }
StateMachine::State StateMachine::runCredits() { State nextState; ResourceManager &resourceManager = ResourceManager::getInstance(); sf::RenderWindow &win = resourceManager.win; sf::Sprite backGround; backGround.SetTexture(resourceManager.textures.getTexture(0,"MenuBackground")); backGround.SetPosition(win.GetWidth()/2 - backGround.GetSize().x/2, win.GetHeight()/2 - backGround.GetSize().y/2); sf::Sprite creditsImage; creditsImage.SetTexture(resourceManager.textures.getTexture(0,"Credits")); int creditsImagePosX = win.GetWidth()/2 - creditsImage.GetSize().x/2; int creditsImagePosY = 150; int creditsImageWidth = 740; int creditsImageHeight = 500; creditsImage.SetPosition(creditsImagePosX, creditsImagePosY); sf::Shape border = sf::Shape::Rectangle(creditsImagePosX, creditsImagePosY, creditsImageWidth, creditsImageHeight, sf::Color(17, 56, 121, 120), 2.0F, sf::Color(0,0,0,255)); sf::Sprite header; header.SetTexture(resourceManager.textures.getTexture(0,"HeaderCredits")); header.SetPosition(win.GetWidth()/2 - header.GetSize().x/2, (win.GetHeight()/2 -300) - header.GetSize().y/2); int x = resourceManager.win.GetWidth()/2; int y = resourceManager.win.GetHeight()/2 + 270; Menu menu(x, y); Menu::MenuItem menuItem1("Back", mainMenu); menu.addMenuItem(menuItem1); int scrollTop = 0; int maxScroll = creditsImage.GetSize().y - creditsImageHeight; int scrollSpeed = 20; bool done = false; while(!done){ resourceManager.mice.update(); win.Clear(); sf::Event event; while (win.PollEvent(event)) { if (event.Type == sf::Event::Closed) { nextState = quit; win.Close(); done = true; } if ((event.Type == sf::Event::KeyPressed) && (event.Key.Code == sf::Keyboard::Escape)) { nextState = quit; win.Close(); done = true; } } if (resourceManager.mice.mouseList[0].scroll != 0) { scrollTop += resourceManager.mice.mouseList->scroll*scrollSpeed;; scrollTop = std::max(0, scrollTop); scrollTop = std::min(maxScroll, scrollTop); } creditsImage.SetSubRect(sf::IntRect(0, scrollTop, creditsImageWidth, creditsImageHeight)); creditsImage.SetPosition(creditsImagePosX, creditsImagePosY); win.Draw(backGround); win.Draw(border); win.Draw(creditsImage); win.Draw(header); resourceManager.processDrawables(); done = menu.getClickedState(nextState); win.Display(); } return nextState; }