JNGL
Easy to use cross-platform 2D game library
Loading...
Searching...
No Matches
init.hpp
Go to the documentation of this file.
1// Copyright 2020-2025 Jan Niklas Hasse <jhasse@bixense.com>
2// For conditions of distribution and use, see copyright notice in LICENSE.txt
5
6#pragma once
7
8#include "AppParameters.hpp"
9#include "main.hpp"
10
11#include <cmath>
12
13#if defined(__has_include) && __has_include("filesystem")
14#include <filesystem>
15#endif
16
17namespace jngl::internal {
18
19void mainLoop(AppParameters);
20
21} // namespace jngl::internal
22
43
44#if !defined(__APPLE__) || !TARGET_OS_IPHONE // iOS
45JNGL_MAIN_BEGIN { // NOLINT
46#if !defined(ANDROID) && defined(__has_include) && __has_include(<filesystem>) && \
47 (!defined(TARGET_OS_IOS) || TARGET_OS_IOS == 0)
50 if (err) {
51 std::filesystem::current_path("../data", err); // move out of build/bin folder
52 if (err) {
53 std::filesystem::current_path("../../data", err); // move out of build/Debug folder
54 if (err) {
55 std::filesystem::current_path("../../../data",
56 err); // move out of out\build\x64-Debug
57 if (err) {
59 }
60 }
61 }
62 }
63#endif
64 jngl::internal::mainLoop(jnglInit());
65}
66JNGL_MAIN_END
67#endif
68
69#if defined(_MSC_VER) && WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP
70#ifndef NOMINMAX
71#define NOMINMAX
72#endif
73#include <windows.h>
74
75INT WINAPI WinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ LPSTR, _In_ int) {
76 return main(__argc, __argv);
77}
78#endif
Contains jngl::AppParameters struct.
T current_path(T... args)
jngl::AppParameters jnglInit()
Implement this function and set AppParameters::start.
Defines macros for the main entry point.
std::string getBinaryPath()
Returns the directory of the currently running binary.
Parameters used to initialize the main window.