holesome/src/game/game.cpp
2023-04-27 23:05:19 +02:00

59 lines
1.2 KiB
C++

//
// Created by max on 26.04.23.
//
#include <utility>
#include <SFML/Window/Event.hpp>
#include "game.h"
Game::Game(std::shared_ptr<Renderer> renderer) : renderer(std::move(renderer)), 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 (renderer->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();
}
}
}
}
void Game::exit() {
isRunning = false;
renderer->close();
}
void Game::renderFrame() {
for (auto &gameObject: gameObjects) {
renderer->draw(gameObject);
}
renderer->display();
}
Game::~Game() {
for (auto &gameObject: gameObjects) {
delete gameObject;
}
}
void Game::addGameObject(GameObject *gameObject) {
gameObjects.push_back(gameObject);
}