JNGL
Easy to use cross-platform 2D game library
Loading...
Searching...
No Matches
jngl
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
17
namespace
jngl::internal {
18
19
void
mainLoop(AppParameters);
20
21
}
// namespace jngl::internal
22
42
jngl::AppParameters
jnglInit
();
43
44
#if !defined(__APPLE__) || !TARGET_OS_IPHONE
// iOS
45
JNGL_MAIN_BEGIN {
// NOLINT
46
#if !defined(ANDROID) && defined(__has_include) && __has_include(<filesystem>) && \
47
(!defined(TARGET_OS_IOS) || TARGET_OS_IOS == 0)
48
std::error_code
err;
49
std::filesystem::current_path
(
"data"
, err);
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) {
58
std::filesystem::current_path
(
jngl::getBinaryPath
() +
"data"
, err);
59
}
60
}
61
}
62
}
63
#endif
64
jngl::internal::mainLoop(
jnglInit
());
65
}
66
JNGL_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
75
INT WINAPI WinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ LPSTR, _In_
int
) {
76
return
main(__argc, __argv);
77
}
78
#endif
AppParameters.hpp
Contains jngl::AppParameters struct.
cmath
std::filesystem::current_path
T current_path(T... args)
std::error_code
filesystem
jnglInit
jngl::AppParameters jnglInit()
Implement this function and set AppParameters::start.
main.hpp
Defines macros for the main entry point.
jngl::getBinaryPath
std::string getBinaryPath()
Returns the directory of the currently running binary.
jngl::AppParameters
Parameters used to initialize the main window.
Definition
AppParameters.hpp:19