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/specification.h"
6#include "pixelbullet/logging/log.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(pixelbullet::logging::StartupInfo{
21 .binary_path = bootstrap.binary_path,
22 .log_directory_override = bootstrap.launch_options.log_directory_override,
23 });
24 auto app_logger = pixelbullet::logging::get(pixelbullet::logging::names::core_app);
25
26 int exit_code = 0;
27 try
28 {
29 exit_code = pixelbullet::Application::Launch(bootstrap, &pixelbullet::CreateApplication);
30 }
31 catch (const std::exception& exception)
32 {
33 app_logger->critical("Unhandled exception: {}", exception.what());
34 exit_code = 1;
35 }
36 catch (...)
37 {
38 app_logger->critical("Unhandled unknown exception");
39 exit_code = 1;
40 }
41
42 app_logger->info("Process exiting with code {}", exit_code);
43 pixelbullet::logging::shutdown();
44 return exit_code;
45}
Definition specification.h:61
Command-line arguments passed to the application.
Definition specification.h:19