#include #include #include #include "icon.h" #include "Engine/Misc/Logger.hpp" #include "Game.hpp" static std::shared_ptr InitWindow(); int main(int argc, char** argv) { Logger& log = Logger::getInstance(); log.PrintInfo(LOGGER_MSG_FT("Create main window")); std::shared_ptr mainWindow = nullptr; try { mainWindow = InitWindow(); } catch (const std::exception& ex) { log.PrintCritical(std::string(ex.what())); return EXIT_FAILURE; } log.PrintInfo(LOGGER_MSG_FT("Create game instance")); Game& arcadeGame = Game::getInstance(mainWindow, true); GAME_STATUS status = GAME_INIT; for ( ;; ) { status = arcadeGame.Tick(); if (status == GAME_QUIT) break; } log.PrintInfo(LOGGER_MSG_FT("Bye bye!")); return EXIT_SUCCESS; } static std::shared_ptr InitWindow() { // Create default game window sf::ContextSettings sWindowSettings; sWindowSettings.depthBits = 0; sWindowSettings.stencilBits = 0; sWindowSettings.antialiasingLevel = 8; sWindowSettings.sRgbCapable = true; auto wnd = std::make_shared( sf::VideoMode(1280, 720), "ProtoTank", (sf::Style::Close | sf::Style::Titlebar), sWindowSettings ); if (wnd == nullptr) throw std::runtime_error("Failed to create the window"); wnd->setVerticalSyncEnabled(false); // Never use simultaneously with framerate limiter wnd->setFramerateLimit(60); // Never use simultaneously with VSync wnd->setKeyRepeatEnabled(false); wnd->setMouseCursorVisible(true); wnd->setIcon(64, 64, _aicon_bin); return wnd; }