// // Created by max on 26.04.23. // #include #include #include #include "game.h" Game::Game(std::shared_ptr window) : window(std::move(window)), isRunning(false), gameObjects() { } void Game::run() { if (isRunning) { LOG(WARNING) << "Game is already running"; return; } isRunning = true; while (isRunning) { renderFrame(); // Process any events that have occurred since the last iteration sf::Event event{}; while (window->pollEvent(event)) { // If the event is to close the window, then close it if (event.type == sf::Event::Closed) { exit(); } if (event.key.code == sf::Keyboard::Escape || event.key.code == sf::Keyboard::Q) { exit(); } } } // sf::Clock clock; // sf::Time TimeSinceLastUpdate = sf::seconds(0); // // while (Window.isOpen()) // { // processEvents(); // TimeSinceLastUpdate += clock.restart(); // while (TimeSinceLastUpdate >= FPS_TIME) // { // TimeSinceLastUpdate -= FPS_TIME; // // update(); // processEvents(); // } // render(); // } } void Game::exit() { isRunning = false; window->close(); } void Game::renderFrame() { for (auto &gameObject: gameObjects) { gameObject->draw(*window, sf::RenderStates::Default); } window->display(); } Game::~Game() { for (auto &gameObject: gameObjects) { delete gameObject; } } //void Game::initWindow() //{ // sf::ContextSettings settings; // settings.antialiasingLevel = 8; // Window.create(sf::VideoMode(SCREEN_W, SCREEN_H), "Ping & Pong", sf::Style::Default, settings); // // Window.setFramerateLimit(FRAMERATE); //} // //void Game::update() //{ // if (bGameRun && tMultiBallTime.asSeconds() == -1) // { // for (std::list::iterator i = lBalls.begin(); i != lBalls.end(); ++i) // (*i)->update(); // // updateBars(); // // updatekBallGoal(); // } // updateScoreString(); // // updateMultiBall(); //} // //void Game::processEvents() //{ // sf::Event event; // while (Window.pollEvent(event)) // { // switch (event.type) // { // case sf::Event::KeyPressed: // { // //World.handleInput(event.key.code, true); // }break; // case sf::Event::KeyReleased: // { // if (event.key.code == sf::Keyboard::P) // bGameRun = !bGameRun; // //World.handleInput(event.key.code, false); // }break; // case sf::Event::Closed: // Window.close(); // break; // } // } //} // //void Game::render() //{ // Window.clear(); // // //Bg // Window.draw(Background); // // //Bar // for (std::list::iterator i = lBars.begin(); i != lBars.end(); ++i) // (*i)->draw(&Window); // // //Ball // if ((int)(tMultiBallTime.asSeconds() * 10) % 10 < 5.f) // for (std::list::iterator i = lBalls.begin(); i != lBalls.end(); ++i) // (*i)->draw(&Window); // // //Score // for (int i = 0; i < 2; i++) // Window.draw(sScoreString[i]); // // //pausemenu // if (!bGameRun) // PauseMenu.draw(&Window); // // Window.display(); //}