From e77690f7e0a23e20126bac490a24a0ed3c3ea8e8 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 18 Nov 2022 00:46:24 -0700 Subject: [PATCH] Remove unnecessary project files Co-authored-by: sigonasr2 --- Block.cpp | 8 - Block.h | 14 - baseboard.png | Bin 1454 -> 0 bytes border.png | Bin 7475 -> 0 bytes car.png | Bin 36508 -> 0 bytes circulardevice.png | Bin 1234 -> 0 bytes co2.png | Bin 5408 -> 0 bytes coloredside.png | Bin 699 -> 0 bytes config.hpp | 53 - data.lua | 33 - dependentClasses.zip | Bin 1290 -> 0 bytes diff | 14 - dirtblock.png | Bin 35629 -> 0 bytes forward.hpp | 1321 -- grass.png | Bin 541 -> 0 bytes hills.png | Bin 21821 -> 0 bytes lightup.png | Bin 2593 -> 0 bytes main.cpp | 175 +- quickgui.h | 786 -- road.png | Bin 8452 -> 0 bytes sol.hpp | 28907 ----------------------------------------- start.png | Bin 3141 -> 0 bytes 22 files changed, 9 insertions(+), 31302 deletions(-) delete mode 100644 Block.cpp delete mode 100644 Block.h delete mode 100644 baseboard.png delete mode 100644 border.png delete mode 100644 car.png delete mode 100644 circulardevice.png delete mode 100644 co2.png delete mode 100644 coloredside.png delete mode 100644 config.hpp delete mode 100644 data.lua delete mode 100644 dependentClasses.zip delete mode 100644 diff delete mode 100644 dirtblock.png delete mode 100644 forward.hpp delete mode 100644 grass.png delete mode 100644 hills.png delete mode 100644 lightup.png delete mode 100644 quickgui.h delete mode 100644 road.png delete mode 100644 sol.hpp delete mode 100644 start.png diff --git a/Block.cpp b/Block.cpp deleted file mode 100644 index 5f224f0..0000000 --- a/Block.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Block.h" - -Block::Block(int x, int y, int R, int B, int G) -{ - X = x; - Y = y; - color = std::make_tuple(R, G, B); -} \ No newline at end of file diff --git a/Block.h b/Block.h deleted file mode 100644 index 2f4a7fd..0000000 --- a/Block.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once -#include - -class Block -{ -public: - Block(){}; - Block(int x, int y, int R, int B, int G); - void display(float CameraX, float CameraY, float Zoom); -private: - int X; - int Y; - std::tuple color; -}; \ No newline at end of file diff --git a/baseboard.png b/baseboard.png deleted file mode 100644 index 484b491015ac1dd7fae9d3030f62eceda031ab96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1454 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 gcHNLeJw^?oTd&!F!*ckBVgI&ba-=bZq1uCb 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 Y0-2COfY$1;GXMYp07*qoM6N<$g5oy1@c;k- diff --git a/circulardevice.png b/circulardevice.png deleted file mode 100644 index 1b0f339645c31904dd5b1baf69749c156f1ea9bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1234 zcmV;@1TFiCP)EX>4Tx04R}tkv&MmKpe$i(@LdO9PA+KkfAzR5G~@URVYG*P%E_RU~>J0CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#Iyou2NQwVT3N2zhIPS;0dyl(!fY7Wm)eKAks%9DK zWJ1j5R>j~eLKsE>aR@Rq^*KpO!E=1w!^hXV7|-%P_vh%#7fc5DMB-Vd8y4{f@${yp zbKWP8u(F&dJ|`YG=z_$LTvuFv<6LrB;F%F4lb$Dz5R0WQR=Sv#4V5@f9L=j5F_EVIgol5~@k``V$W;L& z#{z0lAv=EXKlt6PS)7`5lfnt0=f$=^MuFfi&}!KB_pxoaP5}QiaHVzpwI(q0NqVEB zMUQ~~ZQ$a%qbYm9RDA)|g_Sp{P&Xc>TZQ^2tSl8TP<24;rCSG3hti=%LJ=Wxa<=cz|Gy%kg#Yt@ zXUD-NQ>Kg0&aCse-~0Oh@9W)U_iT)o-^;+@v;i?NJZ&Hhj7}R2qt*Dqq(AR}(0$)( zwjQr<^nqZc8a|lx=fkhlpKZ22@1S?tc|Qfna`ZNm2ZZ5n{5hk`6a#?rFVCgOp#!D;>d93+oD79U~r+%goN(bMnri(^f_hfKQ0-Hfe%X07brHy>< zrJ?9^?F0xN{ZfsO4T5XwK?y(!K;)-f5^|T??{}lck-D14+-AGG<p>C63d5q6tJ32mt^H06+i$0ss&IU_Nh6WqytXfOr6q$^wlx)%7hu>=3DX zCeXVKbK$+|Uqrq>=>l)~FkJjce~@2tm95Wye()V7040E@?x#AM!lRKd8-Q4mEER-U z#xGx%BNv}+u_hoCb*t!eF6F|DNx-d1?eWK+s`4c?kdryrZ5R09WDwf*<4CHtDSs03gUTzV2ts`~Uy|07*qoM6N<$f|O!6tN;K2 diff --git a/co2.png b/co2.png deleted file mode 100644 index a9a48aaf3c48d221fe2ed8819183783a141a1057..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5408 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 KMNUMnLSTZ5L3sH9 diff --git a/coloredside.png b/coloredside.png deleted file mode 100644 index 7628956a9bf43b2b237e433eb7f7ee2ac6446212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 699 zcmV;s0!00ZP)EX>4Tx04R}tkv&MmKpe$i(@LdO9PA+KkfAzR5G~@URVYG*P%E_RU~>J0CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#Iyou2NQwVT3N2zhIPS;0dyl(!fY7Wm)eKAks%9DK zWJ1j5R>j~eLKsE>aR@Rq^*KpO!E=1w!^hXV7|-%P_vh%#7fc5DMB-Vd8y4{f@${yp zbKWP8u(F&dJ|`YG=z_$LTvuFv<6LrB;F%F4lb$Dz5R0WQR=Sv#4V5@f9L=j5F_EVIgol5~@k``V$W;L& z#{z0lAv=EXKlt6PS)7`5lfnt0=f$=^MuFfi&}!KB_pxoaP5}QiaHVzpwI(q0NqVEB zMUQ~~ZQ$a%qbYm9kxk*GpRA}Dqn6VK6AqWKJ$7Zx0 zZPR)z$4`um z9s9^C@m(WeHt7LaNHSLM-@AojEIngq;#FIx)` h&+PUHngM12iC(2!it&?poYVjS002ovPDHLkV1nH&F~tA? diff --git a/config.hpp b/config.hpp deleted file mode 100644 index 807bae4..0000000 --- a/config.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// The MIT License (MIT) - -// Copyright (c) 2013-2020 Rapptz, ThePhD and contributors - -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// This file was generated with a script. -// Generated 2022-10-23 03:24:40.304940 UTC -// This header was generated with sol v3.3.0 (revision 0386513a) -// https://github.com/ThePhD/sol2 - -#ifndef SOL_SINGLE_CONFIG_HPP -#define SOL_SINGLE_CONFIG_HPP - -// beginning of sol/config.hpp - -/* Base, empty configuration file! - - To override, place a file in your include paths of the form: - -. (your include path here) -| sol (directory, or equivalent) - | config.hpp (your config.hpp file) - - So that when sol2 includes the file - -#include - - it gives you the configuration values you desire. Configuration values can be -seen in the safety.rst of the doc/src, or at -https://sol2.readthedocs.io/en/latest/safety.html ! You can also pass them through -the build system, or the command line options of your compiler. - -*/ - -// end of sol/config.hpp - -#endif // SOL_SINGLE_CONFIG_HPP diff --git a/data.lua b/data.lua deleted file mode 100644 index 0da8e6a..0000000 --- a/data.lua +++ /dev/null @@ -1,33 +0,0 @@ -return -{ - Name = "Weapon", -- used for Engine::GetResearch() - offset = {0,0}, - Icon = - { - FileName = "Assets/Research/Icons/WeaponUpgradeIcon.png",--Maybe Have multi_Icon based on lvl of upgrade? - size = {32,32}, - FileSize = {64,64} - }, - Parameters = - { - Oncer = false, --Only get one upgrade - InitialCost = 120, - CostScale = 2, --How Much more it costs per upgrade??? Use Math Equation - ResearchTime = 22 --Seconds - }, - Requirements = - { - Buildings = {"Castle","StoneTower"} - }, - Reward = - { - Stats = - { - Damage = 5, - Armor = 5, - Health = 10, - MoveSpeed= 4 - }, - Unlocks = {"Archer"} - } -} \ No newline at end of file diff --git a/dependentClasses.zip b/dependentClasses.zip deleted file mode 100644 index 207b66d6b7f2c7de8a42cc97d22b16a3effb9890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1290 zcmWIWW@Zs#-~d9y6pv5_D7XrwIT#ceauYN2^pXn-LPK~N*z>nICfk>pC4=bF3T_5Q zmKV$n3}7Po+!^n4n!cW)0iS$zE}RZ{6x7De@DUx-0`MBNBeAYOa{?} z9REn`^m(5^hN3lVyuc1xy;G!N!2%8A^(wy3CzVar)#X)WCof-;c{cR)QHYzkDjqV~ z18oJ_jBry%G9p9^fHJI5H)Vi>^DEFbAwVpK#YK7=UOwl2Lr$Fc_Inxx3)>BvdY&iG zTtB_x@guKuo;rGA949>2_~>qGE36gfUIlieiKe>oO|CO+j2%{MnX-3yMAoHsIeBIk zcD5}u4PR>t4!G;pYvM;R3ofASbahwFn-B20(`f038gXaRwn5 z*iDy!NdOXx4IkFx48>JSYW|*=XRV&r%?)M}?` zeh0cK9Ef?axQn=e{NSszp=~2`k&t$9H(Ee0uv!~4A!>#Lwvar#c5+}8&_y6u1$Z+u zi7+E_5^^d9xflkvG=f;f<||}VK`9(LoqI`D;vl~tU$O1 M=pGMXF~-0E0Ln&V4*&oF diff --git a/diff b/diff deleted file mode 100644 index 68dbe45..0000000 --- a/diff +++ /dev/null @@ -1,14 +0,0 @@ -1114d1113 -< void SetFPSDisplay(bool display); -1176,1177c1175 -< int nFrameCount = 0; -< bool showFPS = true; ---- -> int nFrameCount = 0; -3203,3204d3200 -< void PixelGameEngine::SetFPSDisplay(bool display) -< { showFPS=display; } -3543c3539 -< std::string sTitle = "OneLoneCoder.com - Pixel Game Engine - " + sAppName + ((showFPS)?" - FPS: " + std::to_string(nFrameCount):""); ---- -> std::string sTitle = "OneLoneCoder.com - Pixel Game Engine - " + sAppName + " - FPS: " + std::to_string(nFrameCount); diff --git a/dirtblock.png b/dirtblock.png deleted file mode 100644 index af8bd9194d19cb226b0ebc392c2a80044008ad90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35629 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 z 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 diff --git a/forward.hpp b/forward.hpp deleted file mode 100644 index 14bbfc8..0000000 --- a/forward.hpp +++ /dev/null @@ -1,1321 +0,0 @@ -// The MIT License (MIT) - -// Copyright (c) 2013-2020 Rapptz, ThePhD and contributors - -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// This file was generated with a script. -// Generated 2022-10-23 03:24:40.299252 UTC -// This header was generated with sol v3.3.0 (revision 0386513a) -// https://github.com/ThePhD/sol2 - -#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP -#define SOL_SINGLE_INCLUDE_FORWARD_HPP - -// beginning of sol/forward.hpp - -#ifndef SOL_FORWARD_HPP -#define SOL_FORWARD_HPP - -// beginning of sol/version.hpp - -#include - -#define SOL_VERSION_MAJOR 3 -#define SOL_VERSION_MINOR 2 -#define SOL_VERSION_PATCH 3 -#define SOL_VERSION_STRING "3.2.3" -#define SOL_VERSION ((SOL_VERSION_MAJOR * 100000) + (SOL_VERSION_MINOR * 100) + (SOL_VERSION_PATCH)) - -#define SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) #_TOKEN -#define SOL_TOKEN_TO_STRING_I_(_TOKEN) SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) - -#define SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) _LEFT##_RIGHT -#define SOL_CONCAT_TOKENS_I_(_LEFT, _RIGHT) SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) - -#define SOL_RAW_IS_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) != 0) -#define SOL_RAW_IS_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3) == 0) -#define SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) > 3) -#define SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3 OP_SYMBOL 3) < 0) - -#define SOL_IS_ON(OP_SYMBOL) SOL_RAW_IS_ON(OP_SYMBOL ## _I_) -#define SOL_IS_OFF(OP_SYMBOL) SOL_RAW_IS_OFF(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_ON(OP_SYMBOL) SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_OFF(OP_SYMBOL) SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL ## _I_) - -#define SOL_ON | -#define SOL_OFF ^ -#define SOL_DEFAULT_ON + -#define SOL_DEFAULT_OFF - - -#if defined(SOL_BUILD_CXX_MODE) - #if (SOL_BUILD_CXX_MODE != 0) - #define SOL_BUILD_CXX_MODE_I_ SOL_ON - #else - #define SOL_BUILD_CXX_MODE_I_ SOL_OFF - #endif -#elif defined(__cplusplus) - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_BUILD_C_MODE) - #if (SOL_BUILD_C_MODE != 0) - #define SOL_BUILD_C_MODE_I_ SOL_ON - #else - #define SOL_BUILD_C_MODE_I_ SOL_OFF - #endif -#elif defined(__STDC__) - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if SOL_IS_ON(SOL_BUILD_C_MODE) - #include - #include - #include -#else - #include - #include - #include -#endif - -#if defined(SOL_COMPILER_VCXX) - #if defined(SOL_COMPILER_VCXX != 0) - #define SOL_COMPILER_VCXX_I_ SOL_ON - #else - #define SOL_COMPILER_VCXX_I_ SOL_OFF - #endif -#elif defined(_MSC_VER) - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_GCC) - #if defined(SOL_COMPILER_GCC != 0) - #define SOL_COMPILER_GCC_I_ SOL_ON - #else - #define SOL_COMPILER_GCC_I_ SOL_OFF - #endif -#elif defined(__GNUC__) - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_CLANG) - #if defined(SOL_COMPILER_CLANG != 0) - #define SOL_COMPILER_CLANG_I_ SOL_ON - #else - #define SOL_COMPILER_CLANG_I_ SOL_OFF - #endif -#elif defined(__clang__) - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_EDG) - #if defined(SOL_COMPILER_EDG != 0) - #define SOL_COMPILER_EDG_I_ SOL_ON - #else - #define SOL_COMPILER_EDG_I_ SOL_OFF - #endif -#else - #define SOL_COMPILER_EDG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_MINGW) - #if (SOL_COMPILER_MINGW != 0) - #define SOL_COMPILER_MINGW_I_ SOL_ON - #else - #define SOL_COMPILER_MINGW_I_ SOL_OFF - #endif -#elif defined(__MINGW32__) - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_OFF -#endif - -#if SIZE_MAX <= 0xFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_ON - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_OFF -#elif SIZE_MAX <= 0xFFFFFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_ON - #define SOL_PLATFORM_X64_I_ SOL_OFF -#else - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_ON -#endif - -#define SOL_PLATFORM_ARM32_I_ SOL_OFF -#define SOL_PLATFORM_ARM64_I_ SOL_OFF - -#if defined(SOL_PLATFORM_WINDOWS) - #if (SOL_PLATFORM_WINDOWS != 0) - #define SOL_PLATFORM_WINDOWS_I_ SOL_ON - #else - #define SOL_PLATFORM_WINDOWS_I_ SOL_OFF - #endif -#elif defined(_WIN32) - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_CYGWIN) - #if (SOL_PLATFORM_CYGWIN != 0) - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #else - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #endif -#elif defined(__CYGWIN__) - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_APPLE) - #if (SOL_PLATFORM_APPLE != 0) - #define SOL_PLATFORM_APPLE_I_ SOL_ON - #else - #define SOL_PLATFORM_APPLE_I_ SOL_OFF - #endif -#elif defined(__APPLE__) - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_UNIX) - #if (SOL_PLATFORM_UNIX != 0) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_OFF - #endif -#elif defined(__unix__) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_LINUX) - #if (SOL_PLATFORM_LINUX != 0) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_OFF - #endif -#elif defined(__LINUX__) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#define SOL_PLATFORM_APPLE_IPHONE_I_ SOL_OFF -#define SOL_PLATFORM_BSDLIKE_I_ SOL_OFF - -#if defined(SOL_IN_DEBUG_DETECTED) - #if SOL_IN_DEBUG_DETECTED != 0 - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#elif !defined(NDEBUG) - #if SOL_IS_ON(SOL_COMPILER_VCXX) && defined(_DEBUG) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #elif (SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC)) && !defined(__OPTIMIZE__) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_DEBUG_BUILD_I_ SOL_DEFAULT_OFF -#endif // We are in a debug mode of some sort - -#if defined(SOL_NO_EXCEPTIONS) - #if (SOL_NO_EXCEPTIONS != 0) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPUNWIND) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__EXCEPTIONS) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#else - #define SOL_EXCEPTIONS_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_RTTI) - #if (SOL_NO_RTTI != 0) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPRTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__GXX_RTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#else - #define SOL_RTTI_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_THREAD_LOCAL) - #if SOL_NO_THREAD_LOCAL != 0 - #define SOL_USE_THREAD_LOCAL_I_ SOL_OFF - #else - #define SOL_USE_THREAD_LOCAL_I_ SOL_ON - #endif -#else - #define SOL_USE_THREAD_LOCAL_I_ SOL_DEFAULT_ON -#endif // thread_local keyword is bjorked on some platforms - -#if defined(SOL_ALL_SAFETIES_ON) - #if SOL_ALL_SAFETIES_ON != 0 - #define SOL_ALL_SAFETIES_ON_I_ SOL_ON - #else - #define SOL_ALL_SAFETIES_ON_I_ SOL_OFF - #endif -#else - #define SOL_ALL_SAFETIES_ON_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_GETTER) - #if SOL_SAFE_GETTER != 0 - #define SOL_SAFE_GETTER_I_ SOL_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_GETTER_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_USERTYPE) - #if SOL_SAFE_USERTYPE != 0 - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_REFERENCES) - #if SOL_SAFE_REFERENCES != 0 - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTIONS) - #if SOL_SAFE_FUNCTIONS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#elif defined (SOL_SAFE_FUNCTION_OBJECTS) - #if SOL_SAFE_FUNCTION_OBJECTS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTION_CALLS) - #if SOL_SAFE_FUNCTION_CALLS != 0 - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_PROXIES) - #if SOL_SAFE_PROXIES != 0 - #define SOL_SAFE_PROXIES_I_ SOL_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_PROXIES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_NUMERICS) - #if SOL_SAFE_NUMERICS != 0 - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_ALL_INTEGER_VALUES_FIT) - #if (SOL_ALL_INTEGER_VALUES_FIT != 0) - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_ON - #else - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_OFF - #endif -#elif !SOL_IS_DEFAULT_OFF(SOL_SAFE_NUMERICS) && SOL_IS_OFF(SOL_SAFE_NUMERICS) - // if numerics is intentionally turned off, flip this on - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_ON -#else - // default to off - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_STACK_CHECK) - #if SOL_SAFE_STACK_CHECK != 0 - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_CHECK_NUMBER_PRECISION) - #if SOL_NO_CHECK_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#elif defined(SOL_NO_CHECKING_NUMBER_PRECISION) - #if SOL_NO_CHECKING_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_SAFE_NUMERICS) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_ON - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_STRINGS_ARE_NUMBERS) - #if (SOL_STRINGS_ARE_NUMBERS != 0) - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_ON - #else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_OFF - #endif -#else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_ENABLE_INTEROP) - #if SOL_ENABLE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#elif defined(SOL_USE_INTEROP) - #if SOL_USE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#else - #define SOL_USE_INTEROP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_NIL) - #if (SOL_NO_NIL != 0) - #define SOL_NIL_I_ SOL_OFF - #else - #define SOL_NIL_I_ SOL_ON - #endif -#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) || defined(__OBJC__) || defined(nil) - #define SOL_NIL_I_ SOL_DEFAULT_OFF -#else - #define SOL_NIL_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USERTYPE_TYPE_BINDING_INFO) - #if (SOL_USERTYPE_TYPE_BINDING_INFO != 0) - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_ON - #else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_OFF - #endif -#else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_DEFAULT_ON -#endif // We should generate a my_type.__type table with lots of class information for usertypes - -#if defined(SOL_AUTOMAGICAL_TYPES_BY_DEFAULT) - #if (SOL_AUTOMAGICAL_TYPES_BY_DEFAULT != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#elif defined(SOL_DEFAULT_AUTOMAGICAL_USERTYPES) - #if (SOL_DEFAULT_AUTOMAGICAL_USERTYPES != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_DEFAULT_ON -#endif // make is_automagical on/off by default - -#if defined(SOL_STD_VARIANT) - #if (SOL_STD_VARIANT != 0) - #define SOL_STD_VARIANT_I_ SOL_ON - #else - #define SOL_STD_VARIANT_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_COMPILER_CLANG) && SOL_IS_ON(SOL_PLATFORM_APPLE) - #if defined(__has_include) - #if __has_include() - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #endif -#endif // make is_automagical on/off by default - -#if defined(SOL_NOEXCEPT_FUNCTION_TYPE) - #if (SOL_NOEXCEPT_FUNCTION_TYPE != 0) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #endif -#else - #if defined(__cpp_noexcept_function_type) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(_MSVC_LANG) && (_MSVC_LANG < 201403L)) - // There is a bug in the VC++ compiler?? - // on /std:c++latest under x86 conditions (VS 15.5.2), - // compiler errors are tossed for noexcept markings being on function types - // that are identical in every other way to their non-noexcept marked types function types... - // VS 2019: There is absolutely a bug. - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_DEFAULT_ON - #endif -#endif // noexcept is part of a function's type - -#if defined(SOL_STACK_STRING_OPTIMIZATION_SIZE) && SOL_STACK_STRING_OPTIMIZATION_SIZE > 0 - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ SOL_STACK_STRING_OPTIMIZATION_SIZE -#else - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ 1024 -#endif - -#if defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_ID_SIZE_I_ SOL_ID_SIZE -#else - #define SOL_ID_SIZE_I_ 512 -#endif - -#if defined(LUA_IDSIZE) && LUA_IDSIZE > 0 - #define SOL_FILE_ID_SIZE_I_ LUA_IDSIZE -#elif defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_FILE_ID_SIZE_I_ SOL_FILE_ID_SIZE -#else - #define SOL_FILE_ID_SIZE_I_ 2048 -#endif - -#if defined(SOL_PRINT_ERRORS) - #if (SOL_PRINT_ERRORS != 0) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_PRINT_ERRORS_I_ SOL_DEFAULT_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#endif - -#if defined(SOL_DEFAULT_PASS_ON_ERROR) - #if (SOL_DEFAULT_PASS_ON_ERROR != 0) - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_ON - #else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUA) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUA) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUA_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUAJIT) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUAJIT) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUAJIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_LUA_HPP) - #if (SOL_NO_LUA_HPP != 0) - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #else - #define SOL_USE_LUA_HPP_I_ SOL_ON - #endif -#elif defined(SOL_USING_CXX_LUA) - #define SOL_USE_LUA_HPP_I_ SOL_OFF -#elif defined(__has_include) - #if __has_include() - #define SOL_USE_LUA_HPP_I_ SOL_ON - #else - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #endif -#else - #define SOL_USE_LUA_HPP_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_CONTAINERS_START) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START -#elif defined(SOL_CONTAINERS_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START_INDEX -#elif defined(SOL_CONTAINER_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINER_START_INDEX -#else - #define SOL_CONTAINER_START_INDEX_I_ 1 -#endif - -#if defined (SOL_NO_MEMORY_ALIGNMENT) - #if (SOL_NO_MEMORY_ALIGNMENT != 0) - #define SOL_ALIGN_MEMORY_I_ SOL_OFF - #else - #define SOL_ALIGN_MEMORY_I_ SOL_ON - #endif -#else - #define SOL_ALIGN_MEMORY_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USE_BOOST) - #if (SOL_USE_BOOST != 0) - #define SOL_USE_BOOST_I_ SOL_ON - #else - #define SOL_USE_BOOST_I_ SOL_OFF - #endif -#else - #define SOL_USE_BOOST_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USE_UNSAFE_BASE_LOOKUP) - #if (SOL_USE_UNSAFE_BASE_LOOKUP != 0) - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_ON - #else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_OFF - #endif -#else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_INSIDE_UNREAL) - #if (SOL_INSIDE_UNREAL != 0) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_OFF - #endif -#else - #if defined(UE_BUILD_DEBUG) || defined(UE_BUILD_DEVELOPMENT) || defined(UE_BUILD_TEST) || defined(UE_BUILD_SHIPPING) || defined(UE_SERVER) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_COMPAT) - #if (SOL_NO_COMPAT != 0) - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_OFF - #else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_ON - #endif -#else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_GET_FUNCTION_POINTER_UNSAFE) - #if (SOL_GET_FUNCTION_POINTER_UNSAFE != 0) - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_ON - #else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_OFF - #endif -#else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_FUNCTION_CALL_VALUE_SEMANTICS) - #if (SOL_FUNCTION_CALL_VALUE_SEMANTICS != 0) - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_ON - #else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_OFF - #endif -#else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_MINGW_CCTYPE_IS_POISONED) - #if (SOL_MINGW_CCTYPE_IS_POISONED != 0) - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_ON - #else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_MINGW) && defined(__GNUC__) && (__GNUC__ < 6) - // MinGW is off its rocker in some places... - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_ON -#else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_CHAR8_T) - #if (SOL_CHAR8_T != 0) - #define SOL_CHAR8_T_I_ SOL_ON - #else - #define SOL_CHAR8_T_I_ SOL_OFF - #endif -#else - #if defined(__cpp_char8_t) - #define SOL_CHAR8_T_I_ SOL_DEFAULT_ON - #else - #define SOL_CHAR8_T_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if SOL_IS_ON(SOL_USE_BOOST) - #include - - #if BOOST_VERSION >= 107500 // Since Boost 1.75.0 boost::none is constexpr - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr - #else - #define SOL_BOOST_NONE_CONSTEXPR_I_ const - #endif // BOOST_VERSION -#else - // assume boost isn't using a garbage version - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr -#endif - -#if defined(SOL2_CI) - #if (SOL2_CI != 0) - #define SOL2_CI_I_ SOL_ON - #else - #define SOL2_CI_I_ SOL_OFF - #endif -#else - #define SOL2_CI_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_C_ASSERT) - #define SOL_USER_C_ASSERT_I_ SOL_ON -#else - #define SOL_USER_C_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_M_ASSERT) - #define SOL_USER_M_ASSERT_I_ SOL_ON -#else - #define SOL_USER_M_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -// beginning of sol/prologue.hpp - -#if defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue was already included in translation unit and not properly ended with an epilogue." -#endif - -#define SOL_PROLOGUE_I_ 1 - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define _FWD(...) static_cast( __VA_ARGS__ ) - - #if SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define _MOVE(...) static_cast<__typeof( __VA_ARGS__ )&&>( __VA_ARGS__ ) - #else - #include - - #define _MOVE(...) static_cast<::std::remove_reference_t<( __VA_ARGS__ )>&&>( __VA_OPT__(,) ) - #endif -#endif - -// end of sol/prologue.hpp - -// beginning of sol/epilogue.hpp - -#if !defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue is missing from this translation unit." -#else - #undef SOL_PROLOGUE_I_ -#endif - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #undef _FWD - #undef _MOVE -#endif - -// end of sol/epilogue.hpp - -// beginning of sol/detail/build_version.hpp - -#if defined(SOL_DLL) - #if (SOL_DLL != 0) - #define SOL_DLL_I_ SOL_ON - #else - #define SOL_DLL_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(DLL_) || defined(_DLL)) - #define SOL_DLL_I_ SOL_DEFAULT_ON -#else - #define SOL_DLL_I_ SOL_DEFAULT_OFF -#endif // DLL definition - -#if defined(SOL_HEADER_ONLY) - #if (SOL_HEADER_ONLY != 0) - #define SOL_HEADER_ONLY_I_ SOL_ON - #else - #define SOL_HEADER_ONLY_I_ SOL_OFF - #endif -#else - #define SOL_HEADER_ONLY_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_BUILD) - #if (SOL_BUILD != 0) - #define SOL_BUILD_I_ SOL_ON - #else - #define SOL_BUILD_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_BUILD_I_ SOL_DEFAULT_OFF -#else - #define SOL_BUILD_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_UNITY_BUILD) - #if (SOL_UNITY_BUILD != 0) - #define SOL_UNITY_BUILD_I_ SOL_ON - #else - #define SOL_UNITY_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_UNITY_BUILD_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_C_FUNCTION_LINKAGE) - #define SOL_C_FUNCTION_LINKAGE_I_ SOL_C_FUNCTION_LINKAGE -#else - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - // C++ - #define SOL_C_FUNCTION_LINKAGE_I_ extern "C" - #else - // normal - #define SOL_C_FUNCTION_LINKAGE_I_ - #endif // C++ or not -#endif // Linkage specification for C functions - -#if defined(SOL_API_LINKAGE) - #define SOL_API_LINKAGE_I_ SOL_API_LINKAGE -#else - #if SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) || SOL_IS_ON(SOL_PLATFORM_WINDOWS) || SOL_IS_ON(SOL_PLATFORM_CYGWIN) - // MSVC Compiler; or, Windows, or Cygwin platforms - #if SOL_IS_ON(SOL_BUILD) - // Building the library - #if SOL_IS_ON(SOL_COMPILER_GCC) - // Using GCC - #define SOL_API_LINKAGE_I_ __attribute__((dllexport)) - #else - // Using Clang, MSVC, etc... - #define SOL_API_LINKAGE_I_ __declspec(dllexport) - #endif - #else - #if SOL_IS_ON(SOL_COMPILER_GCC) - #define SOL_API_LINKAGE_I_ __attribute__((dllimport)) - #else - #define SOL_API_LINKAGE_I_ __declspec(dllimport) - #endif - #endif - #else - // extern if building normally on non-MSVC - #define SOL_API_LINKAGE_I_ extern - #endif - #elif SOL_IS_ON(SOL_UNITY_BUILD) - // Built-in library, like how stb typical works - #if SOL_IS_ON(SOL_HEADER_ONLY) - // Header only, so functions are defined "inline" - #define SOL_API_LINKAGE_I_ inline - #else - // Not header only, so seperately compiled files - #define SOL_API_LINKAGE_I_ extern - #endif - #else - // Normal static library - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define SOL_API_LINKAGE_I_ - #else - #define SOL_API_LINKAGE_I_ extern - #endif - #endif // DLL or not -#endif // Build definitions - -#if defined(SOL_PUBLIC_FUNC_DECL) - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_PUBLIC_FUNC_DECL -#else - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DECL_) - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_INTERNAL_FUNC_DECL_ -#else - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_PUBLIC_FUNC_DEF) - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_PUBLIC_FUNC_DEF -#else - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DEF) - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_INTERNAL_FUNC_DEF -#else - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_FUNC_DECL) - #define SOL_FUNC_DECL_I_ SOL_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_FUNC_DEFN) - #define SOL_FUNC_DEFN_I_ SOL_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DEFN_I_ __declspec(dllexport) - #else - #define SOL_FUNC_DEFN_I_ __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DEFN_I_ __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DEFN_I_ - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DECL) - #define SOL_HIDDEN_FUNC_DECL_I_ SOL_HIDDEN_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DEFN) - #define SOL_HIDDEN_FUNC_DEFN_I_ SOL_HIDDEN_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DEFN_I_ - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DEFN_I_ __attribute__((visibility("hidden"))) - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif -#endif - -// end of sol/detail/build_version.hpp - -// end of sol/version.hpp - -#include -#include -#include - -#if SOL_IS_ON(SOL_USE_CXX_LUA) || SOL_IS_ON(SOL_USE_CXX_LUAJIT) -struct lua_State; -#else -extern "C" { -struct lua_State; -} -#endif // C++ Mangling for Lua vs. Not - -namespace sol { - - enum class type; - - class stateless_reference; - template - class basic_reference; - using reference = basic_reference; - using main_reference = basic_reference; - class stateless_stack_reference; - class stack_reference; - - template - class basic_bytecode; - - struct lua_value; - - struct proxy_base_tag; - template - struct proxy_base; - template - struct table_proxy; - - template - class basic_table_core; - template - using table_core = basic_table_core; - template - using main_table_core = basic_table_core; - template - using stack_table_core = basic_table_core; - template - using basic_table = basic_table_core; - using table = table_core; - using global_table = table_core; - using main_table = main_table_core; - using main_global_table = main_table_core; - using stack_table = stack_table_core; - using stack_global_table = stack_table_core; - - template - struct basic_lua_table; - using lua_table = basic_lua_table; - using stack_lua_table = basic_lua_table; - - template - class basic_usertype; - template - using usertype = basic_usertype; - template - using stack_usertype = basic_usertype; - - template - class basic_metatable; - using metatable = basic_metatable; - using stack_metatable = basic_metatable; - - template - struct basic_environment; - using environment = basic_environment; - using main_environment = basic_environment; - using stack_environment = basic_environment; - - template - class basic_function; - template - class basic_protected_function; - using unsafe_function = basic_function; - using safe_function = basic_protected_function; - using main_unsafe_function = basic_function; - using main_safe_function = basic_protected_function; - using stack_unsafe_function = basic_function; - using stack_safe_function = basic_protected_function; - using stack_aligned_unsafe_function = basic_function; - using stack_aligned_safe_function = basic_protected_function; - using protected_function = safe_function; - using main_protected_function = main_safe_function; - using stack_protected_function = stack_safe_function; - using stack_aligned_protected_function = stack_aligned_safe_function; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function = protected_function; - using main_function = main_protected_function; - using stack_function = stack_protected_function; - using stack_aligned_function = stack_aligned_safe_function; -#else - using function = unsafe_function; - using main_function = main_unsafe_function; - using stack_function = stack_unsafe_function; - using stack_aligned_function = stack_aligned_unsafe_function; -#endif - using stack_aligned_stack_handler_function = basic_protected_function; - - struct unsafe_function_result; - struct protected_function_result; - using safe_function_result = protected_function_result; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function_result = safe_function_result; -#else - using function_result = unsafe_function_result; -#endif - - template - class basic_object_base; - template - class basic_object; - template - class basic_userdata; - template - class basic_lightuserdata; - template - class basic_coroutine; - template - class basic_packaged_coroutine; - template - class basic_thread; - - using object = basic_object; - using userdata = basic_userdata; - using lightuserdata = basic_lightuserdata; - using thread = basic_thread; - using coroutine = basic_coroutine; - using packaged_coroutine = basic_packaged_coroutine; - using main_object = basic_object; - using main_userdata = basic_userdata; - using main_lightuserdata = basic_lightuserdata; - using main_coroutine = basic_coroutine; - using stack_object = basic_object; - using stack_userdata = basic_userdata; - using stack_lightuserdata = basic_lightuserdata; - using stack_thread = basic_thread; - using stack_coroutine = basic_coroutine; - - struct stack_proxy_base; - struct stack_proxy; - struct variadic_args; - struct variadic_results; - struct stack_count; - struct this_state; - struct this_main_state; - struct this_environment; - - class state_view; - class state; - - template - struct as_table_t; - template - struct as_container_t; - template - struct nested; - template - struct light; - template - struct user; - template - struct as_args_t; - template - struct protect_t; - template - struct policy_wrapper; - - template - struct usertype_traits; - template - struct unique_usertype_traits; - - template - struct types { - typedef std::make_index_sequence indices; - static constexpr std::size_t size() { - return sizeof...(Args); - } - }; - - template - struct derive : std::false_type { - typedef types<> type; - }; - - template - struct base : std::false_type { - typedef types<> type; - }; - - template - struct weak_derive { - static bool value; - }; - - template - bool weak_derive::value = false; - - namespace stack { - struct record; - } - -#if SOL_IS_OFF(SOL_USE_BOOST) - template - class optional; - - template - class optional; -#endif - - using check_handler_type = int(lua_State*, int, type, type, const char*); - -} // namespace sol - -#define SOL_BASE_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct base : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() -#define SOL_DERIVED_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct derive : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() - -#endif // SOL_FORWARD_HPP -// end of sol/forward.hpp - -#endif // SOL_SINGLE_INCLUDE_FORWARD_HPP diff --git a/grass.png b/grass.png deleted file mode 100644 index 32120250f6d77c8324566839524ae6688796d11e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 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 DL(chI diff --git a/main.cpp b/main.cpp index 8eb04dd..7860e9e 100644 --- a/main.cpp +++ b/main.cpp @@ -1,188 +1,31 @@ #define OLC_PGE_APPLICATION #include "pixelGameEngine.h" -// PGEX Require the presence of olc::PixelGameEngine -#define OLC_PGEX_QUICKGUI -#include "quickgui.h" - -namespace olc::QuickGUI{ - class PictureBox : public olc::QuickGUI::BaseControl{ - private: - olc::vi2d clickPos; - public: - PictureBox(olc::QuickGUI::Manager& manager, // Associate with a Manager - const olc::vf2d& pos, - const olc::vf2d& size, - const olc::vf2d& offset, - olc::Renderable& image); - - public: - // Minium value - olc::vf2d offset; - olc::vf2d pos; - olc::vf2d size; - olc::Renderableℑ - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - }; - - PictureBox::PictureBox(olc::QuickGUI::Manager& manager, const olc::vf2d& pos, const olc::vf2d& size, const olc::vf2d& offset,olc::Renderable& image) - : BaseControl(manager),pos(pos),size(size),offset(offset),image(image){} - - void PictureBox::Update(olc::PixelGameEngine* pge) - { - bPressed = false; - bReleased = false; - float fElapsedTime = pge->GetElapsedTime(); - - olc::vf2d vMouse = pge->GetMousePos(); - if (m_state != State::Click) - { - if (vMouse.x >= pos.x && vMouse.x < pos.x + size.x && - vMouse.y >= pos.y && vMouse.y < pos.y + size.y) - { - m_fTransition += fElapsedTime * m_manager.fHoverSpeedOn; - m_state = State::Hover; - - bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; - if (bPressed) - { - m_state = State::Click; - clickPos = vMouse; - } - - bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; - } - else - { - m_fTransition -= fElapsedTime * m_manager.fHoverSpeedOff; - m_state = State::Normal; - } - } - else - { - bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; - bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; - if (bReleased) m_state = State::Normal; - offset+=clickPos-vMouse; - offset.x=std::clamp((int)offset.x,0,image.Sprite()->width-(int)size.x); - offset.y=std::clamp((int)offset.y,0,image.Sprite()->height-(int)size.y); - clickPos=vMouse; - } - } - - void PictureBox::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - switch (m_state) - { - case State::Disabled: { - pge->FillRect(pos,size,m_manager.colDisable); - }break; - case State::Normal: - case State::Hover: { - pge->FillRect(pos,size,olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - }break; - case State::Click: { - pge->FillRect(pos,size,m_manager.colClick); - }break; - } - pge->DrawPartialSprite({(int)pos.x+1,(int)pos.y+1},image.Sprite(),offset,{(int)size.x-2,(int)size.y-2}); - pge->DrawRect(pos,size,m_manager.colBorder); - } - - void PictureBox::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - switch (m_state) - { - case State::Disabled: { - pge->FillRectDecal(pos,size,olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - }break; - case State::Normal: - case State::Hover: { - pge->FillRectDecal(pos,size,olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - }break; - case State::Click: { - pge->FillRectDecal(pos,size,m_manager.colClick); - }break; - } - pge->DrawPartialDecal({pos.x+1,pos.y+1},image.Decal(),offset,{size.x-2,size.y-2}); - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->DrawRectDecal(pos,size,m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - } - -} - - -class olcDemo_QuickGUI : public olc::PixelGameEngine +class Meteos : public olc::PixelGameEngine { -public: - olcDemo_QuickGUI() + public: + Meteos() { - sAppName = "olcDemo_QuickGUI"; + sAppName = "Meteos"; } -protected: - olc::QuickGUI::Manager guiManager; - - olc::QuickGUI::PictureBox* pictureBox = nullptr; - olc::QuickGUI::Slider* pictureBoxSliderX = nullptr; - olc::QuickGUI::Slider* pictureBoxSliderY = nullptr; - olc::Renderable dirtimg; - -public: bool OnUserCreate() override { - dirtimg.Load("dirtblock.png"); - - pictureBox = new olc::QuickGUI::PictureBox(guiManager, - { 10.0f, 10.0f }, { 128.0f, 128.0f }, {0,0}, dirtimg); - pictureBoxSliderX = new olc::QuickGUI::Slider(guiManager,{pictureBox->pos.x,pictureBox->pos.y+pictureBox->size.y+16},{pictureBox->pos.x+pictureBox->size.x,pictureBox->pos.y+pictureBox->size.y+16}, - 0,pictureBox->image.Sprite()->width-(int)pictureBox->size.x,pictureBox->offset.x); - pictureBoxSliderY = new olc::QuickGUI::Slider(guiManager,{pictureBox->pos.x+pictureBox->size.x+16,pictureBox->pos.y},{pictureBox->pos.x+pictureBox->size.x+16,pictureBox->pos.y+pictureBox->size.y}, - 0,pictureBox->image.Sprite()->height-(int)pictureBox->size.y,pictureBox->offset.y); - - guiManager.AddControl(pictureBox); - guiManager.AddControl(pictureBoxSliderX); + return true; } bool OnUserUpdate(float fElapsedTime) override { - guiManager.Update(this); - - if (pictureBoxSliderX->bHeld) { - pictureBox->offset.x=pictureBoxSliderX->fValue; - } else { - pictureBoxSliderX->fValue=pictureBox->offset.x; - } - - if (pictureBoxSliderY->bHeld) { - pictureBox->offset.y=pictureBoxSliderY->fValue; - } else { - pictureBoxSliderY->fValue=pictureBox->offset.y; - } - - // Draw Stuff! - Clear(olc::BLACK); - - guiManager.DrawDecal(this); + return true; } }; int main() { - olcDemo_QuickGUI demo; - if (demo.Construct(256, 240, 4, 4)) - demo.Start(); + Meteos game; + if (game.Construct(256, 240, 4, 4)) + game.Start(); return 0; } \ No newline at end of file diff --git a/quickgui.h b/quickgui.h deleted file mode 100644 index c445acf..0000000 --- a/quickgui.h +++ /dev/null @@ -1,786 +0,0 @@ -/* - OneLoneCoder - QuickGUI v1.00 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - A semi-immediate mode GUI for very simple GUI stuff. - Includes: - Label - Displays a single-line string - TextBox - Click to enter/edit single-line text - Button - A clickable labelled rectangle - CheckBox - A clickable labelled rectangle that retains state - Slider - An omnidirectional draggable handle between two values - - License (OLC-3) - ~~~~~~~~~~~~~~~ - - Copyright 2018 - 2021 OneLoneCoder.com - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions or derivations of source code must retain the above - copyright notice, this list of conditions and the following disclaimer. - - 2. Redistributions or derivative works in binary form must reproduce - the above copyright notice. This list of conditions and the following - disclaimer must be reproduced in the documentation and/or other - materials provided with the distribution. - - 3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Links - ~~~~~ - YouTube: https://www.youtube.com/javidx9 - Discord: https://discord.gg/WhwHUMV - Twitter: https://www.twitter.com/javidx9 - Twitch: https://www.twitch.tv/javidx9 - GitHub: https://www.github.com/onelonecoder - Homepage: https://www.onelonecoder.com - - Author - ~~~~~~ - David Barr, aka javidx9, ©OneLoneCoder 2019, 2020, 2021, 2022 - -*/ - -#ifndef OLC_PGEX_QUICKGUI_H -#define OLC_PGEX_QUICKGUI_H - -#include "pixelGameEngine.h" - - -namespace olc::QuickGUI -{ - class Manager; - - // Virtual base class for all controls - class BaseControl - { - public: - BaseControl(olc::QuickGUI::Manager& manager); - virtual ~BaseControl(); - - public: - // Switches the control on/off - void Enable(const bool bEnable); - // Sets whether or not the control is interactive/displayed - bool bVisible = true; - - // True on single frame control begins being manipulated - bool bPressed = false; - // True on all frames control is under user manipulation - bool bHeld = false; - // True on single frame control ceases being manipulated - bool bReleased = false; - - public: - // Updates the controls behvaiour - virtual void Update(olc::PixelGameEngine* pge) = 0; - // Draws the control using "sprite" based CPU operations - virtual void Draw(olc::PixelGameEngine* pge) = 0; - // Draws the control using "decal" based GPU operations - virtual void DrawDecal(olc::PixelGameEngine* pge) = 0; - - protected: - // Controls are related to a manager, where the theme resides - // and control groups can be implemented - olc::QuickGUI::Manager& m_manager; - - // All controls exists in one of four states - // Disabled - Greyed out and not interactive - // Normal - interactive and operational - // Hover - currently under the users mouse focus - // Click - user is interacting with the control - enum class State { Disabled, Normal, Hover, Click } m_state = State::Normal; - - // To add a "swish" to things, controls can fade between states - float m_fTransition = 0.0; - }; - - - // A QuickGUI::Manager acts as a convenient grouping of controls - class Manager - { - public: - // Construct Manager, bCleanUpForMe will automatically DELETE any controls - // given to this manager via AddControl() if true - Manager(const bool bCleanUpForMe = true); - virtual ~Manager(); - - public: - // Add a gui element derived form BaseControl to this manager - void AddControl(BaseControl* control); - // Updates all controls this manager operates - void Update(olc::PixelGameEngine* pge); - // Draws as "sprite" all controls this manager operates - void Draw(olc::PixelGameEngine* pge); - // Draws as "decal" all controls this manager operates - void DrawDecal(olc::PixelGameEngine* pge); - - public: // This managers "Theme" can be set here - // Various element colours - olc::Pixel colNormal = olc::DARK_BLUE; - olc::Pixel colHover = olc::BLUE; - olc::Pixel colClick = olc::CYAN; - olc::Pixel colDisable = olc::DARK_GREY; - olc::Pixel colBorder = olc::WHITE; - olc::Pixel colText = olc::WHITE; - // Speed to transiton from Normal -> Hover - float fHoverSpeedOn = 10.0f; - // Speed to transiton from Hover -> Normal - float fHoverSpeedOff = 4.0f; - - private: - // Should this manager call delete on the controls it opeerates? - bool m_bEraseControlsOnDestroy = true; - // Container of controls - std::vector m_vControls; - }; - - - // Creates a Label Control - it's just text! - class Label : public BaseControl - { - public: - Label(olc::QuickGUI::Manager& manager, // Associate with a Manager - const std::string& text, // Text to display - const olc::vf2d& pos, // Location of label top-left - const olc::vf2d& size); // Size of label - - public: - // Position of button - olc::vf2d vPos; - // Size of button - olc::vf2d vSize; - // Text displayed on button - std::string sText; - // Show a border? - bool bHasBorder = false; - // Show a background? - bool bHasBackground = false; - // Where should the text be positioned? - enum class Alignment - {Left, Centre, Right} nAlign = Alignment::Centre; - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - }; - - class TextBox : public Label - { - public: - TextBox(olc::QuickGUI::Manager& manager, // Associate with a Manager - const std::string& text, // Text to display - const olc::vf2d& pos, // Location of text box top-left - const olc::vf2d& size); // Size of text box - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - - protected: - bool m_bTextEdit = false; - - }; - - // Creates a Button Control - a clickable, labelled rectangle - class Button : public BaseControl - { - public: - Button(olc::QuickGUI::Manager& manager, // Associate with a Manager - const std::string& text, // Text to display - const olc::vf2d& pos, // Location of button top-left - const olc::vf2d& size); // Size of button - - public: - // Position of button - olc::vf2d vPos; - // Size of button - olc::vf2d vSize; - // Text displayed on button - std::string sText; - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - }; - - // Creates a Button Control - a clickable, labelled rectangle - class CheckBox : public Button - { - public: - CheckBox(olc::QuickGUI::Manager& manager, // Associate with a Manager - const std::string& text, // Text to display - const bool check, // Is checked or not? - const olc::vf2d& pos, // Location of button top-left - const olc::vf2d& size); // Size of button - - public: - bool bChecked = false; - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - }; - - - // Creates a Slider Control - a grabbable handle that slides between two locations - class Slider : public BaseControl - { - public: - Slider(olc::QuickGUI::Manager& manager, // Associate with a Manager - const olc::vf2d& posmin, // Screen location of "minimum" - const olc::vf2d& posmax, // Screen location of "maximum" - const float valmin, // Value of minimum - const float valmax, // Value of maximum - const float value); // Starting value - - public: - // Minium value - float fMin = -100.0f; - // Maximum value - float fMax = +100.0f; - // Current value - float fValue = 0.0f; - // Size of grab handle - float fGrabRad = 8.0f; - // Location of minimum/start - olc::vf2d vPosMin; - // Location of maximum/end - olc::vf2d vPosMax; - - public: // BaseControl overrides - void Update(olc::PixelGameEngine* pge) override; - void Draw(olc::PixelGameEngine* pge) override; - void DrawDecal(olc::PixelGameEngine* pge) override; - }; - -} - - -#ifdef OLC_PGEX_QUICKGUI -#undef OLC_PGEX_QUICKGUI -namespace olc::QuickGUI -{ - -#pragma region BaseControl - BaseControl::BaseControl(olc::QuickGUI::Manager& manager) : m_manager(manager) - { - m_manager.AddControl(this); - } - - BaseControl::~BaseControl() - { - - } - - void BaseControl::Enable(const bool bEnable) - { - m_state = bEnable ? State::Normal : State::Disabled; - } -#pragma endregion - -#pragma region Manager - Manager::Manager(const bool bCleanUpForMe) - { - m_bEraseControlsOnDestroy = bCleanUpForMe; - } - - Manager::~Manager() - { - if (m_bEraseControlsOnDestroy) - for (auto& p : m_vControls) - delete p; - - m_vControls.clear(); - } - - void Manager::AddControl(BaseControl* control) - { - m_vControls.push_back(control); - } - - void Manager::Update(olc::PixelGameEngine* pge) - { - for (auto& p : m_vControls) p->Update(pge); - } - - void Manager::Draw(olc::PixelGameEngine* pge) - { - for (auto& p : m_vControls) p->Draw(pge); - } - - void Manager::DrawDecal(olc::PixelGameEngine* pge) - { - for (auto& p : m_vControls) p->DrawDecal(pge); - } -#pragma endregion - -#pragma region Label - Label::Label(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) - : BaseControl(manager) - { - vPos = pos; vSize = size; sText = text; - } - - void Label::Update(olc::PixelGameEngine* pge) - { - - } - - void Label::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - if (bHasBackground) - { - pge->FillRect(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); - } - - if(bHasBorder) - pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); - - olc::vf2d vText = pge->GetTextSizeProp(sText); - switch (nAlign) - { - case Alignment::Left: - pge->DrawStringProp(olc::vf2d( vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f ), sText, m_manager.colText); - break; - case Alignment::Centre: - pge->DrawStringProp(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); - break; - case Alignment::Right: - pge->DrawStringProp(olc::vf2d{ vPos.x + vSize.x - vText.x - 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); - break; - } - } - - void Label::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - if (bHasBackground) - { - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); - } - - if (bHasBorder) - { - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2,2), m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - } - - olc::vf2d vText = pge->GetTextSizeProp(sText); - switch (nAlign) - { - case Alignment::Left: - pge->DrawStringPropDecal({ vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); - break; - case Alignment::Centre: - pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); - break; - case Alignment::Right: - pge->DrawStringPropDecal({ vPos.x + vSize.x - vText.x - 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); - break; - } - } -#pragma endregion - - -#pragma region TextBox - TextBox::TextBox(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) - : Label(manager, text, pos, size) - { - nAlign = Alignment::Left; - bHasBorder = true; - bHasBackground = false; - } - - void TextBox::Update(olc::PixelGameEngine* pge) - { - if (m_state == State::Disabled || !bVisible) - return; - - bPressed = false; - bReleased = false; - - olc::vf2d vMouse = pge->GetMousePos(); - - if (vMouse.x >= vPos.x && vMouse.x < vPos.x + vSize.x && - vMouse.y >= vPos.y && vMouse.y < vPos.y + vSize.y) - { - // Released inside box does nothing to me, but i may have - // to finish off the neighbours... oo err - bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; - if (bReleased && pge->IsTextEntryEnabled() && !m_bTextEdit) - { - pge->TextEntryEnable(false); - } - - bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; - if (bPressed && !pge->IsTextEntryEnabled() && !m_bTextEdit) - { - pge->TextEntryEnable(true, sText); - m_bTextEdit = true; - } - - bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; - - - } - else - { - // Released outside box - bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; - if (bReleased && m_bTextEdit) - { - sText = pge->TextEntryGetString(); - pge->TextEntryEnable(false); - m_bTextEdit = false; - } - } - - if (m_bTextEdit && pge->IsTextEntryEnabled()) - sText = pge->TextEntryGetString(); - } - - void TextBox::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - if (bHasBackground) - { - pge->FillRect(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); - } - - if (bHasBorder) - pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); - - if (m_bTextEdit && pge->IsTextEntryEnabled()) - { - // Draw Cursor - int32_t i = pge->TextEntryGetCursor(); - olc::vf2d vCursorPos = pge->GetTextSizeProp(sText.substr(0, i)); - pge->FillRect(olc::vf2d(vPos.x + 2.0f + vCursorPos.x, (vPos.y + (vSize.y - 10.0f) * 0.5f)), { 2, 10 }, m_manager.colText); - } - - // Draw Text - olc::vf2d vText = pge->GetTextSizeProp(sText); - pge->DrawStringProp(olc::vf2d(vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f), sText, m_manager.colText); - - } - - void TextBox::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - if (bHasBackground) - { - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); - } - - if (bHasBorder) - { - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - } - - if (m_bTextEdit && pge->IsTextEntryEnabled()) - { - // Draw Cursor - int32_t i = pge->TextEntryGetCursor(); - olc::vf2d vCursorPos = pge->GetTextSizeProp(sText.substr(0, i)); - pge->FillRectDecal(olc::vf2d(vPos.x + 2.0f + vCursorPos.x, (vPos.y + (vSize.y - 10.0f) * 0.5f)), { 2, 10 }, m_manager.colText); - } - - // Draw Text - olc::vf2d vText = pge->GetTextSizeProp(sText); - pge->DrawStringPropDecal(olc::vf2d(vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f), sText, m_manager.colText); - } -#pragma endregion - -#pragma region Button - Button::Button(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) - : BaseControl(manager) - { - vPos = pos; vSize = size; sText = text; - } - - void Button::Update(olc::PixelGameEngine* pge) - { - if (m_state == State::Disabled || !bVisible) - return; - - bPressed = false; - bReleased = false; - float fElapsedTime = pge->GetElapsedTime(); - - olc::vf2d vMouse = pge->GetMousePos(); - if (m_state != State::Click) - { - if (vMouse.x >= vPos.x && vMouse.x < vPos.x + vSize.x && - vMouse.y >= vPos.y && vMouse.y < vPos.y + vSize.y) - { - m_fTransition += fElapsedTime * m_manager.fHoverSpeedOn; - m_state = State::Hover; - - bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; - if (bPressed) - { - m_state = State::Click; - } - - bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; - } - else - { - m_fTransition -= fElapsedTime * m_manager.fHoverSpeedOff; - m_state = State::Normal; - } - } - else - { - bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; - bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; - if (bReleased) m_state = State::Normal; - } - - m_fTransition = std::clamp(m_fTransition, 0.0f, 1.0f); - } - - void Button::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - switch (m_state) - { - case State::Disabled: - pge->FillRect(vPos, vSize, m_manager.colDisable); - break; - case State::Normal: - case State::Hover: - pge->FillRect(vPos, vSize, olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - break; - case State::Click: - pge->FillRect(vPos, vSize, m_manager.colClick); - break; - } - - pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); - olc::vf2d vText = pge->GetTextSizeProp(sText); - pge->DrawStringProp(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); - } - - void Button::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - switch (m_state) - { - case State::Disabled: - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colDisable); - break; - case State::Normal: - case State::Hover: - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - break; - case State::Click: - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colClick); - break; - } - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - - olc::vf2d vText = pge->GetTextSizeProp(sText); - pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); - } -#pragma endregion - - -#pragma region CheckBox - CheckBox::CheckBox(olc::QuickGUI::Manager& manager, const std::string& text, const bool check, const olc::vf2d& pos, const olc::vf2d& size) - : Button(manager, text, pos, size) - { - bChecked = check; - } - - void CheckBox::Update(olc::PixelGameEngine* pge) - { - if (m_state == State::Disabled || !bVisible) - return; - - Button::Update(pge); - if (bPressed) bChecked = !bChecked; - } - - void CheckBox::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - Button::Draw(pge); - - if (bChecked) - pge->DrawRect(vPos + olc::vf2d(2, 2), vSize - olc::vi2d(4, 4), m_manager.colBorder); - } - - void CheckBox::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - Button::DrawDecal(pge); - - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->FillRectDecal(vPos + olc::vf2d(2,2), vSize - olc::vf2d(4, 4), m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - - olc::vf2d vText = pge->GetTextSizeProp(sText); - pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); - } -#pragma endregion - -#pragma region Slider - Slider::Slider(olc::QuickGUI::Manager& manager, const olc::vf2d& posmin, const olc::vf2d& posmax, const float valmin, const float valmax, const float value) - : BaseControl(manager) - { - vPosMin = posmin; vPosMax = posmax; fMin = valmin; fMax = valmax; fValue = value; - } - - void Slider::Update(olc::PixelGameEngine* pge) - { - if (m_state == State::Disabled || !bVisible) - return; - - float fElapsedTime = pge->GetElapsedTime(); - - olc::vf2d vMouse = pge->GetMousePos(); - bHeld = false; - if (m_state == State::Click) - { - olc::vf2d d = vPosMax - vPosMin; - float u = d.dot(vMouse - vPosMin) / d.mag2(); - fValue = u * (fMax - fMin) + fMin; - bHeld = true; - } - else - { - olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); - if ((vMouse - vSliderPos).mag2() <= int32_t(fGrabRad) * int32_t(fGrabRad)) - { - m_fTransition += fElapsedTime * m_manager.fHoverSpeedOn; - m_state = State::Hover; - if (pge->GetMouse(olc::Mouse::LEFT).bPressed) - { - m_state = State::Click; - bPressed = true; - } - } - else - m_state = State::Normal; - } - - if (pge->GetMouse(olc::Mouse::LEFT).bReleased) - { - m_state = State::Normal; - bReleased = true; - } - - if (m_state == State::Normal) - { - m_fTransition -= fElapsedTime * m_manager.fHoverSpeedOff; - m_state = State::Normal; - bHeld = false; - } - - fValue = std::clamp(fValue, fMin, fMax); - m_fTransition = std::clamp(m_fTransition, 0.0f, 1.0f); - } - - void Slider::Draw(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - pge->DrawLine(vPosMin, vPosMax, m_manager.colBorder); - olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); - - switch (m_state) - { - case State::Disabled: - pge->FillCircle(vSliderPos, int32_t(fGrabRad), m_manager.colDisable); - break; - case State::Normal: - case State::Hover: - pge->FillCircle(vSliderPos, int32_t(fGrabRad), olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - break; - case State::Click: - pge->FillCircle(vSliderPos, int32_t(fGrabRad), m_manager.colClick); - break; - } - - - pge->DrawCircle(vSliderPos, int32_t(fGrabRad), m_manager.colBorder); - } - - void Slider::DrawDecal(olc::PixelGameEngine* pge) - { - if (!bVisible) - return; - - pge->DrawLineDecal(vPosMin, vPosMax, m_manager.colBorder); - olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); - - switch (m_state) - { - case State::Disabled: - pge->FillRectDecal(vSliderPos - olc::vf2d(fGrabRad, fGrabRad), olc::vf2d(fGrabRad, fGrabRad) * 2.0f, m_manager.colDisable); - break; - case State::Normal: - case State::Hover: - pge->FillRectDecal(vSliderPos - olc::vf2d(fGrabRad, fGrabRad), olc::vf2d(fGrabRad, fGrabRad) * 2.0f, olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); - break; - case State::Click: - pge->FillRectDecal(vSliderPos - olc::vf2d(fGrabRad, fGrabRad), olc::vf2d(fGrabRad, fGrabRad) * 2.0f, m_manager.colClick); - break; - } - - pge->SetDecalMode(olc::DecalMode::WIREFRAME); - pge->FillRectDecal(vSliderPos - olc::vf2d(fGrabRad, fGrabRad), olc::vf2d(fGrabRad, fGrabRad) * 2.0f, m_manager.colBorder); - pge->SetDecalMode(olc::DecalMode::NORMAL); - } - - -#pragma endregion - -} -#endif // OLC_PGEX_QUICKGUI -#endif // OLC_PGEX_QUICKGUI_H \ No newline at end of file diff --git a/road.png b/road.png deleted file mode 100644 index d188bd398fa6c4ef94b9533ce437d3ed3b76d590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8452 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 diff --git a/sol.hpp b/sol.hpp deleted file mode 100644 index 01a508e..0000000 --- a/sol.hpp +++ /dev/null @@ -1,28907 +0,0 @@ -// The MIT License (MIT) - -// Copyright (c) 2013-2020 Rapptz, ThePhD and contributors - -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// This file was generated with a script. -// Generated 2022-10-23 03:24:40.159358 UTC -// This header was generated with sol v3.3.0 (revision 0386513a) -// https://github.com/ThePhD/sol2 - -#ifndef SOL_SINGLE_INCLUDE_HPP -#define SOL_SINGLE_INCLUDE_HPP - -// beginning of sol/sol.hpp - -#ifndef SOL_HPP -#define SOL_HPP - -// beginning of sol/version.hpp - -#include "config.hpp" - -#define SOL_VERSION_MAJOR 3 -#define SOL_VERSION_MINOR 2 -#define SOL_VERSION_PATCH 3 -#define SOL_VERSION_STRING "3.2.3" -#define SOL_VERSION ((SOL_VERSION_MAJOR * 100000) + (SOL_VERSION_MINOR * 100) + (SOL_VERSION_PATCH)) - -#define SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) #_TOKEN -#define SOL_TOKEN_TO_STRING_I_(_TOKEN) SOL_TOKEN_TO_STRING_POST_EXPANSION_I_(_TOKEN) - -#define SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) _LEFT##_RIGHT -#define SOL_CONCAT_TOKENS_I_(_LEFT, _RIGHT) SOL_CONCAT_TOKENS_POST_EXPANSION_I_(_LEFT, _RIGHT) - -#define SOL_RAW_IS_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) != 0) -#define SOL_RAW_IS_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3) == 0) -#define SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL) ((3 OP_SYMBOL 3) > 3) -#define SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL) ((3 OP_SYMBOL 3 OP_SYMBOL 3) < 0) - -#define SOL_IS_ON(OP_SYMBOL) SOL_RAW_IS_ON(OP_SYMBOL ## _I_) -#define SOL_IS_OFF(OP_SYMBOL) SOL_RAW_IS_OFF(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_ON(OP_SYMBOL) SOL_RAW_IS_DEFAULT_ON(OP_SYMBOL ## _I_) -#define SOL_IS_DEFAULT_OFF(OP_SYMBOL) SOL_RAW_IS_DEFAULT_OFF(OP_SYMBOL ## _I_) - -#define SOL_ON | -#define SOL_OFF ^ -#define SOL_DEFAULT_ON + -#define SOL_DEFAULT_OFF - - -#if defined(SOL_BUILD_CXX_MODE) - #if (SOL_BUILD_CXX_MODE != 0) - #define SOL_BUILD_CXX_MODE_I_ SOL_ON - #else - #define SOL_BUILD_CXX_MODE_I_ SOL_OFF - #endif -#elif defined(__cplusplus) - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_CXX_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_BUILD_C_MODE) - #if (SOL_BUILD_C_MODE != 0) - #define SOL_BUILD_C_MODE_I_ SOL_ON - #else - #define SOL_BUILD_C_MODE_I_ SOL_OFF - #endif -#elif defined(__STDC__) - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_ON -#else - #define SOL_BUILD_C_MODE_I_ SOL_DEFAULT_OFF -#endif - -#if SOL_IS_ON(SOL_BUILD_C_MODE) - #include - #include - #include -#else - #include - #include - #include -#endif - -#if defined(SOL_COMPILER_VCXX) - #if defined(SOL_COMPILER_VCXX != 0) - #define SOL_COMPILER_VCXX_I_ SOL_ON - #else - #define SOL_COMPILER_VCXX_I_ SOL_OFF - #endif -#elif defined(_MSC_VER) - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_VCXX_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_GCC) - #if defined(SOL_COMPILER_GCC != 0) - #define SOL_COMPILER_GCC_I_ SOL_ON - #else - #define SOL_COMPILER_GCC_I_ SOL_OFF - #endif -#elif defined(__GNUC__) - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_GCC_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_CLANG) - #if defined(SOL_COMPILER_CLANG != 0) - #define SOL_COMPILER_CLANG_I_ SOL_ON - #else - #define SOL_COMPILER_CLANG_I_ SOL_OFF - #endif -#elif defined(__clang__) - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_CLANG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_EDG) - #if defined(SOL_COMPILER_EDG != 0) - #define SOL_COMPILER_EDG_I_ SOL_ON - #else - #define SOL_COMPILER_EDG_I_ SOL_OFF - #endif -#else - #define SOL_COMPILER_EDG_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_COMPILER_MINGW) - #if (SOL_COMPILER_MINGW != 0) - #define SOL_COMPILER_MINGW_I_ SOL_ON - #else - #define SOL_COMPILER_MINGW_I_ SOL_OFF - #endif -#elif defined(__MINGW32__) - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_ON -#else - #define SOL_COMPILER_MINGW_I_ SOL_DEFAULT_OFF -#endif - -#if SIZE_MAX <= 0xFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_ON - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_OFF -#elif SIZE_MAX <= 0xFFFFFFFFULL - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_ON - #define SOL_PLATFORM_X64_I_ SOL_OFF -#else - #define SOL_PLATFORM_X16_I_ SOL_OFF - #define SOL_PLATFORM_X86_I_ SOL_OFF - #define SOL_PLATFORM_X64_I_ SOL_ON -#endif - -#define SOL_PLATFORM_ARM32_I_ SOL_OFF -#define SOL_PLATFORM_ARM64_I_ SOL_OFF - -#if defined(SOL_PLATFORM_WINDOWS) - #if (SOL_PLATFORM_WINDOWS != 0) - #define SOL_PLATFORM_WINDOWS_I_ SOL_ON - #else - #define SOL_PLATFORM_WINDOWS_I_ SOL_OFF - #endif -#elif defined(_WIN32) - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_WINDOWS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_CYGWIN) - #if (SOL_PLATFORM_CYGWIN != 0) - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #else - #define SOL_PLATFORM_CYGWIN_I_ SOL_ON - #endif -#elif defined(__CYGWIN__) - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_CYGWIN_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_APPLE) - #if (SOL_PLATFORM_APPLE != 0) - #define SOL_PLATFORM_APPLE_I_ SOL_ON - #else - #define SOL_PLATFORM_APPLE_I_ SOL_OFF - #endif -#elif defined(__APPLE__) - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_ON -#else - #define SOL_PLATFORM_APPLE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_UNIX) - #if (SOL_PLATFORM_UNIX != 0) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_OFF - #endif -#elif defined(__unix__) - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_UNIXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_PLATFORM_LINUX) - #if (SOL_PLATFORM_LINUX != 0) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_ON - #else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_OFF - #endif -#elif defined(__LINUX__) - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAUKT_ON -#else - #define SOL_PLATFORM_LINUXLIKE_I_ SOL_DEFAULT_OFF -#endif - -#define SOL_PLATFORM_APPLE_IPHONE_I_ SOL_OFF -#define SOL_PLATFORM_BSDLIKE_I_ SOL_OFF - -#if defined(SOL_IN_DEBUG_DETECTED) - #if SOL_IN_DEBUG_DETECTED != 0 - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#elif !defined(NDEBUG) - #if SOL_IS_ON(SOL_COMPILER_VCXX) && defined(_DEBUG) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #elif (SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC)) && !defined(__OPTIMIZE__) - #define SOL_DEBUG_BUILD_I_ SOL_ON - #else - #define SOL_DEBUG_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_DEBUG_BUILD_I_ SOL_DEFAULT_OFF -#endif // We are in a debug mode of some sort - -#if defined(SOL_NO_EXCEPTIONS) - #if (SOL_NO_EXCEPTIONS != 0) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPUNWIND) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__EXCEPTIONS) - #define SOL_EXCEPTIONS_I_ SOL_OFF - #else - #define SOL_EXCEPTIONS_I_ SOL_ON - #endif -#else - #define SOL_EXCEPTIONS_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_RTTI) - #if (SOL_NO_RTTI != 0) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) - #if !defined(_CPPRTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) || SOL_IS_ON(SOL_COMPILER_GCC) - #if !defined(__GXX_RTTI) - #define SOL_RTTI_I_ SOL_OFF - #else - #define SOL_RTTI_I_ SOL_ON - #endif -#else - #define SOL_RTTI_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_NO_THREAD_LOCAL) - #if SOL_NO_THREAD_LOCAL != 0 - #define SOL_USE_THREAD_LOCAL_I_ SOL_OFF - #else - #define SOL_USE_THREAD_LOCAL_I_ SOL_ON - #endif -#else - #define SOL_USE_THREAD_LOCAL_I_ SOL_DEFAULT_ON -#endif // thread_local keyword is bjorked on some platforms - -#if defined(SOL_ALL_SAFETIES_ON) - #if SOL_ALL_SAFETIES_ON != 0 - #define SOL_ALL_SAFETIES_ON_I_ SOL_ON - #else - #define SOL_ALL_SAFETIES_ON_I_ SOL_OFF - #endif -#else - #define SOL_ALL_SAFETIES_ON_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_GETTER) - #if SOL_SAFE_GETTER != 0 - #define SOL_SAFE_GETTER_I_ SOL_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_GETTER_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_GETTER_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_USERTYPE) - #if SOL_SAFE_USERTYPE != 0 - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_USERTYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_USERTYPE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_REFERENCES) - #if SOL_SAFE_REFERENCES != 0 - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_REFERENCES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_REFERENCES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTIONS) - #if SOL_SAFE_FUNCTIONS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#elif defined (SOL_SAFE_FUNCTION_OBJECTS) - #if SOL_SAFE_FUNCTION_OBJECTS != 0 - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_OBJECTS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_FUNCTION_CALLS) - #if SOL_SAFE_FUNCTION_CALLS != 0 - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_FUNCTION_CALLS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_PROXIES) - #if SOL_SAFE_PROXIES != 0 - #define SOL_SAFE_PROXIES_I_ SOL_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_PROXIES_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_PROXIES_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_SAFE_NUMERICS) - #if SOL_SAFE_NUMERICS != 0 - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_NUMERICS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_NUMERICS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_ALL_INTEGER_VALUES_FIT) - #if (SOL_ALL_INTEGER_VALUES_FIT != 0) - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_ON - #else - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_OFF - #endif -#elif !SOL_IS_DEFAULT_OFF(SOL_SAFE_NUMERICS) && SOL_IS_OFF(SOL_SAFE_NUMERICS) - // if numerics is intentionally turned off, flip this on - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_ON -#else - // default to off - #define SOL_ALL_INTEGER_VALUES_FIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_SAFE_STACK_CHECK) - #if SOL_SAFE_STACK_CHECK != 0 - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_SAFE_STACK_CHECK_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_ON - #else - #define SOL_SAFE_STACK_CHECK_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_CHECK_NUMBER_PRECISION) - #if SOL_NO_CHECK_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#elif defined(SOL_NO_CHECKING_NUMBER_PRECISION) - #if SOL_NO_CHECKING_NUMBER_PRECISION != 0 - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_OFF - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_SAFE_NUMERICS) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_ON - #else - #define SOL_NUMBER_PRECISION_CHECKS_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_STRINGS_ARE_NUMBERS) - #if (SOL_STRINGS_ARE_NUMBERS != 0) - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_ON - #else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_OFF - #endif -#else - #define SOL_STRINGS_ARE_NUMBERS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_ENABLE_INTEROP) - #if SOL_ENABLE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#elif defined(SOL_USE_INTEROP) - #if SOL_USE_INTEROP != 0 - #define SOL_USE_INTEROP_I_ SOL_ON - #else - #define SOL_USE_INTEROP_I_ SOL_OFF - #endif -#else - #define SOL_USE_INTEROP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_NIL) - #if (SOL_NO_NIL != 0) - #define SOL_NIL_I_ SOL_OFF - #else - #define SOL_NIL_I_ SOL_ON - #endif -#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) || defined(__OBJC__) || defined(nil) - #define SOL_NIL_I_ SOL_DEFAULT_OFF -#else - #define SOL_NIL_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USERTYPE_TYPE_BINDING_INFO) - #if (SOL_USERTYPE_TYPE_BINDING_INFO != 0) - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_ON - #else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_OFF - #endif -#else - #define SOL_USERTYPE_TYPE_BINDING_INFO_I_ SOL_DEFAULT_ON -#endif // We should generate a my_type.__type table with lots of class information for usertypes - -#if defined(SOL_AUTOMAGICAL_TYPES_BY_DEFAULT) - #if (SOL_AUTOMAGICAL_TYPES_BY_DEFAULT != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#elif defined(SOL_DEFAULT_AUTOMAGICAL_USERTYPES) - #if (SOL_DEFAULT_AUTOMAGICAL_USERTYPES != 0) - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_ON - #else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_AUTOMAGICAL_USERTYPES_I_ SOL_DEFAULT_ON -#endif // make is_automagical on/off by default - -#if defined(SOL_STD_VARIANT) - #if (SOL_STD_VARIANT != 0) - #define SOL_STD_VARIANT_I_ SOL_ON - #else - #define SOL_STD_VARIANT_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_COMPILER_CLANG) && SOL_IS_ON(SOL_PLATFORM_APPLE) - #if defined(__has_include) - #if __has_include() - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_OFF - #endif - #else - #define SOL_STD_VARIANT_I_ SOL_DEFAULT_ON - #endif -#endif // make is_automagical on/off by default - -#if defined(SOL_NOEXCEPT_FUNCTION_TYPE) - #if (SOL_NOEXCEPT_FUNCTION_TYPE != 0) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #endif -#else - #if defined(__cpp_noexcept_function_type) - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_ON - #elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(_MSVC_LANG) && (_MSVC_LANG < 201403L)) - // There is a bug in the VC++ compiler?? - // on /std:c++latest under x86 conditions (VS 15.5.2), - // compiler errors are tossed for noexcept markings being on function types - // that are identical in every other way to their non-noexcept marked types function types... - // VS 2019: There is absolutely a bug. - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_OFF - #else - #define SOL_USE_NOEXCEPT_FUNCTION_TYPE_I_ SOL_DEFAULT_ON - #endif -#endif // noexcept is part of a function's type - -#if defined(SOL_STACK_STRING_OPTIMIZATION_SIZE) && SOL_STACK_STRING_OPTIMIZATION_SIZE > 0 - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ SOL_STACK_STRING_OPTIMIZATION_SIZE -#else - #define SOL_OPTIMIZATION_STRING_CONVERSION_STACK_SIZE_I_ 1024 -#endif - -#if defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_ID_SIZE_I_ SOL_ID_SIZE -#else - #define SOL_ID_SIZE_I_ 512 -#endif - -#if defined(LUA_IDSIZE) && LUA_IDSIZE > 0 - #define SOL_FILE_ID_SIZE_I_ LUA_IDSIZE -#elif defined(SOL_ID_SIZE) && SOL_ID_SIZE > 0 - #define SOL_FILE_ID_SIZE_I_ SOL_FILE_ID_SIZE -#else - #define SOL_FILE_ID_SIZE_I_ 2048 -#endif - -#if defined(SOL_PRINT_ERRORS) - #if (SOL_PRINT_ERRORS != 0) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#else - #if SOL_IS_ON(SOL_ALL_SAFETIES_ON) - #define SOL_PRINT_ERRORS_I_ SOL_ON - #elif SOL_IS_ON(SOL_DEBUG_BUILD) - #define SOL_PRINT_ERRORS_I_ SOL_DEFAULT_ON - #else - #define SOL_PRINT_ERRORS_I_ SOL_OFF - #endif -#endif - -#if defined(SOL_DEFAULT_PASS_ON_ERROR) - #if (SOL_DEFAULT_PASS_ON_ERROR != 0) - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_ON - #else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_OFF - #endif -#else - #define SOL_DEFAULT_PASS_ON_ERROR_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUA) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUA) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUA_I_ SOL_ON - #else - #define SOL_USE_CXX_LUA_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUA_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USING_CXX_LUAJIT) - #if (SOL_USING_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#elif defined(SOL_USE_CXX_LUAJIT) - #if (SOL_USE_CXX_LUA != 0) - #define SOL_USE_CXX_LUAJIT_I_ SOL_ON - #else - #define SOL_USE_CXX_LUAJIT_I_ SOL_OFF - #endif -#else - #define SOL_USE_CXX_LUAJIT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_NO_LUA_HPP) - #if (SOL_NO_LUA_HPP != 0) - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #else - #define SOL_USE_LUA_HPP_I_ SOL_ON - #endif -#elif defined(SOL_USING_CXX_LUA) - #define SOL_USE_LUA_HPP_I_ SOL_OFF -#elif defined(__has_include) - #if __has_include() - #define SOL_USE_LUA_HPP_I_ SOL_ON - #else - #define SOL_USE_LUA_HPP_I_ SOL_OFF - #endif -#else - #define SOL_USE_LUA_HPP_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_CONTAINERS_START) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START -#elif defined(SOL_CONTAINERS_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINERS_START_INDEX -#elif defined(SOL_CONTAINER_START_INDEX) - #define SOL_CONTAINER_START_INDEX_I_ SOL_CONTAINER_START_INDEX -#else - #define SOL_CONTAINER_START_INDEX_I_ 1 -#endif - -#if defined (SOL_NO_MEMORY_ALIGNMENT) - #if (SOL_NO_MEMORY_ALIGNMENT != 0) - #define SOL_ALIGN_MEMORY_I_ SOL_OFF - #else - #define SOL_ALIGN_MEMORY_I_ SOL_ON - #endif -#else - #define SOL_ALIGN_MEMORY_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_USE_BOOST) - #if (SOL_USE_BOOST != 0) - #define SOL_USE_BOOST_I_ SOL_ON - #else - #define SOL_USE_BOOST_I_ SOL_OFF - #endif -#else - #define SOL_USE_BOOST_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_USE_UNSAFE_BASE_LOOKUP) - #if (SOL_USE_UNSAFE_BASE_LOOKUP != 0) - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_ON - #else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_OFF - #endif -#else - #define SOL_USE_UNSAFE_BASE_LOOKUP_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_INSIDE_UNREAL) - #if (SOL_INSIDE_UNREAL != 0) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_OFF - #endif -#else - #if defined(UE_BUILD_DEBUG) || defined(UE_BUILD_DEVELOPMENT) || defined(UE_BUILD_TEST) || defined(UE_BUILD_SHIPPING) || defined(UE_SERVER) - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_ON - #else - #define SOL_INSIDE_UNREAL_ENGINE_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if defined(SOL_NO_COMPAT) - #if (SOL_NO_COMPAT != 0) - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_OFF - #else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_ON - #endif -#else - #define SOL_USE_COMPATIBILITY_LAYER_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_GET_FUNCTION_POINTER_UNSAFE) - #if (SOL_GET_FUNCTION_POINTER_UNSAFE != 0) - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_ON - #else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_OFF - #endif -#else - #define SOL_GET_FUNCTION_POINTER_UNSAFE_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_FUNCTION_CALL_VALUE_SEMANTICS) - #if (SOL_FUNCTION_CALL_VALUE_SEMANTICS != 0) - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_ON - #else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_OFF - #endif -#else - #define SOL_FUNCTION_CALL_VALUE_SEMANTICS_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_MINGW_CCTYPE_IS_POISONED) - #if (SOL_MINGW_CCTYPE_IS_POISONED != 0) - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_ON - #else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_MINGW) && defined(__GNUC__) && (__GNUC__ < 6) - // MinGW is off its rocker in some places... - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_ON -#else - #define SOL_MINGW_CCTYPE_IS_POISONED_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_CHAR8_T) - #if (SOL_CHAR8_T != 0) - #define SOL_CHAR8_T_I_ SOL_ON - #else - #define SOL_CHAR8_T_I_ SOL_OFF - #endif -#else - #if defined(__cpp_char8_t) - #define SOL_CHAR8_T_I_ SOL_DEFAULT_ON - #else - #define SOL_CHAR8_T_I_ SOL_DEFAULT_OFF - #endif -#endif - -#if SOL_IS_ON(SOL_USE_BOOST) - #include - - #if BOOST_VERSION >= 107500 // Since Boost 1.75.0 boost::none is constexpr - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr - #else - #define SOL_BOOST_NONE_CONSTEXPR_I_ const - #endif // BOOST_VERSION -#else - // assume boost isn't using a garbage version - #define SOL_BOOST_NONE_CONSTEXPR_I_ constexpr -#endif - -#if defined(SOL2_CI) - #if (SOL2_CI != 0) - #define SOL2_CI_I_ SOL_ON - #else - #define SOL2_CI_I_ SOL_OFF - #endif -#else - #define SOL2_CI_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_C_ASSERT) - #define SOL_USER_C_ASSERT_I_ SOL_ON -#else - #define SOL_USER_C_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -#if defined(SOL_M_ASSERT) - #define SOL_USER_M_ASSERT_I_ SOL_ON -#else - #define SOL_USER_M_ASSERT_I_ SOL_DEFAULT_OFF -#endif - -// beginning of sol/prologue.hpp - -#if defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue was already included in translation unit and not properly ended with an epilogue." -#endif - -#define SOL_PROLOGUE_I_ 1 - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define _FWD(...) static_cast( __VA_ARGS__ ) - - #if SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define _MOVE(...) static_cast<__typeof( __VA_ARGS__ )&&>( __VA_ARGS__ ) - #else - #include - - #define _MOVE(...) static_cast<::std::remove_reference_t<( __VA_ARGS__ )>&&>( __VA_OPT__(,) ) - #endif -#endif - -// end of sol/prologue.hpp - -// beginning of sol/epilogue.hpp - -#if !defined(SOL_PROLOGUE_I_) - #error "[sol2] Library Prologue is missing from this translation unit." -#else - #undef SOL_PROLOGUE_I_ -#endif - -#if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #undef _FWD - #undef _MOVE -#endif - -// end of sol/epilogue.hpp - -// beginning of sol/detail/build_version.hpp - -#if defined(SOL_DLL) - #if (SOL_DLL != 0) - #define SOL_DLL_I_ SOL_ON - #else - #define SOL_DLL_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_COMPILER_VCXX) && (defined(DLL_) || defined(_DLL)) - #define SOL_DLL_I_ SOL_DEFAULT_ON -#else - #define SOL_DLL_I_ SOL_DEFAULT_OFF -#endif // DLL definition - -#if defined(SOL_HEADER_ONLY) - #if (SOL_HEADER_ONLY != 0) - #define SOL_HEADER_ONLY_I_ SOL_ON - #else - #define SOL_HEADER_ONLY_I_ SOL_OFF - #endif -#else - #define SOL_HEADER_ONLY_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_BUILD) - #if (SOL_BUILD != 0) - #define SOL_BUILD_I_ SOL_ON - #else - #define SOL_BUILD_I_ SOL_OFF - #endif -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_BUILD_I_ SOL_DEFAULT_OFF -#else - #define SOL_BUILD_I_ SOL_DEFAULT_ON -#endif - -#if defined(SOL_UNITY_BUILD) - #if (SOL_UNITY_BUILD != 0) - #define SOL_UNITY_BUILD_I_ SOL_ON - #else - #define SOL_UNITY_BUILD_I_ SOL_OFF - #endif -#else - #define SOL_UNITY_BUILD_I_ SOL_DEFAULT_OFF -#endif // Header only library - -#if defined(SOL_C_FUNCTION_LINKAGE) - #define SOL_C_FUNCTION_LINKAGE_I_ SOL_C_FUNCTION_LINKAGE -#else - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - // C++ - #define SOL_C_FUNCTION_LINKAGE_I_ extern "C" - #else - // normal - #define SOL_C_FUNCTION_LINKAGE_I_ - #endif // C++ or not -#endif // Linkage specification for C functions - -#if defined(SOL_API_LINKAGE) - #define SOL_API_LINKAGE_I_ SOL_API_LINKAGE -#else - #if SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) || SOL_IS_ON(SOL_PLATFORM_WINDOWS) || SOL_IS_ON(SOL_PLATFORM_CYGWIN) - // MSVC Compiler; or, Windows, or Cygwin platforms - #if SOL_IS_ON(SOL_BUILD) - // Building the library - #if SOL_IS_ON(SOL_COMPILER_GCC) - // Using GCC - #define SOL_API_LINKAGE_I_ __attribute__((dllexport)) - #else - // Using Clang, MSVC, etc... - #define SOL_API_LINKAGE_I_ __declspec(dllexport) - #endif - #else - #if SOL_IS_ON(SOL_COMPILER_GCC) - #define SOL_API_LINKAGE_I_ __attribute__((dllimport)) - #else - #define SOL_API_LINKAGE_I_ __declspec(dllimport) - #endif - #endif - #else - // extern if building normally on non-MSVC - #define SOL_API_LINKAGE_I_ extern - #endif - #elif SOL_IS_ON(SOL_UNITY_BUILD) - // Built-in library, like how stb typical works - #if SOL_IS_ON(SOL_HEADER_ONLY) - // Header only, so functions are defined "inline" - #define SOL_API_LINKAGE_I_ inline - #else - // Not header only, so seperately compiled files - #define SOL_API_LINKAGE_I_ extern - #endif - #else - // Normal static library - #if SOL_IS_ON(SOL_BUILD_CXX_MODE) - #define SOL_API_LINKAGE_I_ - #else - #define SOL_API_LINKAGE_I_ extern - #endif - #endif // DLL or not -#endif // Build definitions - -#if defined(SOL_PUBLIC_FUNC_DECL) - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_PUBLIC_FUNC_DECL -#else - #define SOL_PUBLIC_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DECL_) - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_INTERNAL_FUNC_DECL_ -#else - #define SOL_INTERNAL_FUNC_DECL_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_PUBLIC_FUNC_DEF) - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_PUBLIC_FUNC_DEF -#else - #define SOL_PUBLIC_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_INTERNAL_FUNC_DEF) - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_INTERNAL_FUNC_DEF -#else - #define SOL_INTERNAL_FUNC_DEF_I_ SOL_API_LINKAGE_I_ -#endif - -#if defined(SOL_FUNC_DECL) - #define SOL_FUNC_DECL_I_ SOL_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_FUNC_DEFN) - #define SOL_FUNC_DEFN_I_ SOL_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_FUNC_DEFN_I_ __declspec(dllexport) - #else - #define SOL_FUNC_DEFN_I_ __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_FUNC_DEFN_I_ __attribute__((visibility("default"))) - #else - #define SOL_FUNC_DEFN_I_ - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DECL) - #define SOL_HIDDEN_FUNC_DECL_I_ SOL_HIDDEN_FUNC_DECL -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DECL_I_ -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllexport) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern __declspec(dllimport) - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DECL_I_ extern __attribute__((visibility("default"))) - #else - #define SOL_HIDDEN_FUNC_DECL_I_ extern - #endif -#endif - -#if defined(SOL_HIDDEN_FUNC_DEFN) - #define SOL_HIDDEN_FUNC_DEFN_I_ SOL_HIDDEN_FUNC_DEFN -#elif SOL_IS_ON(SOL_HEADER_ONLY) - #define SOL_HIDDEN_FUNC_DEFN_I_ inline -#elif SOL_IS_ON(SOL_DLL) - #if SOL_IS_ON(SOL_COMPILER_VCXX) - #if SOL_IS_ON(SOL_BUILD) - #define SOL_HIDDEN_FUNC_DEFN_I_ - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif - #elif SOL_IS_ON(SOL_COMPILER_GCC) || SOL_IS_ON(SOL_COMPILER_CLANG) - #define SOL_HIDDEN_FUNC_DEFN_I_ __attribute__((visibility("hidden"))) - #else - #define SOL_HIDDEN_FUNC_DEFN_I_ - #endif -#endif - -// end of sol/detail/build_version.hpp - -// end of sol/version.hpp - -#if SOL_IS_ON(SOL_INSIDE_UNREAL_ENGINE) -#ifdef check -#pragma push_macro("check") -#undef check -#endif -#endif // Unreal Engine 4 Bullshit - -#if SOL_IS_ON(SOL_COMPILER_GCC) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#pragma GCC diagnostic ignored "-Wconversion" -#if __GNUC__ > 6 -#pragma GCC diagnostic ignored "-Wnoexcept-type" -#endif -#elif SOL_IS_ON(SOL_COMPILER_CLANG) -#elif SOL_IS_ON(SOL_COMPILER_VCXX) -#pragma warning(push) -#pragma warning(disable : 4505) // unreferenced local function has been removed GEE THANKS -#endif // clang++ vs. g++ vs. VC++ - -// beginning of sol/forward.hpp - -#ifndef SOL_FORWARD_HPP -#define SOL_FORWARD_HPP - -#include -#include -#include - -#if SOL_IS_ON(SOL_USE_CXX_LUA) || SOL_IS_ON(SOL_USE_CXX_LUAJIT) -struct lua_State; -#else -extern "C" { -struct lua_State; -} -#endif // C++ Mangling for Lua vs. Not - -namespace sol { - - enum class type; - - class stateless_reference; - template - class basic_reference; - using reference = basic_reference; - using main_reference = basic_reference; - class stateless_stack_reference; - class stack_reference; - - template - class basic_bytecode; - - struct lua_value; - - struct proxy_base_tag; - template - struct proxy_base; - template - struct table_proxy; - - template - class basic_table_core; - template - using table_core = basic_table_core; - template - using main_table_core = basic_table_core; - template - using stack_table_core = basic_table_core; - template - using basic_table = basic_table_core; - using table = table_core; - using global_table = table_core; - using main_table = main_table_core; - using main_global_table = main_table_core; - using stack_table = stack_table_core; - using stack_global_table = stack_table_core; - - template - struct basic_lua_table; - using lua_table = basic_lua_table; - using stack_lua_table = basic_lua_table; - - template - class basic_usertype; - template - using usertype = basic_usertype; - template - using stack_usertype = basic_usertype; - - template - class basic_metatable; - using metatable = basic_metatable; - using stack_metatable = basic_metatable; - - template - struct basic_environment; - using environment = basic_environment; - using main_environment = basic_environment; - using stack_environment = basic_environment; - - template - class basic_function; - template - class basic_protected_function; - using unsafe_function = basic_function; - using safe_function = basic_protected_function; - using main_unsafe_function = basic_function; - using main_safe_function = basic_protected_function; - using stack_unsafe_function = basic_function; - using stack_safe_function = basic_protected_function; - using stack_aligned_unsafe_function = basic_function; - using stack_aligned_safe_function = basic_protected_function; - using protected_function = safe_function; - using main_protected_function = main_safe_function; - using stack_protected_function = stack_safe_function; - using stack_aligned_protected_function = stack_aligned_safe_function; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function = protected_function; - using main_function = main_protected_function; - using stack_function = stack_protected_function; - using stack_aligned_function = stack_aligned_safe_function; -#else - using function = unsafe_function; - using main_function = main_unsafe_function; - using stack_function = stack_unsafe_function; - using stack_aligned_function = stack_aligned_unsafe_function; -#endif - using stack_aligned_stack_handler_function = basic_protected_function; - - struct unsafe_function_result; - struct protected_function_result; - using safe_function_result = protected_function_result; -#if SOL_IS_ON(SOL_SAFE_FUNCTION_OBJECTS) - using function_result = safe_function_result; -#else - using function_result = unsafe_function_result; -#endif - - template - class basic_object_base; - template - class basic_object; - template - class basic_userdata; - template - class basic_lightuserdata; - template - class basic_coroutine; - template - class basic_packaged_coroutine; - template - class basic_thread; - - using object = basic_object; - using userdata = basic_userdata; - using lightuserdata = basic_lightuserdata; - using thread = basic_thread; - using coroutine = basic_coroutine; - using packaged_coroutine = basic_packaged_coroutine; - using main_object = basic_object; - using main_userdata = basic_userdata; - using main_lightuserdata = basic_lightuserdata; - using main_coroutine = basic_coroutine; - using stack_object = basic_object; - using stack_userdata = basic_userdata; - using stack_lightuserdata = basic_lightuserdata; - using stack_thread = basic_thread; - using stack_coroutine = basic_coroutine; - - struct stack_proxy_base; - struct stack_proxy; - struct variadic_args; - struct variadic_results; - struct stack_count; - struct this_state; - struct this_main_state; - struct this_environment; - - class state_view; - class state; - - template - struct as_table_t; - template - struct as_container_t; - template - struct nested; - template - struct light; - template - struct user; - template - struct as_args_t; - template - struct protect_t; - template - struct policy_wrapper; - - template - struct usertype_traits; - template - struct unique_usertype_traits; - - template - struct types { - typedef std::make_index_sequence indices; - static constexpr std::size_t size() { - return sizeof...(Args); - } - }; - - template - struct derive : std::false_type { - typedef types<> type; - }; - - template - struct base : std::false_type { - typedef types<> type; - }; - - template - struct weak_derive { - static bool value; - }; - - template - bool weak_derive::value = false; - - namespace stack { - struct record; - } - -#if SOL_IS_OFF(SOL_USE_BOOST) - template - class optional; - - template - class optional; -#endif - - using check_handler_type = int(lua_State*, int, type, type, const char*); - -} // namespace sol - -#define SOL_BASE_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct base : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() -#define SOL_DERIVED_CLASSES(T, ...) \ - namespace sol { \ - template <> \ - struct derive : std::true_type { \ - typedef ::sol::types<__VA_ARGS__> type; \ - }; \ - } \ - void a_sol3_detail_function_decl_please_no_collide() - -#endif // SOL_FORWARD_HPP -// end of sol/forward.hpp - -// beginning of sol/forward_detail.hpp - -#ifndef SOL_FORWARD_DETAIL_HPP -#define SOL_FORWARD_DETAIL_HPP - -// beginning of sol/traits.hpp - -// beginning of sol/tuple.hpp - -// beginning of sol/base_traits.hpp - -#include - -namespace sol { - namespace detail { - struct unchecked_t { }; - const unchecked_t unchecked = unchecked_t {}; - } // namespace detail - - namespace meta { - using sfinae_yes_t = std::true_type; - using sfinae_no_t = std::false_type; - - template - using void_t = void; - - template - using unqualified = std::remove_cv>; - - template - using unqualified_t = typename unqualified::type; - - namespace meta_detail { - template - struct unqualified_non_alias : unqualified { }; - - template