static int lua_newtextinput(lua_State* L) { const char* text = lua_gettop(L) >= 2 ? lua_tostring(L, 2) : ""; luawrap::push(L, TextField(lua_tointeger(L, 1), text)); return 1; }
int ChoosePlayerScreen::Run(sf::RenderWindow & App, Game &game) { sf::Event event; bool running = true; windowWidth = App.getSize().x; windowHeight = App.getSize().y; sf::Font font; if (!font.loadFromFile("fonts/arial.ttf")) std::cerr << "Problem with loading fonts" << std::endl; const float BACK_MENU_BUTTON_POS_X = 0.08; const float BACK_MENU_BUTTON_POS_Y = 0.10; sf::String backToMenuButtonPath("image/MenuButton.png"); sf::String backToMenuHoverButtonPath("image/MenuButtonShadow.png"); ButtonView backToMenuButton(backToMenuButtonPath, backToMenuHoverButtonPath, false); float backToMenuButtonWidth = backToMenuButton.getGlobalBounds().width; float backToMenuButtonHeight = backToMenuButton.getGlobalBounds().height; float backToMenuButtonPosX = windowWidth * BACK_MENU_BUTTON_POS_X - backToMenuButtonWidth * 0.5; float backToMenuButtonPosY = windowHeight * BACK_MENU_BUTTON_POS_Y - backToMenuButtonHeight * 0.5; backToMenuButton.setPosition(sf::Vector2f(backToMenuButtonPosX, backToMenuButtonPosY)); const int MAX_PLAYERS = 6; vector<string> players; std::string choosePlayerText = "Wpisz nazwe gracza"; sf::Text choosePlayerLabel(choosePlayerText, font, 50); choosePlayerLabel.setColor(sf::Color(255, 255, 255, 255)); float choosePlayerPosX = windowWidth * 0.50 - choosePlayerLabel.getGlobalBounds().width * 0.5; float choosePlayerPosY = windowHeight * 0.10 - choosePlayerLabel.getGlobalBounds().height * 0.5; choosePlayerLabel.setPosition(choosePlayerPosX, choosePlayerPosY); std::string playerName; sf::Color textColor = sf::Color::Black; sf::Vector2f frameSize(310, 45); sf::Color frameColor = sf::Color::White; float playerNamePosX = windowWidth * 0.35; float playerNamePosY = windowHeight * 0.32; playerNameTextField = TextField(playerName, font, 35, textColor); playerNameTextField.setFrame(frameSize, frameColor); playerNameTextField.setPositon(sf::Vector2f(playerNamePosX, playerNamePosY)); sf::String addPlayerButtonPath("image/Accept.png"); sf::String addPlayerHoverButtonPath("image/AcceptShadow.png"); ButtonView addPlayerButton(addPlayerButtonPath, addPlayerHoverButtonPath, false); float addPlayerButtonPosX = windowWidth * 0.70 - addPlayerButton.getGlobalBounds().width * 0.5; float addPlayerButtonPosY = windowHeight * 0.35 - addPlayerButton.getGlobalBounds().height * 0.5; addPlayerButton.setPosition(addPlayerButtonPosX, addPlayerButtonPosY); std::string playerText = "Wprowadz nazwy graczy"; sf::Text playerLabel(playerText, font, 30); playerLabel.setColor(sf::Color(255, 255, 255, 255)); float playerLabelPosX = windowWidth * 0.50 - playerLabel.getGlobalBounds().width * 0.5; float playerLabelPosY = windowHeight * 0.50 - playerLabel.getGlobalBounds().height * 0.5; playerLabel.setPosition(playerLabelPosX, playerLabelPosY); sf::String nextButtonPath("image/ForwardButton.png"); ButtonView nextButton(nextButtonPath, nextButtonPath, false); float nextButtonPosX = windowWidth * 0.80 - nextButton.getGlobalBounds().width * 0.5; float nextButtonPosY = windowHeight * 0.80 - nextButton.getGlobalBounds().height * 0.5; nextButton.setPosition(nextButtonPosX, nextButtonPosY); while (running) { while (App.pollEvent(event)) { sf::Mouse mouse; sf::Vector2i mousePos = mouse.getPosition(App); switch (event.type) { case sf::Event::Closed: App.close(); break; case sf::Event::MouseMoved: if (backToMenuButton.isButtonHoverd(mousePos) && mouse.isButtonPressed(sf::Mouse::Left)) { return (0); } if (nextButton.isButtonHoverd(mousePos) && mouse.isButtonPressed(sf::Mouse::Left)) { game.setPlayersNames(players); return (2); } if (addPlayerButton.isButtonHoverd(mousePos) && mouse.isButtonPressed(sf::Mouse::Left) && playerName.size() > 0) { players.push_back(playerName); playerName = ""; playerNameTextField.setString(playerName); playerText = ""; for (string name : players) { if (players.size() < MAX_PLAYERS || name != players.back()) playerText += name + " vs "; else playerText += name; } playerLabel.setString(playerText); playerLabelPosX = windowWidth * 0.50 - playerLabel.getGlobalBounds().width * 0.5; playerLabel.setPosition(playerLabelPosX, playerLabelPosY); } break; case sf::Event::TextEntered: playerName = playerNameTextField.action(event); break; default: break; } } App.clear(sf::Color(56, 134, 185, 255)); App.draw(playerLabel); App.draw(choosePlayerLabel); App.draw(backToMenuButton); playerNameTextField.draw(App); if (!addPlayerButton.isHidden()) App.draw(addPlayerButton); if (players.size() >= 2) App.draw(nextButton); App.display(); } return (-1); }