/***************************************************************************** * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 * * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ #include "Ui.h" #include "UiContext.h" #include "audio/AudioContext.h" #include "drawing/BitmapReader.h" #include #include #include #include #include #include #include using namespace OpenRCT2; using namespace OpenRCT2::Audio; using namespace OpenRCT2::Ui; template static std::shared_ptr to_shared(std::unique_ptr&& src) { return std::shared_ptr(std::move(src)); } /** * Main entry point for non-Windows systems. Windows instead uses its own DLL proxy. */ #if defined(_MSC_VER) && !defined(__DISABLE_DLL_PROXY__) int NormalisedMain(int argc, const char** argv) #else int main(int argc, const char** argv) #endif { std::unique_ptr context; int32_t rc = EXIT_SUCCESS; int runGame = cmdline_run(argv, argc); core_init(); RegisterBitmapReader(); if (runGame == EXITCODE_CONTINUE) { if (gOpenRCT2Headless) { // Run OpenRCT2 with a plain context context = CreateContext(); } else { // Run OpenRCT2 with a UI context auto env = to_shared(CreatePlatformEnvironment()); auto audioContext = to_shared(CreateAudioContext()); auto uiContext = to_shared(CreateUiContext(env)); context = CreateContext(env, audioContext, uiContext); } rc = context->RunOpenRCT2(argc, argv); } else if (runGame == EXITCODE_FAIL) { rc = EXIT_FAILURE; } return rc; } #ifdef __ANDROID__ extern "C" { int SDL_main(int argc, const char* argv[]) { return main(argc, argv); } } #endif