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-2023 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#include "message.hpp"
11
12#include <cmath>
13
14#if defined(__has_include) && __has_include("filesystem")
15#include <filesystem>
16#endif
17
18namespace jngl::internal {
19
20void mainLoop(AppParameters);
21
22} // namespace jngl::internal
23
44
45#if !defined(__APPLE__) || !TARGET_OS_IPHONE // iOS
46JNGL_MAIN_BEGIN { // NOLINT
47#if !defined(ANDROID) && defined(__has_include) && __has_include(<filesystem>) && \
48 (!defined(TARGET_OS_IOS) || TARGET_OS_IOS == 0)
51 if (err) {
52 std::filesystem::current_path("../data", err); // move out of build/bin folder
53 if (err) {
54 std::filesystem::current_path("../../data", err); // move out of build/Debug folder
55 if (err) {
56 std::filesystem::current_path("../../../data", 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_APP == WINAPI_FAMILY_DESKTOP_APP
70#include <windows.h>
71
72INT WINAPI WinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ LPSTR, _In_ int) {
73 return main(1, nullptr);
74}
75#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.