PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
application_shell_internal.h
1#pragma once
2
3#include "application_internal.h"
4
5#include "pixelbullet/application/launch_gpu_defaults_internal.h"
6
7#include <filesystem>
8#include <functional>
9#include <memory>
10#include <optional>
11#include <string>
12
13namespace pixelbullet
14{
15class Event;
16class Layer;
17} // namespace pixelbullet
18
19namespace pixelbullet::application_internal
20{
22{
23 bool runfiles_available = false;
24 std::filesystem::path packaged_runtime_root;
25};
26
28{
29 std::function<RuntimeInitializationSummary(const ApplicationSpecification&, const std::string&)> create_filesystem;
30 std::function<void()> create_resource_cache;
31 std::function<void(const ApplicationSpecification&, bool)> create_window;
32 std::function<void(const std::function<void(Event&)>&)> set_window_event_callback;
33 std::function<void(const ApplicationSpecification&, const ApplicationLaunchOptions&)> create_graphics;
34 std::function<void(const ResolvedLaunchGpuDefaults&)> set_graphics_launch_gpu_defaults;
35 std::function<void(const std::function<void(uint32_t)>&)> set_framebuffer_resize_callback;
36 std::function<void(const std::string&)> set_window_icon;
37 std::function<void()> create_audio;
38 std::function<void()> create_layer_stack;
39 std::function<void()> clear_renderer;
40 std::function<void(UiFrameLayer*&)> reset_layer_stack;
41 std::function<void()> reset_resource_cache;
42};
43
44enum class LayerInsertion
45{
46 Layer,
47 Overlay
48};
49
50enum class LaunchRunOutcome
51{
52 Completed,
53 SmokeSucceeded,
54 SmokeTimedOut
55};
56
58{
59 std::function<std::optional<int>(const ApplicationBootstrap&)> execute_cli;
60 std::function<LaunchRunOutcome(const ApplicationBootstrap&)> run_application;
61};
62
64{
65 int exit_code = 1;
66 bool cli_handled = false;
67};
68
69[[nodiscard]] RuntimeInitializationSummary InitializeApplicationRuntime(ApplicationState& state, const ApplicationBootstrap& bootstrap,
70 const ResolvedLaunchGpuDefaults& launch_gpu_defaults,
71 const std::function<void(Event&)>& event_callback,
72 const std::function<void(uint32_t)>& framebuffer_resize_callback,
73 const RuntimeShellBindings& bindings);
74void ShutdownApplicationRuntime(ApplicationState& state, const RuntimeShellBindings& bindings) noexcept;
75[[nodiscard]] Layer* AttachLayer(ApplicationState& state, std::unique_ptr<Layer> layer, LayerInsertion insertion);
76[[nodiscard]] int MapLaunchRunOutcomeToExitCode(LaunchRunOutcome outcome) noexcept;
77[[nodiscard]] LaunchExecutionResult ExecuteLaunchShell(const ApplicationBootstrap& bootstrap, const LaunchShellBindings& bindings);
78} // namespace pixelbullet::application_internal
Definition application_internal.h:19
Definition event.h:72
Definition layer.h:26
Definition layer.h:17
Definition specification.h:79
Definition specification.h:69
Contains configuration options for both the game and the engine.
Definition specification.h:162
Definition application_shell_internal.h:64
Definition application_shell_internal.h:58
Definition launch_gpu_defaults_internal.h:35
Definition application_shell_internal.h:22
Definition application_shell_internal.h:28