PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
entry_point.h
1#pragma once
2
3#include "pixelbullet/application/application.h"
4#include "pixelbullet/application/cli.h"
5#include "pixelbullet/application/log.h"
6#include "pixelbullet/application/specification.h"
7
8#include <exception>
9
10namespace pixelbullet
11{
12std::unique_ptr<Application> CreateApplication(const ApplicationBootstrap& bootstrap);
13}
14
15int main(int argc, char* argv[])
16{
17 const pixelbullet::ApplicationCommandLineArgs command_line_args{ argc, argv };
18 const char* binary_path = argv[0] ? argv[0] : "";
19 auto bootstrap = pixelbullet::CLI::ParseBootstrap(command_line_args, binary_path);
20 pixelbullet::logging::Initialize(bootstrap);
21 auto app_logger = pixelbullet::logging::Get(pixelbullet::logging::names::core_app);
22
23 int exit_code = 0;
24 try
25 {
26 exit_code = pixelbullet::Application::Launch(bootstrap, &pixelbullet::CreateApplication);
27 }
28 catch (const std::exception& exception)
29 {
30 app_logger->Critical("Unhandled exception: {}", exception.what());
31 exit_code = 1;
32 }
33 catch (...)
34 {
35 app_logger->Critical("Unhandled unknown exception");
36 exit_code = 1;
37 }
38
39 app_logger->Info("Process exiting with code {}", exit_code);
40 pixelbullet::logging::Shutdown();
41 return exit_code;
42}
Command-line arguments passed to the application.
Definition specification.h:16