From 9432b68efef82a2257d8ee32aa4b559ce5f8d21c Mon Sep 17 00:00:00 2001 From: Alan Youngblood Date: Thu, 20 Jul 2023 12:31:37 -0400 Subject: [PATCH] added tileson still debugging --- .gitignore | 3 + .kdev4/BeagleRescue.kdev4 | 18 +- BeagleRescue | Bin 499312 -> 1685720 bytes CMakeCache.txt => CMakeCache.txt.bak | 0 .../BeagleRescue.dir/compiler_depend.internal | 4866 +++++++++ .../BeagleRescue.dir/compiler_depend.make | 1477 ++- CMakeFiles/BeagleRescue.dir/flags.make | 4 +- CMakeFiles/BeagleRescue.dir/link.txt | 2 +- CMakeFiles/CMakeOutput.log | 447 + CMakeFiles/Makefile.cmake | 80 + assets/maps/testmap | 44 + assets/maps/testmap.json | 48 + cmake_install.cmake | 2 +- cmake_install.cmake.bak | 70 + src/assetmgr/Map.cpp | 76 + src/assetmgr/Map.h | 33 + src/game/Game.cpp | 62 +- src/tileson/tileson.hpp | 8992 +++++++++++++++++ 18 files changed, 15930 insertions(+), 294 deletions(-) rename CMakeCache.txt => CMakeCache.txt.bak (100%) create mode 100644 CMakeFiles/BeagleRescue.dir/compiler_depend.internal create mode 100644 assets/maps/testmap create mode 100644 assets/maps/testmap.json create mode 100644 cmake_install.cmake.bak create mode 100644 src/assetmgr/Map.cpp create mode 100644 src/assetmgr/Map.h create mode 100644 src/tileson/tileson.hpp diff --git a/.gitignore b/.gitignore index cbab54a..b2845b4 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,6 @@ Module.symvers Mkfile.old dkms.conf +# CMake artifacts +CMakeCache.txt + diff --git a/.kdev4/BeagleRescue.kdev4 b/.kdev4/BeagleRescue.kdev4 index 0513562..a162aaf 100644 --- a/.kdev4/BeagleRescue.kdev4 +++ b/.kdev4/BeagleRescue.kdev4 @@ -2,8 +2,9 @@ BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x18\x00B\x00e\x00a\x00g\x00l\x00e\x00R\x00e\x00s\x00c\x00u\x00e) [CMake] -Build Directory Count=1 +Build Directory Count=2 Current Build Directory Index-Host System=0 +Temporary Build Directory Index=1 [CMake][CMake Build Directory 0] Build Directory Path=/home/ayoungblood/projects/BeagleRescue/build @@ -15,26 +16,35 @@ Extra Arguments= Install Directory=/usr/local Runtime=Host System +[CMake][CMake Build Directory 1] +Build Directory Path=/home/ayoungblood/Projects/BeagleRescue/build +Build Type=Release +CMake Binary=/usr/bin/cmake +CMake Executable=/usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory= + [Launch] Launch Configurations=Launch Configuration 0 [Launch][Launch Configuration 0] Configured Launch Modes=execute Configured Launchers=nativeAppLauncher -Name=New Compiled Binary Launcher +Name=BeagleRescue Type=Native Application [Launch][Launch Configuration 0][Data] Arguments= Dependencies=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x00) -Dependency Action=Build +Dependency Action=Nothing EnvironmentGroup= Executable=file:///home/ayoungblood/Projects/BeagleRescue External Terminal=konsole --noclose --workdir %workdir -e %exe Kill Before Executing Again=4194304 Project Target=BeagleRescue,BeagleRescue Use External Terminal=false -Working Directory= +Working Directory=file:///home/ayoungblood/projects/BeagleRescue isExecutable=true [Project] diff --git a/BeagleRescue b/BeagleRescue index 24fe24fe693e7d15eb189eea36ea187b1b22970b..bd3f43352a9d067081c5116330af7430eee43a04 100755 GIT binary patch literal 1685720 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 uL;N_O>z5(=ZPtd4HTV~Vl)qcy<^t%x%PH}t6k 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ʏ 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

|3kiL1X+JznqZqS8m(E|@e7XAV0{G&zGxYQL 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 R-}_a0$v-SED1N;4{{gyAnmGUf literal 499312 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�z~RlwNuU>lAC% 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ØHJMWW)U#D`8->SKo6BC-B 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%0Au1ciYI&` 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 pXUhNo!GDzT|C9f1AC search starts here: + /usr/lib/gcc/aarch64-linux-gnu/12/include + /usr/local/include + /usr/include/aarch64-linux-gnu + /usr/include +End of search list. +GNU C17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu) + compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP + +warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: f1bacec099212325d0da3c77e1f38897 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o' '-c' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_45bb4.dir/' + as -v -EL -mabi=lp64 -o CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o /tmp/ccowZo3a.s +GNU assembler version 2.40 (aarch64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 +COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o' '-c' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.' +Linking C executable cmTC_45bb4 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_45bb4.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o -o cmTC_45bb4 +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper +Target: aarch64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.2.0 (Debian 12.2.0-14) +COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_45bb4' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_45bb4.' + /usr/lib/gcc/aarch64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccUIaKOr.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -pie -o cmTC_45bb4 /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/aarch64-linux-gnu/12 -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/12/../../.. CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_45bb4' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_45bb4.' +gmake[2]: Leaving directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-JwHML6' +gmake[1]: Leaving directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-JwHML6' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/aarch64-linux-gnu/12/include] + add: [/usr/local/include] + add: [/usr/include/aarch64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/aarch64-linux-gnu/12/include] ==> [/usr/lib/gcc/aarch64-linux-gnu/12/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/aarch64-linux-gnu] ==> [/usr/include/aarch64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/aarch64-linux-gnu/12/include;/usr/local/include;/usr/include/aarch64-linux-gnu;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-JwHML6] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_45bb4/fast && gmake[1]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-JwHML6'] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_45bb4.dir/build.make CMakeFiles/cmTC_45bb4.dir/build] + ignore line: [gmake[2]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-JwHML6'] + ignore line: [Building C object CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [Target: aarch64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o' '-c' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_45bb4.dir/'] + ignore line: [ /usr/lib/gcc/aarch64-linux-gnu/12/cc1 -quiet -v -imultiarch aarch64-linux-gnu /usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_45bb4.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mlittle-endian -mabi=lp64 -version -fasynchronous-unwind-tables -o /tmp/ccowZo3a.s] + ignore line: [GNU C17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu)] + ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] + ignore line: [] + ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/local/include/aarch64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/../../../../aarch64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/aarch64-linux-gnu/12/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/aarch64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu)] + ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] + ignore line: [] + ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: f1bacec099212325d0da3c77e1f38897] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o' '-c' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_45bb4.dir/'] + ignore line: [ as -v -EL -mabi=lp64 -o CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o /tmp/ccowZo3a.s] + ignore line: [GNU assembler version 2.40 (aarch64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] + ignore line: [COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o' '-c' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_45bb4] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_45bb4.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o -o cmTC_45bb4 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper] + ignore line: [Target: aarch64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_45bb4' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_45bb4.'] + link line: [ /usr/lib/gcc/aarch64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccUIaKOr.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -pie -o cmTC_45bb4 /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/aarch64-linux-gnu/12 -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/12/../../.. CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccUIaKOr.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-linux-aarch64.so.1] ==> ignore + arg [-X] ==> ignore + arg [-EL] ==> ignore + arg [-maarch64linux] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_45bb4] ==> ignore + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] + arg [-L/lib/aarch64-linux-gnu] ==> dir [/lib/aarch64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/aarch64-linux-gnu] ==> dir [/usr/lib/aarch64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../..] + arg [CMakeFiles/cmTC_45bb4.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] ==> [/usr/lib/aarch64-linux-gnu/Scrt1.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] ==> [/usr/lib/aarch64-linux-gnu/crti.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] ==> [/usr/lib/aarch64-linux-gnu/crtn.o] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12] ==> [/usr/lib/gcc/aarch64-linux-gnu/12] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] ==> [/usr/lib/aarch64-linux-gnu] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/aarch64-linux-gnu] ==> [/lib/aarch64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/aarch64-linux-gnu] ==> [/usr/lib/aarch64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib/aarch64-linux-gnu/Scrt1.o;/usr/lib/aarch64-linux-gnu/crti.o;/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o;/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o;/usr/lib/aarch64-linux-gnu/crtn.o] + implicit dirs: [/usr/lib/gcc/aarch64-linux-gnu/12;/usr/lib/aarch64-linux-gnu;/usr/lib;/lib/aarch64-linux-gnu;/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu + +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_04127/fast && gmake[1]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu' +/usr/bin/gmake -f CMakeFiles/cmTC_04127.dir/build.make CMakeFiles/cmTC_04127.dir/build +gmake[2]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu' +Building CXX object CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +Target: aarch64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.2.0 (Debian 12.2.0-14) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/' + /usr/lib/gcc/aarch64-linux-gnu/12/cc1plus -quiet -v -imultiarch aarch64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_04127.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mlittle-endian -mabi=lp64 -version -fasynchronous-unwind-tables -o /tmp/ccAiYmN9.s +GNU C++17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu) + compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP + +warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/aarch64-linux-gnu/c++/12" +ignoring nonexistent directory "/usr/local/include/aarch64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/../../../../aarch64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/12 + /usr/include/aarch64-linux-gnu/c++/12 + /usr/include/c++/12/backward + /usr/lib/gcc/aarch64-linux-gnu/12/include + /usr/local/include + /usr/include/aarch64-linux-gnu + /usr/include +End of search list. +GNU C++17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu) + compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP + +warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 76d6f14273b9515783c50374b109b352 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/' + as -v -EL -mabi=lp64 -o CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccAiYmN9.s +GNU assembler version 2.40 (aarch64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 +COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.' +Linking CXX executable cmTC_04127 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_04127.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_04127 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper +Target: aarch64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 12.2.0 (Debian 12.2.0-14) +COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_04127' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_04127.' + /usr/lib/gcc/aarch64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccqmSTl1.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -pie -o cmTC_04127 /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/aarch64-linux-gnu/12 -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/12/../../.. CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_04127' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_04127.' +gmake[2]: Leaving directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu' +gmake[1]: Leaving directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/12] + add: [/usr/include/aarch64-linux-gnu/c++/12] + add: [/usr/include/c++/12/backward] + add: [/usr/lib/gcc/aarch64-linux-gnu/12/include] + add: [/usr/local/include] + add: [/usr/include/aarch64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/12] ==> [/usr/include/c++/12] + collapse include dir [/usr/include/aarch64-linux-gnu/c++/12] ==> [/usr/include/aarch64-linux-gnu/c++/12] + collapse include dir [/usr/include/c++/12/backward] ==> [/usr/include/c++/12/backward] + collapse include dir [/usr/lib/gcc/aarch64-linux-gnu/12/include] ==> [/usr/lib/gcc/aarch64-linux-gnu/12/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/aarch64-linux-gnu] ==> [/usr/include/aarch64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/12;/usr/include/aarch64-linux-gnu/c++/12;/usr/include/c++/12/backward;/usr/lib/gcc/aarch64-linux-gnu/12/include;/usr/local/include;/usr/include/aarch64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_04127/fast && gmake[1]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu'] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_04127.dir/build.make CMakeFiles/cmTC_04127.dir/build] + ignore line: [gmake[2]: Entering directory '/home/ayoungblood/Projects/BeagleRescue/CMakeFiles/CMakeScratch/TryCompile-RjaERu'] + ignore line: [Building CXX object CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [Target: aarch64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/'] + ignore line: [ /usr/lib/gcc/aarch64-linux-gnu/12/cc1plus -quiet -v -imultiarch aarch64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_04127.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mlittle-endian -mabi=lp64 -version -fasynchronous-unwind-tables -o /tmp/ccAiYmN9.s] + ignore line: [GNU C++17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu)] + ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] + ignore line: [] + ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/aarch64-linux-gnu/c++/12"] + ignore line: [ignoring nonexistent directory "/usr/local/include/aarch64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/aarch64-linux-gnu/12/../../../../aarch64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/12] + ignore line: [ /usr/include/aarch64-linux-gnu/c++/12] + ignore line: [ /usr/include/c++/12/backward] + ignore line: [ /usr/lib/gcc/aarch64-linux-gnu/12/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/aarch64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++17 (Debian 12.2.0-14) version 12.2.0 (aarch64-linux-gnu)] + ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] + ignore line: [] + ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 76d6f14273b9515783c50374b109b352] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/'] + ignore line: [ as -v -EL -mabi=lp64 -o CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccAiYmN9.s] + ignore line: [GNU assembler version 2.40 (aarch64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] + ignore line: [COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_04127] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_04127.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_04127 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper] + ignore line: [Target: aarch64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/12/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/12/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_04127' '-shared-libgcc' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'cmTC_04127.'] + link line: [ /usr/lib/gcc/aarch64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccqmSTl1.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -pie -o cmTC_04127 /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/aarch64-linux-gnu/12 -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/12/../../.. CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o /usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/aarch64-linux-gnu/12/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccqmSTl1.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-linux-aarch64.so.1] ==> ignore + arg [-X] ==> ignore + arg [-EL] ==> ignore + arg [-maarch64linux] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_04127] ==> ignore + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] + arg [-L/lib/aarch64-linux-gnu] ==> dir [/lib/aarch64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/aarch64-linux-gnu] ==> dir [/usr/lib/aarch64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/aarch64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../..] + arg [CMakeFiles/cmTC_04127.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o] + arg [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/Scrt1.o] ==> [/usr/lib/aarch64-linux-gnu/Scrt1.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crti.o] ==> [/usr/lib/aarch64-linux-gnu/crti.o] + collapse obj [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu/crtn.o] ==> [/usr/lib/aarch64-linux-gnu/crtn.o] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12] ==> [/usr/lib/gcc/aarch64-linux-gnu/12] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../aarch64-linux-gnu] ==> [/usr/lib/aarch64-linux-gnu] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/aarch64-linux-gnu] ==> [/lib/aarch64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/aarch64-linux-gnu] ==> [/usr/lib/aarch64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/aarch64-linux-gnu/12/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit objs: [/usr/lib/aarch64-linux-gnu/Scrt1.o;/usr/lib/aarch64-linux-gnu/crti.o;/usr/lib/gcc/aarch64-linux-gnu/12/crtbeginS.o;/usr/lib/gcc/aarch64-linux-gnu/12/crtendS.o;/usr/lib/aarch64-linux-gnu/crtn.o] + implicit dirs: [/usr/lib/gcc/aarch64-linux-gnu/12;/usr/lib/aarch64-linux-gnu;/usr/lib;/lib/aarch64-linux-gnu;/lib] + implicit fwks: [] + + diff --git a/CMakeFiles/Makefile.cmake b/CMakeFiles/Makefile.cmake index 5bc66e9..ad26386 100644 --- a/CMakeFiles/Makefile.cmake +++ b/CMakeFiles/Makefile.cmake @@ -11,22 +11,97 @@ set(CMAKE_MAKEFILE_DEPENDS "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" "CMakeFiles/3.25.1/CMakeSystem.cmake" "CMakeLists.txt" + "/usr/share/cmake-3.25/Modules/CMakeCCompiler.cmake.in" + "/usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c" "/usr/share/cmake-3.25/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.25/Modules/CMakeCXXCompiler.cmake.in" + "/usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp" "/usr/share/cmake-3.25/Modules/CMakeCXXInformation.cmake" "/usr/share/cmake-3.25/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.25/Modules/CMakeCompilerIdDetection.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake" + "/usr/share/cmake-3.25/Modules/CMakeDetermineSystem.cmake" + "/usr/share/cmake-3.25/Modules/CMakeFindBinUtils.cmake" "/usr/share/cmake-3.25/Modules/CMakeGenericSystem.cmake" "/usr/share/cmake-3.25/Modules/CMakeInitializeConfigs.cmake" "/usr/share/cmake-3.25/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.25/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/share/cmake-3.25/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/share/cmake-3.25/Modules/CMakeParseLibraryArchitecture.cmake" + "/usr/share/cmake-3.25/Modules/CMakeSystem.cmake.in" "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInformation.cmake" "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake" + "/usr/share/cmake-3.25/Modules/CMakeTestCXXCompiler.cmake" + "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" + "/usr/share/cmake-3.25/Modules/CMakeUnixFindMake.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/GNU-C-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/GNU-FindBinUtils.cmake" "/usr/share/cmake-3.25/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Tasking-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.25/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" "/usr/share/cmake-3.25/Modules/FetchContent.cmake" "/usr/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake" "/usr/share/cmake-3.25/Modules/FindPackageMessage.cmake" "/usr/share/cmake-3.25/Modules/FindPkgConfig.cmake" + "/usr/share/cmake-3.25/Modules/Internal/FeatureTesting.cmake" + "/usr/share/cmake-3.25/Modules/Platform/Linux-Determine-CXX.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-C.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-CXX.cmake" "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU.cmake" @@ -42,6 +117,11 @@ set(CMAKE_MAKEFILE_OUTPUTS # Byproducts of CMake generate step: set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.25.1/CMakeSystem.cmake" + "CMakeFiles/3.25.1/CMakeCCompiler.cmake" + "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" + "CMakeFiles/3.25.1/CMakeCCompiler.cmake" + "CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" "CMakeFiles/CMakeDirectoryInformation.cmake" ) diff --git a/assets/maps/testmap b/assets/maps/testmap new file mode 100644 index 0000000..8052737 --- /dev/null +++ b/assets/maps/testmap @@ -0,0 +1,44 @@ +{ "compressionlevel":-1, + "height":42, + "infinite":false, + "layers":[ + { + "data":[11, 12, 13, 35, 35, 35, 36, 36, 36, 35, 36, 35, 35, 9, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 35, 36, 36, 35, 35, 35, 35, 10, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 37, 35, 35, 35, 35, 41, 42, 43, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 35, 35, 35, 38, 38, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 35, 35, 38, 38, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 35, 38, 38, 35, 35, 37, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 38, 38, 35, 35, 35, 37, 37, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 38, 38, 35, 35, 35, 37, 37, 37, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 38, 38, 35, 35, 35, 35, 35, 35, 37, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 45, 46, 34, 34, 34, 45, 46, 44, 45, 46, 44, 45, 46, 44, 45, 46, 44, 45, 46, 44, 45, 44, 45, 44, 45, 46, 45, 44, 44, 44, 44, 44, 44, 44, 44, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 41, 42, 43, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 44, 45, 46, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 44, 45, 46, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 11, 12, 13, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 11, 12, 13, 40, 40, 40, 40, 40, 14, 15, 16, 40, 40, 40, 40, 40, 40, 14, 15, 16, 14, 15, 16, 17, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 17, 18, 19, 40, 40, 40, 40, 40, 14, 15, 16, 40, 40, 40, 40, 40, 40, 14, 15, 16, 20, 21, 22, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 11, 12, 13], + "height":42, + "id":1, + "name":"TileMap", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":42, + "x":0, + "y":0 + }, + { + "data":[2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], + "height":42, + "id":3, + "name":"Collision", + "opacity":1, + "type":"tilelayer", + "visible":false, + "width":42, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":1, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.8.2", + "tileheight":16, + "tilesets":[ + { + "firstgid":1, + "source":"br-tiles.tsx" + }], + "tilewidth":16, + "type":"map", + "version":"1.8", + "width":42 +} \ No newline at end of file diff --git a/assets/maps/testmap.json b/assets/maps/testmap.json new file mode 100644 index 0000000..fa7b2b2 --- /dev/null +++ b/assets/maps/testmap.json @@ -0,0 +1,48 @@ +{ "compressionlevel":-1, + "height":42, + "infinite":false, + "layers":[ + { + "compression":"", + "data":"KAAAACgAAAANAAAALAAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAACwAAACgAAAAoAAAAKAAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAoAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAALAAAAC0AAAAuAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACwAAAAtAAAALgAAACMAAAAjAAAAIwAAACMAAAAjAAAALAAAAC0AAAAuAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAAjAAAALAAAAC0AAAAuAAAADgAAAA8AAAAQAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACYAAAAmAAAAJgAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAuAAAALAAAAC0AAAAuAAAALAAAACwAAAAsAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACwAAAAtAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAALAAAAC0AAAAuAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAALAAAAC0AAAAuAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACwAAAAtAAAALgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAALAAAAC0AAAAuAAAALgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAuAAAAJgAAACYAAAAsAAAADgAAAA8AAAAQAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAAC4AAAAuAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALAAAACwAAAAiAAAAIgAAACIAAAAiAAAALQAAAC4AAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAAC4AAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAuAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAsAAAALQAAAC4AAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACwAAAAsAAAALQAAAC4AAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAIgAAACIAAAAsAAAALAAAACwAAAAsAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAuAAAALAAAACwAAAAsAAAALAAAACwAAAAtAAAALgAAACIAAAAiAAAAIgAAACIAAAAiAAAADgAAAA8AAAAQAAAALAAAAC0AAAAuAAAALgAAAC4AAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALQAAAC4AAAAiAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAALAAAAC0AAAAuAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAsAAAALQAAAC4AAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAALAAAAC0AAAAuAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACwAAAAtAAAALgAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACwAAAAtAAAALgAAAC4AAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAADgAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAQAAAAKAAAAA8AAAAQAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAADgAAAA8AAAAoAAAAKAAAACgAAAAWAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALQAAAC4AAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAuAAAAFAAAACgAAAAoAAAA", + "encoding":"base64", + "height":42, + "id":1, + "name":"Tile Layer 1", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":42, + "x":0, + "y":0 + }, + { + "compression":"", + "data":"AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA", + "encoding":"base64", + "height":42, + "id":2, + "name":"Collision", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":42, + "x":0, + "y":0 + }], + "nextlayerid":3, + "nextobjectid":1, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.8.2", + "tileheight":16, + "tilesets":[ + { + "firstgid":1, + "source":"br-tiles.tsx" + }], + "tilewidth":16, + "type":"map", + "version":"1.8", + "width":42 +} \ No newline at end of file diff --git a/cmake_install.cmake b/cmake_install.cmake index 583f493..5897c56 100644 --- a/cmake_install.cmake +++ b/cmake_install.cmake @@ -12,7 +12,7 @@ if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") else() - set(CMAKE_INSTALL_CONFIG_NAME "Release") + set(CMAKE_INSTALL_CONFIG_NAME "") endif() message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") endif() diff --git a/cmake_install.cmake.bak b/cmake_install.cmake.bak new file mode 100644 index 0000000..583f493 --- /dev/null +++ b/cmake_install.cmake.bak @@ -0,0 +1,70 @@ +# Install script for directory: /home/ayoungblood/Projects/BeagleRescue + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "/home/ayoungblood/Projects/BeagleRescue/BeagleRescue") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/BeagleRescue") + endif() + endif() +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/ayoungblood/Projects/BeagleRescue/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/src/assetmgr/Map.cpp b/src/assetmgr/Map.cpp new file mode 100644 index 0000000..a3e1c44 --- /dev/null +++ b/src/assetmgr/Map.cpp @@ -0,0 +1,76 @@ +/* + * Map.cpp + * + * Created on: Feb 13, 2020 + * Author: ayoungblood + */ + +#include "Map.h" +#include "../game/Game.hpp" +#include +#include "../ecs/ECS.h" +#include "../ecs/Components.h" +#include +#include + +extern Manager manager; + +Map::Map(std::string tID, int ms, int ts) : texID(tID), mapScale(ms), tileSize(ts) +{ + scaledSize = ms* ts; + width = 0; + height = 0; + tSize = ts; +} + +Map::~Map() +{ +} + +void Map::LoadMap(std::string path, int sizeX, int sizeY, int scale) +{ + char c; + std::fstream mapFile; + mapFile.open(path); + int srcX, srcY; + + width = tSize*scale*sizeX; + height = tSize*scale*sizeY; + + for (int y = 0; y < sizeY; y++) + { + for (int x = 0; x < sizeX; x++) + { + mapFile.get(c); + srcY = atoi(&c) * tileSize; + mapFile.get(c); + srcX = atoi(&c) * tileSize; + mapFile.ignore(2,','); + } + } + + mapFile.ignore(); +// colliders + for (int y =0; y < sizeY; y++) + { + for (int x = 0; x < sizeX; x++) + { + mapFile.get(c); + if (c == '1') + { + auto& tcol(manager.addEntity()); + tcol.addComponent("terrain",x*scaledSize,y*scaledSize,tileSize,scale,texID); + tcol.addGroup(Game::groupColliders); + } + mapFile.ignore(2,','); + } + } + mapFile.close(); +} + +void Map::AddTile(int srcX, int srcY, int xpos, int ypos) +{ + auto& tile(manager.addEntity()); + tile.addComponent(srcX,srcY,xpos,ypos,tileSize, mapScale, texID); + tile.addGroup(Game::groupMap); +} diff --git a/src/assetmgr/Map.h b/src/assetmgr/Map.h new file mode 100644 index 0000000..7498e22 --- /dev/null +++ b/src/assetmgr/Map.h @@ -0,0 +1,33 @@ +/* + * Map.h + * + * Created on: Feb 13, 2020 + * Author: ayoungblood + */ + +#ifndef SRC_MAP_H_ +#define SRC_MAP_H_ + +#include + +class Map +{ +public: + Map(std::string tID, int ms, int ts); + ~Map(); + + void LoadMap(std::string path, int sizeX, int sizeY, int scale); + void AddTile(int srcX, int srcY, int xpos, int ypos); + + int width; + int height; + int tSize; + +private: + std::string texID; + int mapScale; + int tileSize; + int scaledSize; +}; + +#endif /* SRC_MAP_H_ */ diff --git a/src/game/Game.cpp b/src/game/Game.cpp index e88b49e..04bbd74 100644 --- a/src/game/Game.cpp +++ b/src/game/Game.cpp @@ -76,12 +76,11 @@ int last_time; int current_time; int diff_time; +//tson::Tileson t; + int Game::pTileX = 0; int Game::pTileY = 0; -tson::Tileson t; -std::unique_ptr map = t.parse(std::filesystem::path("../../assets/maps/testmap.json")); - std::string Game::BoolToString(bool b) { std::string myString; if (b) { @@ -247,30 +246,35 @@ void Game::init(const char *title, int width, int height, bool fullscreen, int g // --------------------------------------- // Tileson tryout - printf("Trying out Tileson, does it work?"); - if(map->getStatus() == tson::ParseStatus::OK) - { - printf("Tileson successfully parsed the tilemap"); - //Gets the layer called "Object Layer" from the "ultimate_demo.json map - tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer - - //Example from a Tile Layer - //I know for a fact that this is a Tile Layer, but you can check it this way to be sure. - if(tileLayer->getType() == tson::LayerType::TileLayer) - { - //pos = position in tile units - printf("Tileson found layer of tiles"); - /*for(auto &[pos, tileObject] : tileLayer->getTileObjects()) //Loops through absolutely all existing tileObjects - { - tson::Tileset *tileset = tileObject.getTile()->getTileset(); - tson::Rect drawingRect = tileObject.getDrawingRect(); - tson::Vector2f position = tileObject.getPosition(); - }*/ - } - - } else { - printf("Failed to load Tileson map"); - } + // printf("Trying out Tileson, does it work?"); + // + // + // //std::unique_ptr map = t.parse(std::filesystem::path("../../assets/maps/testmap.json")); + // std::unique_ptr map = t.parse(tson_files::_ULTIMATE_TEST_JSON, tson_files::_ULTIMATE_TEST_JSON_SIZE); + // + // if(map->getStatus() == tson::ParseStatus::OK) + // { + // printf("Tileson successfully parsed the tilemap"); + // //Gets the layer called "Object Layer" from the "ultimate_demo.json map + // //tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer + // + // //Example from a Tile Layer + // //I know for a fact that this is a Tile Layer, but you can check it this way to be sure. + // // if(tileLayer->getType() == tson::LayerType::TileLayer) + // // { + // // //pos = position in tile units + // // printf("Tileson found layer of tiles"); + // // /*for(auto &[pos, tileObject] : tileLayer->getTileObjects()) //Loops through absolutely all existing tileObjects + // // { + // // tson::Tileset *tileset = tileObject.getTile()->getTileset(); + // // tson::Rect drawingRect = tileObject.getDrawingRect(); + // // tson::Vector2f position = tileObject.getPosition(); + // // }*/ + // // } + // + // } else { + // printf("Failed to load Tileson map"); + // } playerPosition = Vector2D().Zero(); pVel = Vector2D().Zero(); @@ -326,8 +330,8 @@ void Game::update() if (Mix_PlayingMusic() == 0 && gsm->currentState == GameStateManager::ST_COREGAME) { - std::cout << "Play Music Now" << std::endl; - Mix_PlayMusic(assets->GetMusicTrack("simonZ"), -1); +// std::cout << "Play Music Now" << std::endl; +// Mix_PlayMusic(assets->GetMusicTrack("simonZ"), -1); } if (Mix_PlayingMusic() != 0 && gsm->currentState != GameStateManager::ST_COREGAME) { diff --git a/src/tileson/tileson.hpp b/src/tileson/tileson.hpp new file mode 100644 index 0000000..9e26d2a --- /dev/null +++ b/src/tileson/tileson.hpp @@ -0,0 +1,8992 @@ +/// +/// T I L E S O N V E R S I O N 1 . 4 . 0 +/// ------------------------------------------------ +/// BSD 2-Clause License +/// +/// Copyright (c) 2022, Robin Berg Pettersen +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// +/// 1. Redistributions of source code must retain the above copyright notice, this +/// list of conditions and the following disclaimer. +/// +/// 2. Redistributions in binary form must reproduce the above copyright notice, +/// this list of conditions and the following disclaimer in the documentation +/// and/or other materials provided with the distribution. +/// +/// 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. + +#ifndef TILESON_TILESON_H +#define TILESON_TILESON_H + + +/*** Start of inlined file: json11.hpp ***/ +/*** Start of inlined file: json11.cpp ***/ + +/*** Start of inlined file: json11.hpp ***/ +/* Copyright (c) 2013 Dropbox, Inc. + * + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#define JSON11_IS_DEFINED + +#ifdef _MSC_VER +#if _MSC_VER <= 1800 // VS 2013 + #ifndef noexcept + #define noexcept throw() + #endif + + #ifndef snprintf + #define snprintf _snprintf_s + #endif + #endif +#endif + +namespace json11 { + + enum JsonParse { + STANDARD, COMMENTS + }; + + class JsonValue; + + class Json final { + public: + // Types + enum Type { + NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT + }; + + // Array and object typedefs + typedef std::vector array; + typedef std::map object; + + // Constructors for the various types of JSON value. + inline Json() noexcept; // NUL + inline Json(std::nullptr_t) noexcept; // NUL + inline Json(double value); // NUMBER + inline Json(int value); // NUMBER + inline Json(bool value); // BOOL + inline Json(const std::string &value); // STRING + inline Json(std::string &&value); // STRING + inline Json(const char * value); // STRING + inline Json(const array &values); // ARRAY + inline Json(array &&values); // ARRAY + inline Json(const object &values); // OBJECT + inline Json(object &&values); // OBJECT + + // Implicit constructor: anything with a to_json() function. + template + inline Json(const T & t) : Json(t.to_json()) {} + + // Implicit constructor: map-like objects (std::map, std::unordered_map, etc) + template ().begin()->first)>::value + && std::is_constructible().begin()->second)>::value, + int>::type = 0> + inline Json(const M & m) : Json(object(m.begin(), m.end())) {} + + // Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc) + template ().begin())>::value, + int>::type = 0> + inline Json(const V & v) : Json(array(v.begin(), v.end())) {} + + // This prevents Json(some_pointer) from accidentally producing a bool. Use + // Json(bool(some_pointer)) if that behavior is desired. + Json(void *) = delete; + + // Accessors + inline Type type() const; + + inline bool is_null() const { return type() == NUL; } + inline bool is_number() const { return type() == NUMBER; } + inline bool is_bool() const { return type() == BOOL; } + inline bool is_string() const { return type() == STRING; } + inline bool is_array() const { return type() == ARRAY; } + inline bool is_object() const { return type() == OBJECT; } + + // Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not + // distinguish between integer and non-integer numbers - number_value() and int_value() + // can both be applied to a NUMBER-typed object. + inline double number_value() const; + inline int int_value() const; + + // Return the enclosed value if this is a boolean, false otherwise. + inline bool bool_value() const; + // Return the enclosed string if this is a string, "" otherwise. + inline const std::string &string_value() const; + // Return the enclosed std::vector if this is an array, or an empty vector otherwise. + inline const array &array_items() const; + // Return the enclosed std::map if this is an object, or an empty map otherwise. + inline const object &object_items() const; + + // Return a reference to arr[i] if this is an array, Json() otherwise. + inline const Json & operator[](size_t i) const; + // Return a reference to obj[key] if this is an object, Json() otherwise. + inline const Json & operator[](const std::string &key) const; + + // Serialize. + inline void dump(std::string &out) const; + inline std::string dump() const { + std::string out; + dump(out); + return out; + } + + // Parse. If parse fails, return Json() and assign an error message to err. + static inline Json parse(const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + static inline Json parse(const char * in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + if (in) { + return parse(std::string(in), err, strategy); + } else { + err = "null input"; + return nullptr; + } + } + // Parse multiple objects, concatenated or separated by whitespace + static inline std::vector parse_multi( + const std::string & in, + std::string::size_type & parser_stop_pos, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + + static inline std::vector parse_multi( + const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + std::string::size_type parser_stop_pos; + return parse_multi(in, parser_stop_pos, err, strategy); + } + + inline bool operator== (const Json &rhs) const; + inline bool operator< (const Json &rhs) const; + inline bool operator!= (const Json &rhs) const { return !(*this == rhs); } + inline bool operator<= (const Json &rhs) const { return !(rhs < *this); } + inline bool operator> (const Json &rhs) const { return (rhs < *this); } + inline bool operator>= (const Json &rhs) const { return !(*this < rhs); } + + /* has_shape(types, err) + * + * Return true if this is a JSON object and, for each item in types, has a field of + * the given type. If not, return false and set err to a descriptive message. + */ + typedef std::initializer_list> shape; + inline bool has_shape(const shape & types, std::string & err) const; + + private: + std::shared_ptr m_ptr; + }; + +// Internal class hierarchy - JsonValue objects are not exposed to users of this API. + class JsonValue { + protected: + friend class Json; + friend class JsonInt; + friend class JsonDouble; + virtual Json::Type type() const = 0; + virtual bool equals(const JsonValue * other) const = 0; + virtual bool less(const JsonValue * other) const = 0; + virtual void dump(std::string &out) const = 0; + virtual double number_value() const; + virtual int int_value() const; + virtual bool bool_value() const; + virtual const std::string &string_value() const; + virtual const Json::array &array_items() const; + virtual const Json &operator[](size_t i) const; + virtual const Json::object &object_items() const; + virtual const Json &operator[](const std::string &key) const; + virtual ~JsonValue() {} + }; + +} // namespace json11 + +/*** End of inlined file: json11.hpp ***/ + +#include +#include +#include +#include +#include + +namespace json11 { + + static const int max_depth = 200; + + using std::string; + using std::vector; + using std::map; + using std::make_shared; + using std::initializer_list; + using std::move; + +/* Helper for representing null - just a do-nothing struct, plus comparison + * operators so the helpers in JsonValue work. We can't use nullptr_t because + * it may not be orderable. + */ + struct NullStruct { + bool operator==(NullStruct) const { return true; } + bool operator<(NullStruct) const { return false; } + }; + +/* * * * * * * * * * * * * * * * * * * * + * Serialization + */ + + static void dump(NullStruct, string &out) { + out += "null"; + } + + static void dump(double value, string &out) { + if (std::isfinite(value)) { + char buf[32]; + snprintf(buf, sizeof buf, "%.17g", value); + out += buf; + } else { + out += "null"; + } + } + + static void dump(int value, string &out) { + char buf[32]; + snprintf(buf, sizeof buf, "%d", value); + out += buf; + } + + static void dump(bool value, string &out) { + out += value ? "true" : "false"; + } + + static void dump(const string &value, string &out) { + out += '"'; + for (size_t i = 0; i < value.length(); i++) { + const char ch = value[i]; + if (ch == '\\') { + out += "\\\\"; + } else if (ch == '"') { + out += "\\\""; + } else if (ch == '\b') { + out += "\\b"; + } else if (ch == '\f') { + out += "\\f"; + } else if (ch == '\n') { + out += "\\n"; + } else if (ch == '\r') { + out += "\\r"; + } else if (ch == '\t') { + out += "\\t"; + } else if (static_cast(ch) <= 0x1f) { + char buf[8]; + snprintf(buf, sizeof buf, "\\u%04x", ch); + out += buf; + } else if (static_cast(ch) == 0xe2 && static_cast(value[i+1]) == 0x80 + && static_cast(value[i+2]) == 0xa8) { + out += "\\u2028"; + i += 2; + } else if (static_cast(ch) == 0xe2 && static_cast(value[i+1]) == 0x80 + && static_cast(value[i+2]) == 0xa9) { + out += "\\u2029"; + i += 2; + } else { + out += ch; + } + } + out += '"'; + } + + static void dump(const Json::array &values, string &out) { + bool first = true; + out += "["; + for (const auto &value : values) { + if (!first) + out += ", "; + value.dump(out); + first = false; + } + out += "]"; + } + + static void dump(const Json::object &values, string &out) { + bool first = true; + out += "{"; + for (const auto &kv : values) { + if (!first) + out += ", "; + dump(kv.first, out); + out += ": "; + kv.second.dump(out); + first = false; + } + out += "}"; + } + + void Json::dump(string &out) const { + m_ptr->dump(out); + } + +/* * * * * * * * * * * * * * * * * * * * + * Value wrappers + */ + + template + class Value : public JsonValue { + protected: + + // Constructors + explicit Value(const T &value) : m_value(value) {} + explicit Value(T &&value) : m_value(move(value)) {} + + // Get type tag + Json::Type type() const override { + return tag; + } + + // Comparisons + bool equals(const JsonValue * other) const override { + return m_value == static_cast *>(other)->m_value; + } + bool less(const JsonValue * other) const override { + return m_value < static_cast *>(other)->m_value; + } + + const T m_value; + void dump(string &out) const override { json11::dump(m_value, out); } + }; + + class JsonDouble final : public Value { + double number_value() const override { return m_value; } + int int_value() const override { return static_cast(m_value); } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } + public: + explicit JsonDouble(double value) : Value(value) {} + }; + + class JsonInt final : public Value { + double number_value() const override { return m_value; } + int int_value() const override { return m_value; } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } + public: + explicit JsonInt(int value) : Value(value) {} + }; + + class JsonBoolean final : public Value { + bool bool_value() const override { return m_value; } + public: + explicit JsonBoolean(bool value) : Value(value) {} + }; + + class JsonString final : public Value { + const string &string_value() const override { return m_value; } + public: + explicit JsonString(const string &value) : Value(value) {} + explicit JsonString(string &&value) : Value(move(value)) {} + }; + + class JsonArray final : public Value { + const Json::array &array_items() const override { return m_value; } + const Json & operator[](size_t i) const override; + public: + explicit JsonArray(const Json::array &value) : Value(value) {} + explicit JsonArray(Json::array &&value) : Value(move(value)) {} + }; + + class JsonObject final : public Value { + const Json::object &object_items() const override { return m_value; } + const Json & operator[](const string &key) const override; + public: + explicit JsonObject(const Json::object &value) : Value(value) {} + explicit JsonObject(Json::object &&value) : Value(move(value)) {} + }; + + class JsonNull final : public Value { + public: + JsonNull() : Value({}) {} + }; + +/* * * * * * * * * * * * * * * * * * * * + * Static globals - static-init-safe + */ + struct Statics { + const std::shared_ptr null = make_shared(); + const std::shared_ptr t = make_shared(true); + const std::shared_ptr f = make_shared(false); + const string empty_string; + const vector empty_vector; + const map empty_map; + Statics() {} + }; + + static const Statics & statics() { + static const Statics s {}; + return s; + } + + static const Json & static_null() { + // This has to be separate, not in Statics, because Json() accesses statics().null. + static const Json json_null; + return json_null; + } + +/* * * * * * * * * * * * * * * * * * * * + * Constructors + */ + + Json::Json() noexcept : m_ptr(statics().null) {} + Json::Json(std::nullptr_t) noexcept : m_ptr(statics().null) {} + Json::Json(double value) : m_ptr(make_shared(value)) {} + Json::Json(int value) : m_ptr(make_shared(value)) {} + Json::Json(bool value) : m_ptr(value ? statics().t : statics().f) {} + Json::Json(const string &value) : m_ptr(make_shared(value)) {} + Json::Json(string &&value) : m_ptr(make_shared(move(value))) {} + Json::Json(const char * value) : m_ptr(make_shared(value)) {} + Json::Json(const Json::array &values) : m_ptr(make_shared(values)) {} + Json::Json(Json::array &&values) : m_ptr(make_shared(move(values))) {} + Json::Json(const Json::object &values) : m_ptr(make_shared(values)) {} + Json::Json(Json::object &&values) : m_ptr(make_shared(move(values))) {} + +/* * * * * * * * * * * * * * * * * * * * + * Accessors + */ + + inline Json::Type Json::type() const { return m_ptr->type(); } + inline double Json::number_value() const { return m_ptr->number_value(); } + inline int Json::int_value() const { return m_ptr->int_value(); } + inline bool Json::bool_value() const { return m_ptr->bool_value(); } + inline const string & Json::string_value() const { return m_ptr->string_value(); } + inline const vector & Json::array_items() const { return m_ptr->array_items(); } + inline const map & Json::object_items() const { return m_ptr->object_items(); } + inline const Json & Json::operator[] (size_t i) const { return (*m_ptr)[i]; } + inline const Json & Json::operator[] (const string &key) const { return (*m_ptr)[key]; } + + inline double JsonValue::number_value() const { return 0; } + inline int JsonValue::int_value() const { return 0; } + inline bool JsonValue::bool_value() const { return false; } + inline const string & JsonValue::string_value() const { return statics().empty_string; } + inline const vector & JsonValue::array_items() const { return statics().empty_vector; } + inline const map & JsonValue::object_items() const { return statics().empty_map; } + inline const Json & JsonValue::operator[] (size_t) const { return static_null(); } + inline const Json & JsonValue::operator[] (const string &) const { return static_null(); } + + inline const Json & JsonObject::operator[] (const string &key) const { + auto iter = m_value.find(key); + return (iter == m_value.end()) ? static_null() : iter->second; + } + inline const Json & JsonArray::operator[] (size_t i) const { + if (i >= m_value.size()) return static_null(); + else return m_value[i]; + } + +/* * * * * * * * * * * * * * * * * * * * + * Comparison + */ + + bool Json::operator== (const Json &other) const { + if (m_ptr == other.m_ptr) + return true; + if (m_ptr->type() != other.m_ptr->type()) + return false; + + return m_ptr->equals(other.m_ptr.get()); + } + + bool Json::operator< (const Json &other) const { + if (m_ptr == other.m_ptr) + return false; + if (m_ptr->type() != other.m_ptr->type()) + return m_ptr->type() < other.m_ptr->type(); + + return m_ptr->less(other.m_ptr.get()); + } + +/* * * * * * * * * * * * * * * * * * * * + * Parsing + */ + +/* esc(c) + * + * Format char c suitable for printing in an error message. + */ + static inline string esc(char c) { + char buf[12]; + if (static_cast(c) >= 0x20 && static_cast(c) <= 0x7f) { + snprintf(buf, sizeof buf, "'%c' (%d)", c, c); + } else { + snprintf(buf, sizeof buf, "(%d)", c); + } + return string(buf); + } + + static inline bool in_range(long x, long lower, long upper) { + return (x >= lower && x <= upper); + } + + namespace { +/* JsonParser + * + * Object that tracks all state of an in-progress parse. + */ + struct JsonParser final { + + /* State + */ + const string &str; + size_t i; + string &err; + bool failed; + const JsonParse strategy; + + /* fail(msg, err_ret = Json()) + * + * Mark this parse as failed. + */ + Json fail(string &&msg) { + return fail(move(msg), Json()); + } + + template + T fail(string &&msg, const T err_ret) { + if (!failed) + err = std::move(msg); + failed = true; + return err_ret; + } + + /* consume_whitespace() + * + * Advance until the current character is non-whitespace. + */ + void consume_whitespace() { + while (str[i] == ' ' || str[i] == '\r' || str[i] == '\n' || str[i] == '\t') + i++; + } + + /* consume_comment() + * + * Advance comments (c-style inline and multiline). + */ + bool consume_comment() { + bool comment_found = false; + if (str[i] == '/') { + i++; + if (i == str.size()) + return fail("unexpected end of input after start of comment", false); + if (str[i] == '/') { // inline comment + i++; + // advance until next line, or end of input + while (i < str.size() && str[i] != '\n') { + i++; + } + comment_found = true; + } + else if (str[i] == '*') { // multiline comment + i++; + if (i > str.size()-2) + return fail("unexpected end of input inside multi-line comment", false); + // advance until closing tokens + while (!(str[i] == '*' && str[i+1] == '/')) { + i++; + if (i > str.size()-2) + return fail( + "unexpected end of input inside multi-line comment", false); + } + i += 2; + comment_found = true; + } + else + return fail("malformed comment", false); + } + return comment_found; + } + + /* consume_garbage() + * + * Advance until the current character is non-whitespace and non-comment. + */ + void consume_garbage() { + consume_whitespace(); + if(strategy == JsonParse::COMMENTS) { + bool comment_found = false; + do { + comment_found = consume_comment(); + if (failed) return; + consume_whitespace(); + } + while(comment_found); + } + } + + /* get_next_token() + * + * Return the next non-whitespace character. If the end of the input is reached, + * flag an error and return 0. + */ + char get_next_token() { + consume_garbage(); + if (failed) return static_cast(0); + if (i == str.size()) + return fail("unexpected end of input", static_cast(0)); + + return str[i++]; + } + + /* encode_utf8(pt, out) + * + * Encode pt as UTF-8 and add it to out. + */ + void encode_utf8(long pt, string & out) { + if (pt < 0) + return; + + if (pt < 0x80) { + out += static_cast(pt); + } else if (pt < 0x800) { + out += static_cast((pt >> 6) | 0xC0); + out += static_cast((pt & 0x3F) | 0x80); + } else if (pt < 0x10000) { + out += static_cast((pt >> 12) | 0xE0); + out += static_cast(((pt >> 6) & 0x3F) | 0x80); + out += static_cast((pt & 0x3F) | 0x80); + } else { + out += static_cast((pt >> 18) | 0xF0); + out += static_cast(((pt >> 12) & 0x3F) | 0x80); + out += static_cast(((pt >> 6) & 0x3F) | 0x80); + out += static_cast((pt & 0x3F) | 0x80); + } + } + + /* parse_string() + * + * Parse a string, starting at the current position. + */ + string parse_string() { + string out; + long last_escaped_codepoint = -1; + while (true) { + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + char ch = str[i++]; + + if (ch == '"') { + encode_utf8(last_escaped_codepoint, out); + return out; + } + + if (in_range(ch, 0, 0x1f)) + return fail("unescaped " + esc(ch) + " in string", ""); + + // The usual case: non-escaped characters + if (ch != '\\') { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + out += ch; + continue; + } + + // Handle escapes + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + ch = str[i++]; + + if (ch == 'u') { + // Extract 4-byte escape sequence + string esc = str.substr(i, 4); + // Explicitly check length of the substring. The following loop + // relies on std::string returning the terminating NUL when + // accessing str[length]. Checking here reduces brittleness. + if (esc.length() < 4) { + return fail("bad \\u escape: " + esc, ""); + } + for (size_t j = 0; j < 4; j++) { + if (!in_range(esc[j], 'a', 'f') && !in_range(esc[j], 'A', 'F') + && !in_range(esc[j], '0', '9')) + return fail("bad \\u escape: " + esc, ""); + } + + long codepoint = strtol(esc.data(), nullptr, 16); + + // JSON specifies that characters outside the BMP shall be encoded as a pair + // of 4-hex-digit \u escapes encoding their surrogate pair components. Check + // whether we're in the middle of such a beast: the previous codepoint was an + // escaped lead (high) surrogate, and this is a trail (low) surrogate. + if (in_range(last_escaped_codepoint, 0xD800, 0xDBFF) + && in_range(codepoint, 0xDC00, 0xDFFF)) { + // Reassemble the two surrogate pairs into one astral-plane character, per + // the UTF-16 algorithm. + encode_utf8((((last_escaped_codepoint - 0xD800) << 10) + | (codepoint - 0xDC00)) + 0x10000, out); + last_escaped_codepoint = -1; + } else { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = codepoint; + } + + i += 4; + continue; + } + + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + + if (ch == 'b') { + out += '\b'; + } else if (ch == 'f') { + out += '\f'; + } else if (ch == 'n') { + out += '\n'; + } else if (ch == 'r') { + out += '\r'; + } else if (ch == 't') { + out += '\t'; + } else if (ch == '"' || ch == '\\' || ch == '/') { + out += ch; + } else { + return fail("invalid escape character " + esc(ch), ""); + } + } + } + + /* parse_number() + * + * Parse a double. + */ + Json parse_number() { + size_t start_pos = i; + + if (str[i] == '-') + i++; + + // Integer part + if (str[i] == '0') { + i++; + if (in_range(str[i], '0', '9')) + return fail("leading 0s not permitted in numbers"); + } else if (in_range(str[i], '1', '9')) { + i++; + while (in_range(str[i], '0', '9')) + i++; + } else { + return fail("invalid " + esc(str[i]) + " in number"); + } + + if (str[i] != '.' && str[i] != 'e' && str[i] != 'E' + && (i - start_pos) <= static_cast(std::numeric_limits::digits10)) { + return std::atoi(str.c_str() + start_pos); + } + + // Decimal part + if (str[i] == '.') { + i++; + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in fractional part"); + + while (in_range(str[i], '0', '9')) + i++; + } + + // Exponent part + if (str[i] == 'e' || str[i] == 'E') { + i++; + + if (str[i] == '+' || str[i] == '-') + i++; + + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in exponent"); + + while (in_range(str[i], '0', '9')) + i++; + } + + return std::strtod(str.c_str() + start_pos, nullptr); + } + + /* expect(str, res) + * + * Expect that 'str' starts at the character that was just read. If it does, advance + * the input and return res. If not, flag an error. + */ + Json expect(const string &expected, Json res) { + assert(i != 0); + i--; + if (str.compare(i, expected.length(), expected) == 0) { + i += expected.length(); + return res; + } else { + return fail("parse error: expected " + expected + ", got " + str.substr(i, expected.length())); + } + } + + /* parse_json() + * + * Parse a JSON object. + */ + Json parse_json(int depth) { + if (depth > max_depth) { + return fail("exceeded maximum nesting depth"); + } + + char ch = get_next_token(); + if (failed) + return Json(); + + if (ch == '-' || (ch >= '0' && ch <= '9')) { + i--; + return parse_number(); + } + + if (ch == 't') + return expect("true", true); + + if (ch == 'f') + return expect("false", false); + + if (ch == 'n') + return expect("null", Json()); + + if (ch == '"') + return parse_string(); + + if (ch == '{') { + map data; + ch = get_next_token(); + if (ch == '}') + return data; + + while (1) { + if (ch != '"') + return fail("expected '\"' in object, got " + esc(ch)); + + string key = parse_string(); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch != ':') + return fail("expected ':' in object, got " + esc(ch)); + + data[std::move(key)] = parse_json(depth + 1); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == '}') + break; + if (ch != ',') + return fail("expected ',' in object, got " + esc(ch)); + + ch = get_next_token(); + } + return data; + } + + if (ch == '[') { + vector data; + ch = get_next_token(); + if (ch == ']') + return data; + + while (1) { + i--; + data.push_back(parse_json(depth + 1)); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == ']') + break; + if (ch != ',') + return fail("expected ',' in list, got " + esc(ch)); + + ch = get_next_token(); + (void)ch; + } + return data; + } + + return fail("expected value, got " + esc(ch)); + } + }; + }//namespace { + + Json Json::parse(const string &in, string &err, JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + Json result = parser.parse_json(0); + + // Check for any trailing garbage + parser.consume_garbage(); + if (parser.failed) + return Json(); + if (parser.i != in.size() && + ((parser.i + 1) != in.size() && in[parser.i] != 0)) //RBP: If there is only 1 character diff, it is probably just a terminating zero from a memory read. + { + return parser.fail("unexpected trailing " + esc(in[parser.i])); + } + return result; + } + +// Documented in json11.hpp + vector Json::parse_multi(const string &in, + std::string::size_type &parser_stop_pos, + string &err, + JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + parser_stop_pos = 0; + vector json_vec; + while (parser.i != in.size() && !parser.failed) { + json_vec.push_back(parser.parse_json(0)); + if (parser.failed) + break; + + // Check for another object + parser.consume_garbage(); + if (parser.failed) + break; + parser_stop_pos = parser.i; + } + return json_vec; + } + +/* * * * * * * * * * * * * * * * * * * * + * Shape-checking + */ + + bool Json::has_shape(const shape & types, string & err) const { + if (!is_object()) { + err = "expected JSON object, got " + dump(); + return false; + } + + const auto& obj_items = object_items(); + for (auto & item : types) { + const auto it = obj_items.find(item.first); + if (it == obj_items.cend() || it->second.type() != item.second) { + err = "bad type for " + item.first + " in " + dump(); + return false; + } + } + + return true; + } + +} // namespace json11 + +/*** End of inlined file: json11.cpp ***/ + +/*** End of inlined file: json11.hpp ***/ + + +/*** Start of inlined file: tileson_parser.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_TILESON_PARSER_HPP +#define TILESON_TILESON_PARSER_HPP + +//RBP: FS-namespace is defined in tileson_parser now! +#if _MSC_VER && !__INTEL_COMPILER + #include + namespace fs = std::filesystem; +#elif __MINGW64__ + #if __MINGW64_VERSION_MAJOR > 6 + #include + namespace fs = std::filesystem; + #else + #include + namespace fs = std::experimental::filesystem; + #endif +#elif __clang__ + #if __clang_major__ < 8 + #include + namespace fs = std::experimental::filesystem; + #else + #include + namespace fs = std::filesystem; + #endif +#else //Linux + #if __GNUC__ < 8 //GCC major version less than 8 + #include + namespace fs = std::experimental::filesystem; + #else + #include + namespace fs = std::filesystem; + #endif +#endif + +#include +#include +#include + + +/*** Start of inlined file: Tools.hpp ***/ +// +// Created by robin on 31.07.2020. +// + +#ifndef TILESON_TOOLS_HPP +#define TILESON_TOOLS_HPP + +#include +#include +#include +namespace tson +{ + class Tools + { + + public: + Tools() = delete; + ~Tools() = delete; + inline static std::vector Base64DecodedStringToBytes(std::string_view str); + inline static std::vector BytesToUnsignedInts(const std::vector &bytes); + inline static std::vector SplitString(const std::string &s, char delim); + inline static bool Equal(float a, float b, float precision = 8192.f); + + private: + template + static void split(const std::string &s, char delim, Out result) + { + std::stringstream ss; + ss.str(s); + std::string item; + + while (std::getline(ss, item, delim)) + { + *(result++) = item; + } + } + }; + + /*! + * When you have decoded a Base64 string, you'll get a string representing bytes. This function turns them into actual bytes. + * @param str + * @return + */ + std::vector Tools::Base64DecodedStringToBytes(std::string_view str) + { + std::vector bytes; + for(size_t i = 0; i < str.size(); ++i) + { + uint8_t u8 = static_cast(str[i]); + bytes.push_back(u8); + } + return bytes; + } + + /*! + * Converts bytes into unsigned int values. The bytes are converted in the Little Endian byte order to fit Tiled's specs. + * @param bytes A vector of bytes. + * @return Bytes converted to unsigned ints + */ + std::vector Tools::BytesToUnsignedInts(const std::vector &bytes) + { + std::vector uints; + std::vector toConvert; + //uint32_t size8 = (compressed[55] << 24) | (compressed[56] << 16) | (compressed[57] << 8) | compressed[58]; //Should be 66000 + + for(size_t i = 0; i < bytes.size(); ++i) + { + toConvert.push_back(bytes[i]); + if(toConvert.size() == 4) + { + uint32_t u32 = (toConvert[3] << 24) | (toConvert[2] << 16) | (toConvert[1] << 8) | toConvert[0]; + uints.push_back(u32); + toConvert.clear(); + } + } + + return uints; + } + + std::vector Tools::SplitString(const std::string &s, char delim) + { + std::vector elems; + split(s, delim, std::back_inserter(elems)); + return elems; + } + + /*! + * Uses a threshold for comparing floats, as they are not precise in many cases. + * @param a + * @param b + * @return true if equal based on the currently defined precision + */ + bool Tools::Equal(float a, float b, float precision) + { + float threshold = 1.f / precision; + float diff = fabsf(a - b); + return diff <= threshold; + } +} + +#endif //TILESON_TOOLS_HPP + +/*** End of inlined file: Tools.hpp ***/ + + +/*** Start of inlined file: Base64Decompressor.hpp ***/ +// +// Created by robin on 29.07.2020. +// The Base64 decoding logic is heavily based on: https://github.com/ReneNyffenegger/cpp-base64 +// + +#ifndef TILESON_BASE64DECOMPRESSOR_HPP +#define TILESON_BASE64DECOMPRESSOR_HPP + + +/*** Start of inlined file: IDecompressor.hpp ***/ +// +// Created by robin on 29.07.2020. +// + +#ifndef TILESON_IDECOMPRESSOR_HPP +#define TILESON_IDECOMPRESSOR_HPP + +#include + +namespace tson +{ + template + class IDecompressor + { + public: + /*! + * If the name matches with 'compression' or 'encoding' the decompress() function will + * be called automatically for the actual Layer. Encoding-related matching is handled first! + * + * Known values: + * + * compression: zlib, gzip, zstd (since Tiled 1.3) or empty (default) (tilelayer only). + * encoding: csv (default) or base64 (tilelayer only). + * + * @return + */ + [[nodiscard]] virtual const std::string &name() const = 0; + + /*! + * Used primarily for Tiled related decompression. + * @param input Input data + * @return Decompressed data + */ + virtual TOut decompress(const TIn &input) = 0; + + /*! + * Used for whole file decompression. Not related to Tiled + * @param path + * @return + */ + virtual TOut decompressFile(const fs::path &path) = 0; + + /*! + * Used for whole file decompression. Not related to Tiled + * @param path + * @return + */ + virtual TOut decompress(const void *data, size_t size) = 0; + + /*! + * Pure virtual class needs virtual destructor so derived classes can call their own destructors + */ + virtual ~IDecompressor() = default; + }; +} + +#endif //TILESON_IDECOMPRESSOR_HPP + +/*** End of inlined file: IDecompressor.hpp ***/ + +#include + +namespace tson +{ + class Base64Decompressor : public IDecompressor + { + public: + [[nodiscard]] inline const std::string &name() const override; + + inline std::string decompress(const std::string_view &s) override; + + inline std::string decompressFile(const fs::path &path) override; + inline std::string decompress(const void *data, size_t size) override; + + private: + inline unsigned int pos_of_char(const unsigned char chr); + inline static const std::string NAME = "base64"; + }; + + const std::string &Base64Decompressor::name() const + { + return NAME; + } + + std::string Base64Decompressor::decompress(const std::string_view &s) + { + + size_t length_of_string = s.length(); + if (!length_of_string) return std::string(""); + + size_t in_len = length_of_string; + size_t pos = 0; + + // + // The approximate length (bytes) of the decoded string might be one ore + // two bytes smaller, depending on the amount of trailing equal signs + // in the encoded string. This approximation is needed to reserve + // enough space in the string to be returned. + // + size_t approx_length_of_decoded_string = length_of_string / 4 * 3; + std::string ret; + ret.reserve(approx_length_of_decoded_string); + + while (pos < in_len) { + + unsigned int pos_of_char_1 = pos_of_char(s[pos+1] ); + + ret.push_back(static_cast( ( (pos_of_char(s[pos+0]) ) << 2 ) + ( (pos_of_char_1 & 0x30 ) >> 4))); + + if (s[pos+2] != '=' && s[pos+2] != '.') { // accept URL-safe base 64 strings, too, so check for '.' also. + + unsigned int pos_of_char_2 = pos_of_char(s[pos+2] ); + ret.push_back(static_cast( (( pos_of_char_1 & 0x0f) << 4) + (( pos_of_char_2 & 0x3c) >> 2))); + + if (s[pos+3] != '=' && s[pos+3] != '.') { + ret.push_back(static_cast( ( (pos_of_char_2 & 0x03 ) << 6 ) + pos_of_char(s[pos+3]) )); + } + } + + pos += 4; + } + + return ret; + } + + unsigned int Base64Decompressor::pos_of_char(const unsigned char chr) + { + // + // Return the position of chr within base64_encode() + // + + if (chr >= 'A' && chr <= 'Z') return chr - 'A'; + else if (chr >= 'a' && chr <= 'z') return chr - 'a' + ('Z' - 'A') + 1; + else if (chr >= '0' && chr <= '9') return chr - '0' + ('Z' - 'A') + ('z' - 'a') + 2; + else if (chr == '+' || chr == '-') return 62; // Be liberal with input and accept both url ('-') and non-url ('+') base 64 characters ( + else if (chr == '/' || chr == '_') return 63; // Ditto for '/' and '_' + + throw "If input is correct, this line should never be reached."; + } + + /*! + * UNUSED! Does nothing + * @param path + * @return + */ + std::string Base64Decompressor::decompressFile(const fs::path &) + { + return std::string(); + } + + /*! + * UNUSED! Does nothing + * @param path + * @return + */ + std::string Base64Decompressor::decompress(const void *, size_t) + { + return std::string(); + } +} + +#endif //TILESON_BASE64DECOMPRESSOR_HPP + +/*** End of inlined file: Base64Decompressor.hpp ***/ + + +/*** Start of inlined file: Lzma.hpp ***/ +// +// Created by robin on 16.01.2021. +// +//#include "../../extras/pocketlzma.hpp" +#ifdef POCKETLZMA_POCKETLZMA_H + +#ifndef TILESON_LZMA_HPP +#define TILESON_LZMA_HPP + +namespace tson +{ + class Lzma : public IDecompressor, std::vector> + { + public: + inline const std::string &name() const override + { + return NAME; + } + + inline std::vector decompress(const std::vector &input) override + { + std::vector out; + + plz::PocketLzma p; + plz::StatusCode status = p.decompress(input, out); + + if(status != plz::StatusCode::Ok) + return std::vector(); + + return out; + } + + inline std::vector decompressFile(const fs::path &path) override + { + std::vector in; + std::vector out; + + plz::PocketLzma p; + plz::FileStatus fileStatus = plz::File::FromFile(path.generic_string(), in); + if(fileStatus.status() != plz::FileStatus::Code::Ok) + return std::vector(); + + plz::StatusCode status = p.decompress(in, out); + + if(status != plz::StatusCode::Ok) + return std::vector(); + + return out; + } + + inline std::vector decompress(const void *data, size_t size) override + { + std::vector out; + + plz::PocketLzma p; + plz::StatusCode status = p.decompress((uint8_t*) data, size, out); + + if(status != plz::StatusCode::Ok) + return std::vector(); + + return out; + } + + private: + inline static const std::string NAME {"lzma"}; + }; +} + +#endif //TILESON_LZMA_HPP + +#endif +/*** End of inlined file: Lzma.hpp ***/ + + +/*** Start of inlined file: DecompressorContainer.hpp ***/ +// +// Created by robin on 30.07.2020. +// + +#ifndef TILESON_DECOMPRESSORCONTAINER_HPP +#define TILESON_DECOMPRESSORCONTAINER_HPP + +#include +#include +#include +#include +namespace tson +{ + class DecompressorContainer + { + public: + inline DecompressorContainer() = default; + template + inline void add(Args &&... args); + inline void remove(std::string_view name); + inline bool contains(std::string_view name) const; + inline bool empty() const; + inline size_t size() const; + inline void clear(); + + inline IDecompressor *get(std::string_view name); + private: + //Key: name, + std::vector>> m_decompressors; + }; + + template + void DecompressorContainer::add(Args &&... args) + { + m_decompressors.emplace_back(new T(args...)); + } + + /*! + * + * @param name The name of the decompressor to check whether exists. + * @return Whether a decompressor with the given name exists or not. + */ + bool DecompressorContainer::contains(std::string_view name) const + { + auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item) + { + return item->name() == name; + }); + + return iter != m_decompressors.end(); + } + + /*! + * Removed an element with the given name. + * @param name The name of the decompressor + */ + void DecompressorContainer::remove(std::string_view name) + { + auto iter = std::remove_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item) + { + return item->name() == name; + }); + m_decompressors.erase(iter); + } + + size_t DecompressorContainer::size() const + { + return m_decompressors.size(); + } + + /*! + * + * @param name The name of the container + * @return An ICompressor pointer if it exists. nullptr otherwise. + */ + IDecompressor *DecompressorContainer::get(std::string_view name) + { + auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item) + { + return item->name() == name; + }); + + return (iter != m_decompressors.end()) ? iter->get() : nullptr; + } + + /*! + * Check if container is empty + * @return Whether or not the container is empty + */ + bool DecompressorContainer::empty() const + { + return m_decompressors.empty(); + } + + /*! + * Clears all IDecompressor elements in the container + */ + void DecompressorContainer::clear() + { + m_decompressors.clear(); + } +} +#endif //TILESON_DECOMPRESSORCONTAINER_HPP + +/*** End of inlined file: DecompressorContainer.hpp ***/ + + +/*** Start of inlined file: MemoryStream.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_MEMORYSTREAM_HPP +#define TILESON_MEMORYSTREAM_HPP + + +/*** Start of inlined file: MemoryBuffer.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_MEMORYBUFFER_HPP +#define TILESON_MEMORYBUFFER_HPP + +#include + +namespace tson +{ + class MemoryBuffer : public std::basic_streambuf { + public: + MemoryBuffer(const uint8_t *p, size_t l) { + setg((char*)p, (char*)p, (char*)p + l); + } + }; +} + +#endif //TILESON_MEMORYBUFFER_HPP + +/*** End of inlined file: MemoryBuffer.hpp ***/ + +namespace tson +{ + class MemoryStream : public std::istream { + public: + MemoryStream(const uint8_t *p, size_t l) : + std::istream(&m_buffer), + m_buffer(p, l) { + rdbuf(&m_buffer); + } + + private: + MemoryBuffer m_buffer; + }; +} + +#endif //TILESON_MEMORYSTREAM_HPP + +/*** End of inlined file: MemoryStream.hpp ***/ + + +/*** Start of inlined file: Map.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_MAP_HPP +#define TILESON_MAP_HPP + + +/*** Start of inlined file: Color.hpp ***/ +// +// Created by robin on 09.08.2019. +// + +#ifndef TILESON_COLOR_HPP +#define TILESON_COLOR_HPP + +#include +#include +#include + +namespace tson +{ + + template + class Color + { + + public: + /*! + * Parses color from Tiled's own color format, which is #aarrggbb in hex format or optionally #rrggbb. + * @param color Color in "#rrggbbaa" hex format. + * @example "#ffaa07ff" and "#aa07ff". In cases where alpha is not a value, it is set to 255. + */ + inline explicit Color(const std::string &color) + { + parseHexString(color); + } + inline Color(T red, T green, T blue, T alpha); + inline Color() { r = g = b = 0; a = 255; } + + inline bool operator==(const Color &rhs) const; + inline bool operator==(const std::string &rhs) const; + inline bool operator!=(const Color &rhs) const; + + inline Color asFloat(); + inline Color asInt(); + + /*! Red */ + T r; + /*! Green */ + T g; + /*! Blue */ + T b; + /*! Alpha */ + T a; + + private: + void parseHexString(const std::string &color) + { + if constexpr (std::is_same::value) + { + if (color.size() == 9) + { + a = (float) std::stoi(color.substr(1, 2), nullptr, 16) / 255; + r = (float) std::stoi(color.substr(3, 2), nullptr, 16) / 255; + g = (float) std::stoi(color.substr(5, 2), nullptr, 16) / 255; + b = (float) std::stoi(color.substr(7, 2), nullptr, 16) / 255; + } + else if (color.size() == 7) + { + r = (float) std::stoi(color.substr(1, 2), nullptr, 16) / 255; + g = (float) std::stoi(color.substr(3, 2), nullptr, 16) / 255; + b = (float) std::stoi(color.substr(5, 2), nullptr, 16) / 255; + a = 1.f; + } + } + else if constexpr (std::is_same::value) + { + if (color.size() == 9) + { + a = static_cast(std::stoi(color.substr(1, 2), nullptr, 16)); + r = static_cast(std::stoi(color.substr(3, 2), nullptr, 16)); + g = static_cast(std::stoi(color.substr(5, 2), nullptr, 16)); + b = static_cast(std::stoi(color.substr(7, 2), nullptr, 16)); + } + else if (color.size() == 7) + { + r = static_cast(std::stoi(color.substr(1, 2), nullptr, 16)); + g = static_cast(std::stoi(color.substr(3, 2), nullptr, 16)); + b = static_cast(std::stoi(color.substr(5, 2), nullptr, 16)); + a = 255; + } + } + } + + }; + + typedef Color Colori; + typedef Color Colorf; + + /*! + * Gets the Color as a float. Only useful if the template related to the current color is NOT float + * @tparam T The template type + * @return If the T type is float, the value will be returned as a copy of itself. Else: All values will be divided by 255 + * before returning. + */ + template + tson::Colorf Color::asFloat() + { + if constexpr (std::is_same::value) + *this; + else + return tson::Colorf((float) r / 255, (float) g / 255, (float) b / 255, (float) a / 255); + } + + /*! + * Gets the Color as an 32-bit variable, where each channel is 8-bit. + * Only useful if the template related to the current color is NOT already 8-bit int + * @tparam T The template type + * @return If the T type is float, the value of each channel will be multiplied by 255. Else: The value will be returned as a copy of itself. + */ + template + tson::Colori Color::asInt() + { + if constexpr (std::is_same::value) + return tson::Colori(static_cast((float) r * 255), + static_cast((float) g * 255), + static_cast((float) b * 255), + static_cast((float) a * 255)); + else + *this; + } + + /*! + * Create a new color in rgba (red, green, blue, alpha) format + * @tparam T the template type for each channel. Usually uint8_t (8-bit int) or float. + * @param red Red channel + * @param green Green channel + * @param blue Blue channel + * @param alpha Alpha channel + */ + template + Color::Color(T red, T green, T blue, T alpha) + { + r = red; + g = green; + b = blue; + a = alpha; + } + + template + bool Color::operator==(const std::string &rhs) const { + Color other {rhs}; + return *this == other; + } + + template + bool Color::operator==(const Color &rhs) const + { + return r == rhs.r && + g == rhs.g && + b == rhs.b && + a == rhs.a; + } + + template + bool Color::operator!=(const Color &rhs) const + { + return !(rhs == *this); + } + +} + +#endif //TILESON_COLOR_HPP + +/*** End of inlined file: Color.hpp ***/ + + +/*** Start of inlined file: Vector2.hpp ***/ +// +// Created by robin on 31.07.2019. +// + +#ifndef TILESON_VECTOR2_HPP +#define TILESON_VECTOR2_HPP + +namespace tson +{ + template + class Vector2 + { + + public: + inline Vector2(T xPos, T yPos); + inline Vector2() { x = y = 0; } + + inline bool operator==(const Vector2 &rhs) const; + inline bool operator!=(const Vector2 &rhs) const; + + T x; + T y; + }; + + /*! + * + * @tparam T template type + * @param xPos x-position + * @param yPos y-position + */ + template + Vector2::Vector2(T xPos, T yPos) + { + x = xPos; + y = yPos; + } + + template + bool Vector2::operator==(const Vector2 &rhs) const + { + return x == rhs.x && + y == rhs.y; + } + + template + bool Vector2::operator!=(const Vector2 &rhs) const + { + return !(rhs == *this); + } + + typedef Vector2 Vector2i; + typedef Vector2 Vector2f; +} + +#endif //TILESON_VECTOR2_HPP + +/*** End of inlined file: Vector2.hpp ***/ + +//#include "../external/json.hpp" + +/*** Start of inlined file: IJson.hpp ***/ +// +// Created by robin on 06.01.2021. +// + +#ifndef TILESON_IJSON_HPP +#define TILESON_IJSON_HPP + +namespace tson +{ + class IJson + { + public: + + virtual IJson& operator[](std::string_view key) = 0; + virtual IJson &at(std::string_view key) = 0; + virtual IJson &at(size_t pos) = 0; + /*! + * If current json object is an array, this will get all elements of it! + * @return An array + */ + [[nodiscard]] virtual std::vector> array() = 0; + [[nodiscard]] virtual std::vector> &array(std::string_view key) = 0; + /*! + * Get the size of an object. This will be equal to the number of + * variables an object contains. + * @return + */ + [[nodiscard]] virtual size_t size() const = 0; + [[nodiscard]] virtual bool parse(const fs::path &path) = 0; + [[nodiscard]] virtual bool parse(const void *data, size_t size) = 0; + + template + [[nodiscard]] T get(std::string_view key); + template + [[nodiscard]] T get(); + [[nodiscard]] virtual size_t count(std::string_view key) const = 0; + [[nodiscard]] virtual bool any(std::string_view key) const = 0; + [[nodiscard]] virtual bool isArray() const = 0; + [[nodiscard]] virtual bool isObject() const = 0; + [[nodiscard]] virtual bool isNull() const = 0; + + /*! + * Get the directory where the json was loaded. + * Only assigned if json is parsed by file. + * @return + */ + [[nodiscard]] virtual fs::path directory() const = 0; + virtual void directory(const fs::path &directory) = 0; + + /*! + * Pure virtual class needs virtual destructor so derived classes can call their own destructors + */ + virtual ~IJson() = default; + + protected: + [[nodiscard]] virtual int32_t getInt32(std::string_view key) = 0; + [[nodiscard]] virtual uint32_t getUInt32(std::string_view key) = 0; + [[nodiscard]] virtual int64_t getInt64(std::string_view key) = 0; + [[nodiscard]] virtual uint64_t getUInt64(std::string_view key) = 0; + [[nodiscard]] virtual double getDouble(std::string_view key) = 0; + [[nodiscard]] virtual float getFloat(std::string_view key) = 0; + [[nodiscard]] virtual std::string getString(std::string_view key) = 0; + [[nodiscard]] virtual bool getBool(std::string_view key) = 0; + + [[nodiscard]] virtual int32_t getInt32() = 0; + [[nodiscard]] virtual uint32_t getUInt32() = 0; + [[nodiscard]] virtual int64_t getInt64() = 0; + [[nodiscard]] virtual uint64_t getUInt64() = 0; + [[nodiscard]] virtual double getDouble() = 0; + [[nodiscard]] virtual float getFloat() = 0; + [[nodiscard]] virtual std::string getString() = 0; + [[nodiscard]] virtual bool getBool() = 0; + }; + + template + T IJson::get(std::string_view key) + { + if constexpr (std::is_same::value) + return getDouble(key); + if constexpr (std::is_same::value) + return getFloat(key); + else if constexpr (std::is_same::value) + return getInt32(key); + else if constexpr (std::is_same::value) + return getUInt32(key); + else if constexpr (std::is_same::value) + return getInt64(key); + else if constexpr (std::is_same::value) + return getUInt64(key); + else if constexpr (std::is_same::value) + return getString(key); + else if constexpr (std::is_same::value) + return getBool(key); + else + return nullptr; + } + + template + T IJson::get() + { + if constexpr (std::is_same::value) + return getDouble(); + if constexpr (std::is_same::value) + return getFloat(); + else if constexpr (std::is_same::value) + return getInt32(); + else if constexpr (std::is_same::value) + return getUInt32(); + else if constexpr (std::is_same::value) + return getInt64(); + else if constexpr (std::is_same::value) + return getUInt64(); + else if constexpr (std::is_same::value) + return getString(); + else if constexpr (std::is_same::value) + return getBool(); + else + return nullptr; + } + +} + +#endif //TILESON_IJSON_HPP + +/*** End of inlined file: IJson.hpp ***/ + + + +/*** Start of inlined file: NlohmannJson.hpp ***/ +// +// Created by robin on 08.01.2021. +// + +#ifdef INCLUDE_NLOHMANN_JSON_HPP_ + +#ifndef TILESON_NLOHMANNJSON_HPP +#define TILESON_NLOHMANNJSON_HPP + +namespace tson +{ + class NlohmannJson : public tson::IJson + { + public: + inline NlohmannJson() = default; + + IJson &operator[](std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + m_arrayCache[key.data()] = std::make_unique(&m_json->operator[](key.data()));//.front()); + + return *m_arrayCache[key.data()].get(); + } + + inline explicit NlohmannJson(nlohmann::json *json) : m_json {json} + { + + } + + inline IJson& at(std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + m_arrayCache[key.data()] = std::make_unique(&m_json->operator[](key.data()));//.front()); + + return *m_arrayCache[key.data()].get(); + } + + inline IJson& at(size_t pos) override + { + if(m_arrayPosCache.count(pos) == 0) + m_arrayPosCache[pos] = std::make_unique(&m_json->at(pos)); + + return *m_arrayPosCache[pos]; + } + + std::vector> array() override + { + std::vector> vec; + for(auto &item : *m_json) + { + nlohmann::json *ptr = &item; + vec.emplace_back(std::make_unique(ptr)); + } + + return vec; + } + + inline std::vector> &array(std::string_view key) override + { + if(m_arrayListDataCache.count(key.data()) == 0) + { + if (m_json->count(key.data()) > 0 && m_json->operator[](key.data()).is_array()) + { + std::for_each(m_json->operator[](key.data()).begin(), m_json->operator[](key.data()).end(), [&](nlohmann::json &item) + { + nlohmann::json *ptr = &item; + m_arrayListDataCache[key.data()].emplace_back(std::make_unique(ptr)); + }); + } + } + + return m_arrayListDataCache[key.data()]; + } + + [[nodiscard]] inline size_t size() const override + { + return m_json->size(); + } + + inline bool parse(const fs::path &path) override + { + clearCache(); + m_data = nullptr; + m_json = nullptr; + if (fs::exists(path) && fs::is_regular_file(path)) + { + m_path = path.parent_path(); + m_data = std::make_unique(); + std::ifstream i(path.generic_string()); + try + { + i >> *m_data; + m_json = m_data.get(); + } + catch (const nlohmann::json::parse_error &error) + { + std::string message = "Parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + return false; + } + + inline bool parse(const void *data, size_t size) override + { + clearCache(); + m_json = nullptr; + m_data = std::make_unique(); + tson::MemoryStream mem{(uint8_t *) data, size}; + try + { + mem >> *m_data; + m_json = m_data.get(); + } + catch (const nlohmann::json::parse_error &error) + { + std::string message = "Parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + + [[nodiscard]] inline size_t count(std::string_view key) const override + { + return m_json->count(key); + } + + [[nodiscard]] inline bool any(std::string_view key) const override + { + return count(key) > 0; + } + + [[nodiscard]] inline bool isArray() const override + { + return m_json->is_array(); + } + + [[nodiscard]] inline bool isObject() const override + { + return m_json->is_object(); + } + + [[nodiscard]] inline bool isNull() const override + { + return m_json->is_null(); + } + + fs::path directory() const override + { + return m_path; + } + + void directory(const fs::path &directory) override + { + m_path = directory; + } + + protected: + [[nodiscard]] inline int32_t getInt32(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline uint32_t getUInt32(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline int64_t getInt64(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline uint64_t getUInt64(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline double getDouble(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline std::string getString(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline bool getBool(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] float getFloat(std::string_view key) override + { + return m_json->operator[](key.data()).get(); + } + + [[nodiscard]] inline int32_t getInt32() override + { + return m_json->get(); + } + + [[nodiscard]] inline uint32_t getUInt32() override + { + return m_json->get(); + } + + [[nodiscard]] inline int64_t getInt64() override + { + return m_json->get(); + } + + [[nodiscard]] inline uint64_t getUInt64() override + { + return m_json->get(); + } + + [[nodiscard]] inline double getDouble() override + { + return m_json->get(); + } + + [[nodiscard]] inline std::string getString() override + { + return m_json->get(); + } + + [[nodiscard]] inline bool getBool() override + { + return m_json->get(); + } + + [[nodiscard]] float getFloat() override + { + return m_json->get(); + } + + private: + inline void clearCache() + { + m_arrayCache.clear(); + m_arrayPosCache.clear(); + m_arrayListDataCache.clear(); + } + + nlohmann::json *m_json = nullptr; + std::unique_ptr m_data = nullptr; //Only used if this is the owner json! + fs::path m_path; + + //Cache! + std::map> m_arrayCache; + std::map> m_arrayPosCache; + std::map>> m_arrayListDataCache; + + }; +} +#endif //TILESON_NLOHMANNJSON_HPP + +#endif //INCLUDE_NLOHMANN_JSON_HPP_ +/*** End of inlined file: NlohmannJson.hpp ***/ + + +/*** Start of inlined file: PicoJson.hpp ***/ +// +// Created by robin on 11.01.2021. +// + +#ifdef picojson_h +#ifndef TILESON_PICOJSON_HPP +#define TILESON_PICOJSON_HPP + +namespace tson +{ + class PicoJson : public tson::IJson + { + public: + inline PicoJson() = default; + + IJson &operator[](std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + { + if(m_json->is()) + { + picojson::object &o = m_json->get(); + m_arrayCache[key.data()] = std::make_unique(&o[key.data()]); + } + } + + return *m_arrayCache[key.data()].get(); + } + + inline explicit PicoJson(picojson::value *json) : m_json {json} + { + + } + + inline IJson& at(std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + { + if(m_json->is()) + { + picojson::object &o = m_json->get(); + m_arrayCache[key.data()] = std::make_unique(&o[key.data()]); + } + } + return *m_arrayCache[key.data()].get(); + } + + inline IJson& at(size_t pos) override + { + if(m_arrayPosCache.count(pos) == 0) + { + picojson::array &a = m_json->get(); + m_arrayPosCache[pos] = std::make_unique(&a.at(pos)); + } + + return *m_arrayPosCache[pos]; + } + + std::vector> array() override + { + std::vector> vec; + if(m_json->is()) + { + picojson::array &a = m_json->get(); + for (auto &item : a) + { + picojson::value *ptr = &item; + vec.emplace_back(std::make_unique(ptr)); + } + } + + return vec; + } + + inline std::vector> &array(std::string_view key) override + { + if(m_arrayListDataCache.count(key.data()) == 0) + { + if(count(key.data()) > 0) + { + if (isObject()) + { + picojson::object &obj = m_json->get(); + picojson::value &v = obj.at(key.data()); + bool isArray = v.is(); + if (isArray) + { + picojson::array &a = v.get(); + + std::for_each(a.begin(), a.end(), [&](picojson::value &item) + { + picojson::value *ptr = &item; + m_arrayListDataCache[key.data()].emplace_back(std::make_unique(ptr)); + }); + } + } + } + } + + return m_arrayListDataCache[key.data()]; + } + + [[nodiscard]] inline size_t size() const override + { + if (m_json->is()) + { + picojson::object obj = m_json->get(); + return obj.size(); + } + return 0; + } + + inline bool parse(const fs::path &path) override + { + clearCache(); + m_data = nullptr; + m_json = nullptr; + if (fs::exists(path) && fs::is_regular_file(path)) + { + m_path = path.parent_path(); + m_data = std::make_unique(); + std::ifstream i(path.generic_string()); + try + { + std::string error = picojson::parse(*m_data, i); + if(!error.empty()) + { + std::cerr << "PicoJson parse error: " << error << "\n"; + return false; + } + //i >> *m_data; + m_json = m_data.get(); + } + catch (const std::exception &error) + { + std::string message = "Parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + return false; + } + + inline bool parse(const void *data, size_t size) override + { + clearCache(); + m_json = nullptr; + m_data = std::make_unique(); + tson::MemoryStream mem{(uint8_t *) data, size}; + try + { + std::string error = picojson::parse(*m_data, mem); + if(!error.empty()) + { + std::cerr << "PicoJson parse error: " << error << "\n"; + return false; + } + //mem >> *m_data; + m_json = m_data.get(); + } + catch (const std::exception &error) + { + std::string message = "Parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + + [[nodiscard]] inline size_t count(std::string_view key) const override + { + if (isObject()) + { + picojson::object obj = m_json->get(); + return obj.count(key.data()); + } + + return m_json->contains(key.data()) ? 1 : 0; + } + + [[nodiscard]] inline bool any(std::string_view key) const override + { + return count(key) > 0; + } + + [[nodiscard]] inline bool isArray() const override + { + return m_json->is(); + } + + [[nodiscard]] inline bool isObject() const override + { + return m_json->is(); + } + + [[nodiscard]] inline bool isNull() const override + { + return m_json->is(); + } + + fs::path directory() const override + { + return m_path; + } + + void directory(const fs::path &directory) override + { + m_path = directory; + } + + protected: + [[nodiscard]] inline int32_t getInt32(std::string_view key) override + { + picojson::object obj = m_json->get(); + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline uint32_t getUInt32(std::string_view key) override + { + picojson::object obj = m_json->get(); + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline int64_t getInt64(std::string_view key) override + { + picojson::object obj = m_json->get(); + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline uint64_t getUInt64(std::string_view key) override + { + picojson::object obj = m_json->get(); + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline double getDouble(std::string_view key) override + { + picojson::object obj = m_json->get(); + return obj[key.data()].get(); + } + + [[nodiscard]] inline std::string getString(std::string_view key) override + { + picojson::object obj = m_json->get(); + return obj[key.data()].get(); + } + + [[nodiscard]] inline bool getBool(std::string_view key) override + { + picojson::object obj = m_json->get(); + return obj[key.data()].get(); + } + + [[nodiscard]] float getFloat(std::string_view key) override + { + picojson::object obj = m_json->get(); + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline int32_t getInt32() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline uint32_t getUInt32() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline int64_t getInt64() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline uint64_t getUInt64() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline double getDouble() override + { + return m_json->get(); + } + + [[nodiscard]] inline std::string getString() override + { + return m_json->get(); + } + + [[nodiscard]] inline bool getBool() override + { + return m_json->get(); + } + + [[nodiscard]] float getFloat() override + { + return static_cast(getDouble()); + } + + private: + inline void clearCache() + { + m_arrayCache.clear(); + m_arrayPosCache.clear(); + m_arrayListDataCache.clear(); + } + + picojson::value *m_json = nullptr; + std::unique_ptr m_data = nullptr; //Only used if this is the owner json! + fs::path m_path; + + //Cache! + std::map> m_arrayCache; + std::map> m_arrayPosCache; + std::map>> m_arrayListDataCache; + + }; +} +#endif //TILESON_PICOJSON_HPP +#endif + +/*** End of inlined file: PicoJson.hpp ***/ + +//#include "../json/Gason.hpp" //Unsupported + +/*** Start of inlined file: Json11.hpp ***/ +// +// Created by robin on 16.01.2021. +// + +#ifndef TILESON_JSON11_HPP +#define TILESON_JSON11_HPP + +namespace tson +{ + class Json11 : public tson::IJson + { + public: + inline Json11() = default; + + IJson &operator[](std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + { + if(m_json->is_object()) + { + m_arrayCache[key.data()] = std::make_unique(m_json->operator[](key.data())); + } + } + + return *m_arrayCache[key.data()].get(); + } + + inline explicit Json11(const json11::Json &json) : m_json {&json} + { + + } + + inline IJson& at(std::string_view key) override + { + if(m_arrayCache.count(key.data()) == 0) + { + if(m_json->is_object()) + { + m_arrayCache[key.data()] = std::make_unique(m_json->operator[](key.data())); + } + } + return *m_arrayCache[key.data()].get(); + } + + inline IJson& at(size_t pos) override + { + if(m_arrayPosCache.count(pos) == 0) + { + const std::vector &a = m_json->array_items(); + m_arrayPosCache[pos] = std::make_unique(a.at(pos)); + } + + return *m_arrayPosCache[pos]; + } + + std::vector> array() override + { + std::vector> vec; + if(m_json->is_array()) + { + for (const json11::Json &item : m_json->array_items()) + { + vec.emplace_back(std::make_unique(item)); + } + } + + return vec; + } + + inline std::vector> &array(std::string_view key) override + { + if(m_arrayListDataCache.count(key.data()) == 0) + { + if(count(key.data()) > 0) + { + if(isObject()) + { + const json11::Json &v = m_json->operator[](key.data()); + if(v.is_array()) + { + for (const json11::Json &item : v.array_items()) + { + m_arrayListDataCache[key.data()].emplace_back(std::make_unique(item)); + } + } + } + } + } + + return m_arrayListDataCache[key.data()]; + } + + [[nodiscard]] inline size_t size() const override + { + if(m_json->is_object()) + return m_json->object_items().size(); + else if(m_json->is_array()) + return m_json->array_items().size(); + + return 0; + } + + inline bool parse(const fs::path &path) override + { + clearCache(); + m_data = nullptr; + m_json = nullptr; + if (fs::exists(path) && fs::is_regular_file(path)) + { + std::ifstream file(path.generic_string()); + std::string str; + m_path = path.parent_path(); + + file.seekg(0, std::ios::end); + str.reserve(static_cast(file.tellg())); + file.seekg(0, std::ios::beg); + + str.assign((std::istreambuf_iterator(file)), + std::istreambuf_iterator()); + + m_data = std::make_unique(); + + try + { + std::string strError; + *m_data = json11::Json::parse(str, strError); + if(!strError.empty()) + { + std::cerr << strError << "\n"; + return false; + } + m_json = m_data.get(); + } + catch (const std::exception &error) + { + std::string message = "Json11 parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + return false; + } + + inline bool parse(const void *data, size_t size) override + { + clearCache(); + m_json = nullptr; + std::string str; + + str.reserve(size); + + tson::MemoryStream mem{(uint8_t *) data, size}; + + str.assign((std::istreambuf_iterator(mem)), + std::istreambuf_iterator()); + + m_data = std::make_unique(); + + try + { + std::string strError; + + *m_data = json11::Json::parse(str, strError); + if(!strError.empty()) + { + std::cout << strError << "\n"; + return false; + } + m_json = m_data.get(); + } + catch (const std::exception &error) + { + std::string message = "Json11 parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + std::cerr << message; + return false; + } + return true; + } + + [[nodiscard]] inline size_t count(std::string_view key) const override + { + if (isObject()) + { + //const json11::Json &j = m_json->operator[](key.data()); + //size_t s1 = j.object_items().size(); + return m_json->object_items().count(key.data()); + } + + return 0; + } + + [[nodiscard]] inline bool any(std::string_view key) const override + { + return count(key) > 0; + } + + [[nodiscard]] inline bool isArray() const override + { + return m_json->is_array(); + } + + [[nodiscard]] inline bool isObject() const override + { + return m_json->is_object(); + } + + [[nodiscard]] inline bool isNull() const override + { + return m_json->is_null(); + } + + fs::path directory() const override + { + return m_path; + } + + void directory(const fs::path &directory) override + { + m_path = directory; + } + + protected: + [[nodiscard]] inline int32_t getInt32(std::string_view key) override + { + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline uint32_t getUInt32(std::string_view key) override + { + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline int64_t getInt64(std::string_view key) override + { + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline uint64_t getUInt64(std::string_view key) override + { + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline double getDouble(std::string_view key) override + { + return m_json->operator[](key.data()).number_value(); + } + + [[nodiscard]] inline std::string getString(std::string_view key) override + { + return m_json->operator[](key.data()).string_value(); // .get(); + } + + [[nodiscard]] inline bool getBool(std::string_view key) override + { + return m_json->operator[](key.data()).bool_value(); + } + + [[nodiscard]] float getFloat(std::string_view key) override + { + return static_cast(getDouble(key)); + } + + [[nodiscard]] inline int32_t getInt32() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline uint32_t getUInt32() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline int64_t getInt64() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline uint64_t getUInt64() override + { + return static_cast(getDouble()); + } + + [[nodiscard]] inline double getDouble() override + { + return m_json->number_value(); + } + + [[nodiscard]] inline std::string getString() override + { + return m_json->string_value(); + } + + [[nodiscard]] inline bool getBool() override + { + return m_json->bool_value(); + } + + [[nodiscard]] float getFloat() override + { + return static_cast(getDouble()); + } + + private: + + inline void clearCache() + { + m_arrayCache.clear(); + m_arrayPosCache.clear(); + m_arrayListDataCache.clear(); + } + + //Owner values + std::unique_ptr m_data = nullptr; //Only used if this is the owner json! + + const json11::Json *m_json = nullptr; + fs::path m_path; + + //Cache! + std::map> m_arrayCache; + std::map> m_arrayPosCache; + std::map>> m_arrayListDataCache; + + }; +} + +#endif //TILESON_JSON11_HPP + +/*** End of inlined file: Json11.hpp ***/ + + + +/*** Start of inlined file: Layer.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_LAYER_HPP +#define TILESON_LAYER_HPP + +#include +//#include "../external/json.hpp" + + +/*** Start of inlined file: Chunk.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_CHUNK_HPP +#define TILESON_CHUNK_HPP + +//#include "../external/json.hpp" + +namespace tson +{ + class Chunk + { + public: + inline Chunk() = default; + inline explicit Chunk(IJson &json); + inline bool parse(IJson &json); + + [[nodiscard]] inline const std::vector &getData() const; + [[nodiscard]] inline const std::string &getBase64Data() const; + [[nodiscard]] inline const Vector2i &getSize() const; + [[nodiscard]] inline const Vector2i &getPosition() const; + + private: + std::vector m_data; /*! 'data' (when uint array): Array of unsigned int (GIDs) or base64-encoded data. tilelayer only. */ + std::string m_base64Data; /*! 'data' (when string): Array of unsigned int (GIDs) or base64-encoded data. */ + tson::Vector2i m_size; /*! x='width' (in tiles) and y='height' (in tiles): */ + tson::Vector2i m_position; /*! 'x' and 'y' position in tiles */ + }; +} + +#endif //TILESON_CHUNK_HPP + +/*! + * Parses 'chunk' data from Tiled json and stores the values in this class + * @param json json-data + */ +tson::Chunk::Chunk(IJson &json) +{ + parse(json); +} + +/*! + * Parses 'chunk' data from Tiled json and stores the values in this class + * @param json json-data + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Chunk::parse(IJson &json) +{ + bool allFound = true; + + if(json.count("width") > 0 && json.count("height") > 0) + m_size = {json["width"].get(), json["height"].get()}; else allFound = false; + if(json.count("x") > 0 && json.count("y") > 0) + m_position = {json["x"].get(), json["y"].get()}; else allFound = false; + + //Handle DATA (Optional) + if(json.count("data") > 0) + { + if(json["data"].isArray()) + { + auto &data = json.array("data"); + std::for_each(data.begin(), data.end(), [&](std::unique_ptr &item) { m_data.push_back(item->get()); }); + } + else + m_base64Data = json["data"].get(); + } + + return allFound; +} + +/*! + * 'data' (when uint array): Array of unsigned int (GIDs) or base64-encoded data. tilelayer only. + * @return list of tile ids + */ +const std::vector &tson::Chunk::getData() const +{ + return m_data; +} + +/*! + * 'data' (when string): Array of unsigned int (GIDs) or base64-encoded data. + * @return base64 string + */ +const std::string &tson::Chunk::getBase64Data() const +{ + return m_base64Data; +} + +/*! + * x='width' (in tiles) and y='height' (in tiles). + * @return Size (x and y), containing the values from the fields 'width' and 'height' in Tiled + */ +const tson::Vector2i &tson::Chunk::getSize() const +{ + return m_size; +} + +/*! + * 'x' and 'y' position in tiles + * @return Position in int + */ +const tson::Vector2i &tson::Chunk::getPosition() const +{ + return m_position; +} +/*** End of inlined file: Chunk.hpp ***/ + + +/*** Start of inlined file: Object.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_OBJECT_HPP +#define TILESON_OBJECT_HPP + +//#include "../external/json.hpp" + + +/*** Start of inlined file: PropertyCollection.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_PROPERTYCOLLECTION_HPP +#define TILESON_PROPERTYCOLLECTION_HPP + + +/*** Start of inlined file: Property.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_PROPERTY_HPP +#define TILESON_PROPERTY_HPP + +//#include "../../TilesonConfig.h" + +//#if USE_CPP17_FILESYSTEM + +#include +#include + +/*** Start of inlined file: Enums.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_ENUMS_HPP +#define TILESON_ENUMS_HPP +#include + +/*** Start of inlined file: EnumBitflags.hpp ***/ +// +// Created by robin on 08.11.2020. +// + +#ifndef TILESON_ENUMBITFLAGS_HPP +#define TILESON_ENUMBITFLAGS_HPP + +#include +#include + +#define TILESON_ENABLE_BITMASK_OPERATORS(x) \ +namespace tson { \ + ENABLE_BITMASK_OPERATORS(x) \ +} + +namespace tson +{ + #define ENABLE_BITMASK_OPERATORS(x) \ + template<> \ + struct EnableBitMaskOperators \ + { \ + static const bool enable = true; \ + }; + + template + struct EnableBitMaskOperators + { + static const bool enable = false; + }; + + template + typename std::enable_if::enable, Enum>::type + operator |(Enum lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + return static_cast ( + static_cast(lhs) | + static_cast(rhs) + ); + } + + //Permissions operator &(Permissions lhs, Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + operator &(Enum lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + return static_cast ( + static_cast(lhs) & + static_cast(rhs) + ); + } + + //Permissions operator ^(Permissions lhs, Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + operator ^(Enum lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + return static_cast ( + static_cast(lhs) ^ + static_cast(rhs) + ); + } + + //Permissions operator ~(Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + operator ~(Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + return static_cast ( + ~static_cast(rhs) + ); + } + + //Permissions& operator |=(Permissions &lhs, Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + &operator |=(Enum &lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + lhs = static_cast ( + static_cast(lhs) | + static_cast(rhs) + ); + + return lhs; + } + + //Permissions& operator &=(Permissions &lhs, Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + &operator &=(Enum &lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + lhs = static_cast ( + static_cast(lhs) & + static_cast(rhs) + ); + + return lhs; + } + + //Permissions& operator ^=(Permissions &lhs, Permissions rhs) + template + typename std::enable_if::enable, Enum>::type + &operator ^=(Enum &lhs, Enum rhs) + { + static_assert(std::is_enum::value, + "template parameter is not an enum type"); + + using underlying = typename std::underlying_type::type; + + lhs = static_cast ( + static_cast(lhs) ^ + static_cast(rhs) + ); + + return lhs; + } +} + +#endif //TILESON_ENUMBITFLAGS_HPP + +/*** End of inlined file: EnumBitflags.hpp ***/ + + +namespace tson +{ + /*! + * Type used in Property.hpp + */ + enum class Type : uint8_t + { + Undefined = 0, + Color = 1, /*! color */ + File = 2, /*! file */ + Int = 3, /*! int */ + Boolean = 4, /*! bool */ + Float = 5, /*! float */ + String = 6, /*! string */ + Class = 7, /*! class */ + Enum = 8, /*! 'string' or 'int' with a value in 'propertyType' */ + Object = 9 /*! object */ + }; + + /*! + * Layer.hpp - LayerType + * //'type': tilelayer, objectgroup, imagelayer or group + */ + enum class LayerType : uint8_t + { + Undefined = 0, + TileLayer = 1, + ObjectGroup = 2, + ImageLayer = 3, + Group = 4 + }; + + /*! + * Map.hpp - ParseStatus + */ + enum class ParseStatus : uint8_t + { + OK = 0, //OK unless otherwise stated + FileNotFound = 1, + ParseError = 2, + MissingData = 3, + DecompressionError = 4 + }; + + /*! + * Object.hpp - ObjectType + */ + enum class ObjectType : uint8_t + { + Undefined = 0, + Object = 1, + Ellipse = 2, + Rectangle = 3, + Point = 4, + Polygon = 5, + Polyline = 6, + Text = 7, + Template = 8 + }; + + static constexpr uint32_t FLIPPED_HORIZONTALLY_FLAG = 0x80000000; + static constexpr uint32_t FLIPPED_VERTICALLY_FLAG = 0x40000000; + static constexpr uint32_t FLIPPED_DIAGONALLY_FLAG = 0x20000000; + /*! + * Object.hpp - ObjectFlipFlags + */ + enum class TileFlipFlags : uint32_t + { + None = 0, + Diagonally = FLIPPED_DIAGONALLY_FLAG, + Vertically = FLIPPED_VERTICALLY_FLAG, + Horizontally = FLIPPED_HORIZONTALLY_FLAG + }; + + /*! + * Tileset.hpp - ObjectAlignment + */ + enum class ObjectAlignment : uint8_t + { + Unspecified = 0, //unspecified + TopLeft = 1, //topleft + Top = 2, //top + TopRight = 3, //topright + Left = 4, //left + Center = 5, //center + Right = 6, //right + BottomLeft = 7, //bottomleft + Bottom = 8, //bottom + BottomRight = 9 //bottomright + }; + + /*! + * Text.hpp - TextAlignment + */ + enum class TextAlignment : uint8_t + { + Unresolved = 0, + Left = 1, //left + Center = 2, //center + Right = 3, //right + Justify = 4, //justify + Top = 5, //top + Bottom = 6 //bottom + }; + + /*! + * Tileset.hpp - TileRenderSize - From Tiled v1.9 + */ + enum class TileRenderSize : uint8_t + { + Undefined = 0, + Tile = 1, //tile (default) + Grid = 2 //grid + }; + + /*! + * Tileset.hpp - FillMode - From Tiled v1.9 + */ + enum class FillMode : uint8_t + { + Undefined = 0, + Stretch = 1, //stretch (default) + PreserveAspectFit = 2 //preserve-aspect-fit + }; + + enum class EnumStorageType : uint8_t + { + Unspecified = 0, + Int = 1, + String = 2 + }; + + ENABLE_BITMASK_OPERATORS(TileFlipFlags) +} + +#endif //TILESON_ENUMS_HPP + +/*** End of inlined file: Enums.hpp ***/ + + +//#include "../external/json.hpp" + +namespace tson +{ + class Project; + + class Property + { + public: + + //enum class Type : uint8_t + //{ + // Undefined = 0, + // Color = 1, /*! color */ + // File = 2, /*! file */ + // Int = 3, /*! int */ + // Boolean = 4, /*! bool */ + // Float = 5, /*! float */ + // String = 6 /*! string */ + //}; + + inline Property(); + inline explicit Property(IJson &json, tson::Project *project = nullptr); + inline Property(std::string name, std::any value, Type type); + + inline void setValue(const std::any &value); + inline void setStrValue(const std::string &value); + inline void setName(const std::string &name); + + [[nodiscard]] inline const std::type_info& getValueType() const; + inline std::string getValueTypeInfo(); + [[nodiscard]]inline const std::any &getValue() const; + template + inline T getValue() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline Type getType() const; + [[nodiscard]] inline const std::string &getPropertyType() const; + + //Became public in v1.4.0 + inline void setValueByType(IJson &json); //Definition in tileson_forward.hpp + + protected: + inline void setTypeByString(const std::string &str); + + tson::Project *m_project = nullptr; //Used for resolving 'enum' and 'class' objects + Type m_type = Type::Undefined; + std::string m_name {}; + std::string m_propertyType {}; + std::any m_value; //Using std::any to assign any type + }; + + template + T Property::getValue() const + { + bool isCorrectType = (m_value.type() == typeid(T)); + + if(isCorrectType) + { + T value = std::any_cast(m_value); + return value; + } + else + { + static T defaultValue; + return defaultValue; + } + } +} + +tson::Property::Property() : m_name {"unnamed"} +{ + +} + +tson::Property::Property(IJson &json, tson::Project *project) : m_project {project} +{ + m_name = json["name"].get(); + if(json.count("propertytype") > 0) + m_propertyType = json["propertytype"].get(); + else if(json.count("propertyType") > 0) //Somehow Tiled's class objects uses propertyType with 'T'. + m_propertyType = json["propertyType"].get(); + + setTypeByString(json["type"].get()); + setValueByType(json["value"]); +} + +tson::Property::Property(std::string name, std::any value, Type type) : m_type {type}, m_name { move(name) }, m_value { move(value) } +{ + +} + +void tson::Property::setValue(const std::any &value) +{ + m_value = value; +} + +/*! + * Sets the value specifically as string. + * When not specified as std::string, the default is that the value will be set as char * when adding a value like "test" + * This function is to make sure the value is added as string. + * @param value + */ +void tson::Property::setStrValue(const std::string &value) +{ + m_value = value; +} + +const std::any &tson::Property::getValue() const +{ + return m_value; +} + +void tson::Property::setName(const std::string &name) +{ + m_name = name; +} + +const std::string &tson::Property::getName() const +{ + return m_name; +} + +/*! + * Gets the value type as std::value_info. + * This can easily be compared to types like this: + * Check if int: getValueType() == typeid(int) + * @return + */ + +const std::type_info &tson::Property::getValueType() const +{ + return m_value.type(); +} + +/*! + * Gets the value type as std::string + * Examples of known types: + * "i" = int + * "f" = float + * "b" = bool + * @return + */ +std::string tson::Property::getValueTypeInfo() +{ + return m_value.type().name(); +} + +tson::Type tson::Property::getType() const +{ + return m_type; +} + +void tson::Property::setTypeByString(const std::string &str) +{ + if(str == "color") + m_type = tson::Type::Color; + else if(str == "file") + m_type = tson::Type::File; + else if(str == "int") + m_type = tson::Type::Int; + else if(str == "bool") + m_type = tson::Type::Boolean; + else if(str == "float") + m_type = tson::Type::Float; + else if(str == "string") + m_type = tson::Type::String; + else if(str == "class") + m_type = tson::Type::Class; + else if(str == "object") + m_type = tson::Type::Object; + else + m_type = tson::Type::Undefined; +} + +const std::string &tson::Property::getPropertyType() const +{ + return m_propertyType; +} + +#endif //TILESON_PROPERTY_HPP + +/*** End of inlined file: Property.hpp ***/ + +//#include "../external/json.hpp" +#include + +namespace tson +{ + class PropertyCollection + { + public: + inline PropertyCollection() = default; + + inline explicit PropertyCollection(std::string id); + + inline tson::Property * add(const tson::Property &property); + inline tson::Property * add(IJson &json, tson::Project *project = nullptr); + inline tson::Property * add(const std::string &name, const std::any &value, tson::Type type); + + inline void remove(const std::string &name); + + inline void setValue(const std::string &name, const std::any &value); + inline void setProperty(const std::string &name, const tson::Property &value); + inline void setId(const std::string &id); + + inline bool hasProperty(const std::string &name); + inline tson::Property * getProperty(const std::string &name); + inline std::map &getProperties(); + inline std::vector get(); + template + inline T getValue(const std::string &name); + [[nodiscard]] inline const std::string &getId() const; + [[nodiscard]] inline size_t getSize() const; + + protected: + std::string m_id; + std::map m_properties; + }; +} + +template +T tson::PropertyCollection::getValue(const std::string &name) +{ + static T defaultT; + return (m_properties.count(name) > 0) ? m_properties[name].getValue() : defaultT; +} + +tson::PropertyCollection::PropertyCollection(std::string id) : m_id {std::move(id)} +{ + +} + +tson::Property *tson::PropertyCollection::add(const tson::Property &property) +{ + m_properties[property.getName()] = property; + return &m_properties[property.getName()]; +} + +tson::Property *tson::PropertyCollection::add(IJson &json, tson::Project *project) +{ + tson::Property property = tson::Property(json, project); + std::string name = property.getName(); + m_properties[name] = std::move(property); + return &m_properties[name]; +} + +tson::Property *tson::PropertyCollection::add(const std::string &name, const std::any &value, tson::Type type) +{ + m_properties[name] = {name, value, type}; + return &m_properties[name]; +} + +void tson::PropertyCollection::remove(const std::string &name) +{ + m_properties.erase(name); +} + +/*! + * Sets a value IF the property already exists. Does nothing otherwise. + * See add() for adding new properties + * @param name + * @param value + */ +void tson::PropertyCollection::setValue(const std::string &name, const std::any &value) +{ + if(m_properties.count(name) > 0) + m_properties[name].setValue(value); +} + +/*! + * Overwrites the current property if it exists, or adds it if it doesn't. + * @param name + * @param value + */ +void tson::PropertyCollection::setProperty(const std::string &name, const tson::Property &value) +{ + m_properties[name] = value; +} + +void tson::PropertyCollection::setId(const std::string &id) +{ + m_id = id; +} + +bool tson::PropertyCollection::hasProperty(const std::string &name) +{ + return m_properties.count(name) > 0; +} + +tson::Property *tson::PropertyCollection::getProperty(const std::string &name) +{ + return (m_properties.count(name) > 0) ? &m_properties[name] : nullptr; +} + +std::map &tson::PropertyCollection::getProperties() +{ + return m_properties; +} + +/*! + * Gets vector of pointers to all the existing properties + * @return + */ +std::vector tson::PropertyCollection::get() +{ + std::vector props; + for(auto &i : m_properties) + props.emplace_back(&i.second); + + return props; +} + +const std::string &tson::PropertyCollection::getId() const +{ + return m_id; +} + +size_t tson::PropertyCollection::getSize() const +{ + return m_properties.size(); +} + +#endif //TILESON_PROPERTYCOLLECTION_HPP + +/*** End of inlined file: PropertyCollection.hpp ***/ + + +/*** Start of inlined file: Text.hpp ***/ +// +// Created by robin on 05.08.2019. +// + +#ifndef TILESON_TEXT_HPP +#define TILESON_TEXT_HPP + +#include + +namespace tson +{ + class Text + { + public: + inline Text() = default; + /*! + * + * @param _text Text + * @param _wrap If the text is marked as wrapped + */ + //inline Text(std::string _text, bool _wrap, tson::Colori _color) : text {std::move(_text)}, wrap {_wrap}, color {_color} {}; + inline explicit Text(IJson &json) + { + bool hasColor = json.count("color") > 0; + tson::Color c = (hasColor) ? tson::Colori(json["color"].get()) : tson::Colori(); + color = c; + text = (json.count("text") > 0) ? json["text"].get() : ""; + wrap = (json.count("wrap") > 0) ? json["wrap"].get() : false; + + //Previously missing properties + bold = (json.count("bold") > 0) ? json["bold"].get() : false; + fontFamily = (json.count("fontfamily") > 0) ? json["fontfamily"].get() : "sans-serif"; + horizontalAlignment = (json.count("halign") > 0) ? resolveTextAlignmentByString(json["halign"].get()) : TextAlignment::Left; + italic = (json.count("italic") > 0) ? json["italic"].get() : false; + kerning = (json.count("kerning") > 0) ? json["kerning"].get() : true; + pixelSize = (json.count("pixelsize") > 0) ? json["pixelsize"].get() : 16; + strikeout = (json.count("strikeout") > 0) ? json["strikeout"].get() : false; + underline = (json.count("underline") > 0) ? json["underline"].get() : false; + verticalAlignment = (json.count("valign") > 0) ? resolveTextAlignmentByString(json["valign"].get()) : TextAlignment::Top; + }; + + //Just make it simple + std::string text {}; + tson::Colori color {}; + bool wrap{}; + + //Previously missing properties + bool bold {false}; + std::string fontFamily {"sans-serif"}; + TextAlignment horizontalAlignment {TextAlignment::Left}; + bool italic {false}; + bool kerning {true}; + int pixelSize {16}; + bool strikeout {false}; + bool underline {false}; + TextAlignment verticalAlignment {TextAlignment::Top}; + + private: + [[nodiscard]] TextAlignment resolveTextAlignmentByString(const std::string &str) const + { + if(str == "left") return TextAlignment::Left; + if(str == "center") return TextAlignment::Center; + if(str == "right") return TextAlignment::Right; + if(str == "justify") return TextAlignment::Justify; + if(str == "top") return TextAlignment::Top; + if(str == "bottom") return TextAlignment::Bottom; + + return TextAlignment::Unresolved; + } + }; +} + +#endif //TILESON_TEXT_HPP + +/*** End of inlined file: Text.hpp ***/ + +#include + +namespace tson +{ + class TiledClass; + class Map; + class Object + { + public: + //enum class Type : uint8_t + //{ + // Undefined = 0, + // Object = 1, + // Ellipse = 2, + // Rectangle = 3, + // Point = 4, + // Polygon = 5, + // Polyline = 6, + // Text = 7, + // Template = 8 + //}; + + inline Object() = default; + inline explicit Object(IJson &json, tson::Map *map); + inline bool parse(IJson &json, tson::Map *map); + + [[nodiscard]] inline ObjectType getObjectType() const; + [[nodiscard]] inline bool isEllipse() const; + [[nodiscard]] inline uint32_t getGid() const; + [[nodiscard]] inline const Vector2i &getSize() const; + [[nodiscard]] inline int getId() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline bool isPoint() const; + [[nodiscard]] inline float getRotation() const; + [[nodiscard]] inline const std::string &getTemplate() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + [[nodiscard]] inline bool isVisible() const; + [[nodiscard]] inline const Vector2i &getPosition() const; + + [[nodiscard]] inline const std::vector &getPolygons() const; + [[nodiscard]] inline const std::vector &getPolylines() const; + [[nodiscard]] inline PropertyCollection &getProperties(); + [[nodiscard]] inline const Text &getText() const; + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + //v1.2.0-stuff + [[nodiscard]] inline TileFlipFlags getFlipFlags() const; + inline bool hasFlipFlags(TileFlipFlags flags); + + private: + inline void setObjectTypeByJson(IJson &json); + + ObjectType m_objectType = ObjectType::Undefined; /*! Says with object type this is */ + bool m_ellipse {}; /*! 'ellipse': Used to mark an object as an ellipse */ + uint32_t m_gid {}; /*! 'gid': GID, only if object comes from a Tilemap */ + tson::Vector2i m_size; /*! x = 'width' (Width in pixels), y = 'height' (Height in pixels). Ignored if using a gid.)*/ + int m_id{}; /*! 'id': Incremental id - unique across all objects */ + std::string m_name; /*! 'name': String assigned to name field in editor*/ + bool m_point {}; /*! 'point': Used to mark an object as a point */ + std::vector m_polygon; /*! 'polygon': A list of x,y coordinates in pixels */ + std::vector m_polyline; /*! 'polyline': A list of x,y coordinates in pixels */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + float m_rotation {}; /*! 'rotation': Angle in degrees clockwise */ + std::string m_template; /*! 'template': Reference to a template file, in case object is a template instance */ + tson::Text m_text; /*! first: 'text' second: 'wrap' */ + std::string m_type; /*! 'type': String assigned to type field in editor */ + bool m_visible {}; /*! 'visible': Whether object is shown in editor. */ + tson::Vector2i m_position; /*! 'x' and 'y': coordinate in pixels */ + + //v1.2.0-stuff + tson::TileFlipFlags m_flipFlags = TileFlipFlags::None; /*! Resolved using bit 32, 31 and 30 from gid */ + + tson::Map *m_map {nullptr}; + std::shared_ptr m_class {}; + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::Object::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +/*! + * Parses a json Tiled object + * @param json + */ +tson::Object::Object(IJson &json, tson::Map *map) +{ + parse(json, map); +} + +/*! + * Parses a json Tiled object and autoamtically determines the object type based on the data presented. + * Call getObjectType() to see what object type it is. + * @param json + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Object::parse(IJson &json, tson::Map *map) +{ + m_map = map; + bool allFound = true; + + if(json.count("ellipse") > 0) m_ellipse = json["ellipse"].get(); //Optional + if(json.count("gid") > 0) + { + uint32_t gid = json["gid"].get(); //Optional + if (gid & FLIPPED_HORIZONTALLY_FLAG) m_flipFlags |= TileFlipFlags::Horizontally; + if (gid & FLIPPED_VERTICALLY_FLAG) m_flipFlags |= TileFlipFlags::Vertically; + if (gid & FLIPPED_DIAGONALLY_FLAG) m_flipFlags |= TileFlipFlags::Diagonally; + + // Clear flags + gid &= ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG); + + m_gid = gid; + } + if(json.count("id") > 0) m_id = json["id"].get(); else allFound = false; + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + if(json.count("point") > 0) m_point = json["point"].get(); //Optional + if(json.count("rotation") > 0) m_rotation = json["rotation"].get(); else allFound = false; + if(json.count("template") > 0) m_template = json["template"].get(); //Optional + + if(json.count("type") > 0) m_type = json["type"].get(); + else if(json.count("class") > 0) m_type = json["class"].get(); //Tiled v1.9 renamed 'type' to 'class' + else allFound = false; + + if(json.count("visible") > 0) m_visible = json["visible"].get(); else allFound = false; + + if(json.count("width") > 0 && json.count("height") > 0) + m_size = {json["width"].get(), json["height"].get()}; else allFound = false; + if(json.count("x") > 0 && json.count("y") > 0) + m_position = {json["x"].get(), json["y"].get()}; else allFound = false; + + if(json.count("text") > 0) + { + //Old logic + //bool hasColor = json["text"].count("color") > 0; + //tson::Color c = (hasColor) ? tson::Colori(json["text"]["color"].get()) : tson::Colori(); + //m_text = {json["text"]["text"].get(), json["text"]["wrap"].get(), c}; //Optional + m_text = tson::Text(json["text"]); + // + + } + + setObjectTypeByJson(json); + + if(m_objectType == ObjectType::Template) + allFound = true; //Just accept anything with this type + + //More advanced data + if(json.count("polygon") > 0 && json["polygon"].isArray()) + { + auto &polygon = json.array("polygon"); + std::for_each(polygon.begin(), polygon.end(),[&](std::unique_ptr &item) + { + IJson &j = *item; + m_polygon.emplace_back(j["x"].get(), j["y"].get()); + }); + + } + + if(json.count("polyline") > 0 && json["polyline"].isArray()) + { + auto &polyline = json.array("polyline"); + std::for_each(polyline.begin(), polyline.end(),[&](std::unique_ptr &item) + { + IJson &j = *item; + m_polyline.emplace_back(j["x"].get(), j["y"].get()); + }); + } + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) + { + m_properties.add(*item); + }); + } + + return allFound; +} + +/*! + * Sets an object type based on json data. + * @param json + */ +void tson::Object::setObjectTypeByJson(IJson &json) +{ + m_objectType = ObjectType::Undefined; + if(m_ellipse) + m_objectType = ObjectType::Ellipse; + else if(m_point) + m_objectType = ObjectType::Point; + else if(json.count("polygon") > 0) + m_objectType = ObjectType::Polygon; + else if(json.count("polyline") > 0) + m_objectType = ObjectType::Polyline; + else if(json.count("text") > 0) + m_objectType = ObjectType::Text; + else if(json.count("gid") > 0) + m_objectType = ObjectType::Object; + else if(json.count("template") > 0) + m_objectType = ObjectType::Template; + else + m_objectType = ObjectType::Rectangle; +} + +/*! + * Gets what type of object this is. + * @return + */ + +tson::ObjectType tson::Object::getObjectType() const +{ + return m_objectType; +} + +/*! + * 'ellipse': Used to mark an object as an ellipse + * @return + */ +bool tson::Object::isEllipse() const +{ + return m_ellipse; +} + +/*! + * 'gid': GID, only if object comes from a Tilemap + * @return + */ +uint32_t tson::Object::getGid() const +{ + return m_gid; +} + +/*! + * x = 'width' (Width in pixels), y = 'height' (Height in pixels). Ignored if using a gid.) + * @return + */ +const tson::Vector2i &tson::Object::getSize() const +{ + return m_size; +} + +/*! + * 'id': Incremental id - unique across all objects + * @return + */ +int tson::Object::getId() const +{ + return m_id; +} + +/*! + * 'name': String assigned to name field in editor + * @return + */ +const std::string &tson::Object::getName() const +{ + return m_name; +} + +/*! + * 'point': Used to mark an object as a point + * @return true if the object is of type point + */ +bool tson::Object::isPoint() const +{ + return m_point; +} + +/*! + * 'rotation': Angle in degrees clockwise + * @return + */ +float tson::Object::getRotation() const +{ + return m_rotation; +} + +/*! + * 'template': Reference to a template file, in case object is a template instance + * @return + */ +const std::string &tson::Object::getTemplate() const +{ + return m_template; +} + +/*! + * 'type': String assigned to type field in editor + * This was renamed to 'class' in Tiled v1.9 + * @return + */ +const std::string &tson::Object::getType() const +{ + return m_type; +} + +/*! + * 'class': String assigned to class field in editor + * This was renamed from 'type' to 'class' in Tiled v1.9 + * @return + */ +const std::string &tson::Object::getClassType() const +{ + return m_type; +} + +/*! + * 'visible': Whether object is shown in editor. + * @return + */ +bool tson::Object::isVisible() const +{ + return m_visible; +} + +/*! + * 'x' and 'y': coordinate in pixels + * @return + */ +const tson::Vector2i &tson::Object::getPosition() const +{ + return m_position; +} + +/*! + * 'polygon': A list of x,y coordinates in pixels. + * If this is a Polygon type, this function will return the points used to create it + * @return + */ +const std::vector &tson::Object::getPolygons() const +{ + return m_polygon; +} + +/*! + * 'polyline': A list of x,y coordinates in pixels + * If this is a Polyline type, this function will return the points used to create it + * @return + */ +const std::vector &tson::Object::getPolylines() const +{ + return m_polyline; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::Object::getProperties() +{ + return m_properties; +} + +/*! + * 'type': String assigned to type field in editor + * @return + */ +const tson::Text &tson::Object::getText() const +{ + return m_text; +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Object::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + return nullptr; +} + +/*! + * Get all flip flags + * @return + */ +tson::TileFlipFlags tson::Object::getFlipFlags() const +{ + return m_flipFlags; +} + +/*! + * + * @param flags Which flags to check for. Several flags can be checked at once using the bitwise or operator. + * Example: + * hasFlipFlags(TileFlipFlags::Vertically | TileFlipFlags::Horizontally) + * + * @return true if the flag(s) specified are set + */ +bool tson::Object::hasFlipFlags(TileFlipFlags flags) +{ + return ((m_flipFlags & flags) == flags) ? true : false; +} + +#endif //TILESON_OBJECT_HPP + +/*** End of inlined file: Object.hpp ***/ + + +/*** Start of inlined file: TileObject.hpp ***/ +// +// Created by robin on 26.07.2020. +// + +#ifndef TILESON_TILEOBJECT_HPP +#define TILESON_TILEOBJECT_HPP + + +/*** Start of inlined file: Rect.hpp ***/ +// +// Created by robin on 24.07.2020. +// + +#ifndef TILESON_RECT_HPP +#define TILESON_RECT_HPP + +namespace tson +{ + class Rect + { + public: + + inline Rect() = default; + inline Rect(int x_, int y_, int width_, int height_); + + inline bool operator==(const Rect &rhs) const; + inline bool operator!=(const Rect &rhs) const; + + int x{}; + int y{}; + int width{}; + int height{}; + }; + + Rect::Rect(int x_, int y_, int width_, int height_) + { + x = x_; + y = y_; + width = width_; + height = height_; + } + + bool Rect::operator==(const Rect &rhs) const + { + return x == rhs.x && + y == rhs.y && + width == rhs.width && + height == rhs.height; + } + + bool Rect::operator!=(const Rect &rhs) const + { + return !(rhs == *this); + } +} + +#endif //TILESON_RECT_HPP + +/*** End of inlined file: Rect.hpp ***/ + +namespace tson +{ + class Tile; + class TileObject + { + public: + inline TileObject() = default; + inline TileObject(const std::tuple &posInTileUnits, tson::Tile *tile); + + inline void initialize(const std::tuple &posInTileUnits, tson::Tile *tile); //Defined in tileson_forward.hpp + + inline Tile *getTile(); + inline const Vector2i &getPositionInTileUnits() const; + inline const Vector2f &getPosition() const; + inline const tson::Rect &getDrawingRect() const; //Defined in tileson_forward.hpp + + private: + tson::Tile *m_tile; + tson::Vector2i m_posInTileUnits; + tson::Vector2f m_position; + + }; + + TileObject::TileObject(const std::tuple &posInTileUnits, tson::Tile *tile) + { + initialize(posInTileUnits, tile); + } + + /*! + * Get a pointer to the related tile + * @return + */ + Tile *TileObject::getTile() + { + return m_tile; + } + + /*! + * Gets the position of the tile in tile units + * @return + */ + const Vector2i &TileObject::getPositionInTileUnits() const + { + return m_posInTileUnits; + } + + /*! + * Gets the position of the tile in pixels. + * @return + */ + const Vector2f &TileObject::getPosition() const + { + return m_position; + } +} + +#endif //TILESON_TILEOBJECT_HPP + +/*** End of inlined file: TileObject.hpp ***/ + + +/*** Start of inlined file: FlaggedTile.hpp ***/ +// +// Created by robin on 13.11.2020. +// + +#ifndef TILESON_FLAGGEDTILE_HPP +#define TILESON_FLAGGEDTILE_HPP + +namespace tson +{ + class FlaggedTile + { + + public: + FlaggedTile(size_t x_, size_t y_, uint32_t id_, uint32_t tileId_) : x {x_}, y {y_}, id {id_}, tileId {tileId_} + { + + } + size_t x; + size_t y; + /*! Full ID, including flag */ + uint32_t id; + /*! ID of the flagged tile */ + uint32_t tileId; + }; +} +#endif //TILESON_FLAGGEDTILE_HPP + +/*** End of inlined file: FlaggedTile.hpp ***/ + +namespace tson +{ + class Tile; + class Map; + + class Layer + { + public: + inline Layer() = default; + inline Layer(IJson &json, tson::Map *map); + inline bool parse(IJson &json, tson::Map *map); //Defined in tileson_forward + + [[nodiscard]] inline const std::string &getCompression() const; + [[nodiscard]] inline const std::vector &getData() const; + [[nodiscard]] inline const std::string &getBase64Data() const; + [[nodiscard]] inline const std::string &getDrawOrder() const; + [[nodiscard]] inline const std::string &getEncoding() const; + [[nodiscard]] inline int getId() const; + [[nodiscard]] inline const std::string &getImage() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline const Vector2f &getOffset() const; + [[nodiscard]] inline float getOpacity() const; + [[nodiscard]] inline const Vector2i &getSize() const; + [[nodiscard]] inline const Colori &getTransparentColor() const; + [[nodiscard]] inline const Vector2f &getParallax() const; + [[nodiscard]] inline bool hasRepeatX() const; + [[nodiscard]] inline bool hasRepeatY() const; + + [[nodiscard]] inline LayerType getType() const; + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + + [[nodiscard]] inline const std::string &getTypeStr() const; + [[nodiscard]] inline bool isVisible() const; + [[nodiscard]] inline int getX() const; + [[nodiscard]] inline int getY() const; + + [[nodiscard]] inline std::vector &getChunks(); + [[nodiscard]] inline std::vector &getLayers(); + [[nodiscard]] inline std::vector &getObjects(); + [[nodiscard]] inline PropertyCollection &getProperties(); + + inline tson::Object *getObj(int id); + inline tson::Object *firstObj(const std::string &name); + inline std::vector getObjectsByName(const std::string &name); + inline std::vector getObjectsByType(tson::ObjectType type); + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + inline void assignTileMap(std::map *tileMap); + inline void createTileData(const Vector2i &mapSize, bool isInfiniteMap); + + [[nodiscard]] inline const std::map, tson::Tile *> &getTileData() const; + inline tson::Tile * getTileData(int x, int y); + + //v1.2.0-stuff + [[nodiscard]] inline const Colori &getTintColor() const; + [[nodiscard]] inline tson::Map *getMap() const; + + [[nodiscard]] inline std::map, tson::TileObject> &getTileObjects(); + inline tson::TileObject * getTileObject(int x, int y); + [[nodiscard]] inline const std::set &getUniqueFlaggedTiles() const; + inline void resolveFlaggedTiles(); + + private: + inline void setTypeByString(); + + std::vector m_chunks; /*! 'chunks': Array of chunks (optional). tilelayer only. */ + std::string m_compression; /*! 'compression': zlib, gzip or empty (default). tilelayer only. */ + std::vector m_data; /*! 'data' (when uint array): Array of unsigned int (GIDs) or base64-encoded + * data. tilelayer only. */ + std::string m_base64Data; /*! 'data' (when string): Array of unsigned int (GIDs) or base64-encoded + * data. tilelayer only. */ + std::string m_drawOrder; /*! 'draworder': topdown (default) or index. objectgroup only. */ + std::string m_encoding; /*! 'encoding': csv (default) or base64. tilelayer only. */ + int m_id{}; /*! 'id': Incremental id - unique across all layers */ + std::string m_image; /*! 'image': Image used by this layer. imagelayer only. */ + std::vector m_layers; /*! 'layers': Array of layers. group on */ + std::string m_name; /*! 'name': Name assigned to this layer */ + std::vector m_objects; /*! 'objects': Array of objects. objectgroup only. */ + tson::Vector2f m_offset; /*! 'offsetx' and 'offsety': Horizontal and Vertical layer offset in pixels + * (default: {0, 0}) */ + float m_opacity{}; /*! 'opacity': Value between 0 and 1 */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + tson::Vector2i m_size; /*! x = 'width': (Column count. Same as map width for fixed-size maps.) + y = 'height': Row count. Same as map height for fixed-size maps. */ + tson::Colori m_transparentColor; /*! 'transparentcolor': Hex-formatted color (#RRGGBB) (optional, imagelayer only */ + std::string m_typeStr; /*! 'type': tilelayer, objectgroup, imagelayer or group */ + LayerType m_type {LayerType::Undefined}; /*! Layer type as enum*/ + bool m_visible{}; /*! 'visible': Whether layer is shown or hidden in editor */ + int m_x{}; /*! 'x': Horizontal layer offset in tiles. Always 0. */ + int m_y{}; /*! 'y': Vertical layer offset in tiles. Always 0. */ + tson::Vector2f m_parallax{1.f, 1.f}; /*! Tiled v1.5: parallax factor for this layer. Defaults to 1. + x = 'parallaxx', y = 'parallaxy'*/ + bool m_repeatX {}; /*! 'repeatx': Whether the image drawn by this layer is repeated along the X axis. (since Tiled 1.8)*/ + bool m_repeatY {}; /*! 'repeaty': Whether the image drawn by this layer is repeated along the Y axis. (since Tiled 1.8)*/ + + std::map *m_tileMap; + std::map, tson::Tile*> m_tileData; /*! Key: Tuple of x and y pos in tile units. */ + + //v1.2.0-stuff + tson::Colori m_tintColor; /*! 'tintcolor': Hex-formatted color (#RRGGBB or #AARRGGBB) that is multiplied with + * any graphics drawn by this layer or any child layers (optional). */ + inline void decompressData(); /*! Defined in tileson_forward.hpp */ + inline void queueFlaggedTile(size_t x, size_t y, uint32_t id); /*! Queue a flagged tile */ + + tson::Map * m_map; /*! The map who owns this layer */ + std::map, tson::TileObject> m_tileObjects; + std::set m_uniqueFlaggedTiles; + std::vector m_flaggedTiles; + + std::string m_classType{}; /*! 'class': The class of this map (since 1.9, defaults to “”). */ + std::shared_ptr m_class {}; + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T Layer::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +/*! + * Parses a Tiled layer from json + * @param json + */ +tson::Layer::Layer(IJson &json, tson::Map *map) +{ + parse(json, map); +} + +void tson::Layer::queueFlaggedTile(size_t x, size_t y, uint32_t id) +{ + uint32_t tileId = id; + tileId &= ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG); + m_uniqueFlaggedTiles.insert(id); + m_flaggedTiles.emplace_back(x, y, id, tileId); +} + +/*! + * Copies all objects with a name that equals the parameter + * @param name Name of the objects to return + * @return All objects with a matching name + */ +std::vector tson::Layer::getObjectsByName(const std::string &name) +{ + std::vector found; + + std::copy_if(m_objects.begin(), m_objects.end(), std::back_inserter(found), [&](const tson::Object &item) + { + return item.getName() == name; + }); + + return found; +} + +/*! + * Copies all objects with a type that equals the parameter + * @param type LayerType of the objects to return + * @return All objects with a matching type + */ +std::vector tson::Layer::getObjectsByType(tson::ObjectType type) +{ + std::vector found; + + std::copy_if(m_objects.begin(), m_objects.end(), std::back_inserter(found), [&](const tson::Object &item) + { + return item.getObjectType() == type; + }); + + return found; +} + +/*! + * Returns the first object with the given name + * @param name Name of the object to find. + * @return A pointer to the object if found. nullptr otherwise. + */ +tson::Object *tson::Layer::firstObj(const std::string &name) +{ + auto result = std::find_if(m_objects.begin(), m_objects.end(), [&](const tson::Object &obj){return obj.getName() == name; }); + if(result == m_objects.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Get an object by ID + * @param id Unique ID of the object + * @return A pointer to the object if found. nullptr otherwise. + */ +tson::Object *tson::Layer::getObj(int id) +{ + auto result = std::find_if(m_objects.begin(), m_objects.end(), [&](const tson::Object &obj){return obj.getId() == id; }); + if(result == m_objects.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Set type by string + * tilelayer, objectgroup, imagelayer or group + */ +void tson::Layer::setTypeByString() +{ + if(m_typeStr == "tilelayer") m_type = LayerType::TileLayer; + else if(m_typeStr == "objectgroup") m_type = LayerType::ObjectGroup; + else if(m_typeStr == "imagelayer") m_type = LayerType::ImageLayer; + else if(m_typeStr == "group") m_type = LayerType::Group; + else m_type = LayerType::Undefined; +} + +/*! + * 'compression': zlib, gzip or empty (default). tilelayer only. + * @return + */ +const std::string &tson::Layer::getCompression() const +{ + return m_compression; +} + +/*! + * 'data' (when uint array): Array of unsigned int (GIDs) or base64-encoded data. tilelayer only. + * @return + */ +const std::vector &tson::Layer::getData() const +{ + return m_data; +} + +/*! + * 'data' (when string): Array of unsigned int (GIDs) or base64-encoded data. tilelayer only. + * @return + */ +const std::string &tson::Layer::getBase64Data() const +{ + return m_base64Data; +} + +/*! + * 'draworder': topdown (default) or index. objectgroup only. + * @return + */ +const std::string &tson::Layer::getDrawOrder() const +{ + return m_drawOrder; +} + +/*! + * 'encoding': csv (default) or base64. tilelayer only. + * @return + */ +const std::string &tson::Layer::getEncoding() const +{ + return m_encoding; +} + +/*! + * 'id': Incremental id - unique across all layers + * @return + */ +int tson::Layer::getId() const +{ + return m_id; +} + +/*! + * 'image': Image used by this layer. imagelayer only. + * @return + */ +const std::string &tson::Layer::getImage() const +{ + return m_image; +} + +/*! + * 'name': Name assigned to this layer + * @return + */ +const std::string &tson::Layer::getName() const +{ + return m_name; +} + +/*! + * 'offsetx' and 'offsety': Horizontal and Vertical layer offset in pixels (default: {0, 0}) + * @return + */ +const tson::Vector2f &tson::Layer::getOffset() const +{ + return m_offset; +} + +/*! + * 'opacity': Value between 0 and 1 + * @return + */ +float tson::Layer::getOpacity() const +{ + return m_opacity; +} + +/*! + * x = 'width': (Column count. Same as map width for fixed-size maps.) + * y = 'height': Row count. Same as map height for fixed-size maps. + * @return width and height as a single size + */ +const tson::Vector2i &tson::Layer::getSize() const +{ + return m_size; +} + +/*! + * 'transparentcolor': Color created from a hex color (#RRGGBB) (optional, imagelayer only) + * @return color as color object with rgba channel. + */ +const tson::Colori &tson::Layer::getTransparentColor() const +{ + return m_transparentColor; +} + +/*! + * 'type': tilelayer, objectgroup, imagelayer or group + * @return string with the object type + */ +const std::string &tson::Layer::getTypeStr() const +{ + return m_typeStr; +} + +/*! + * 'visible': Whether layer is shown or hidden in editor + * @return + */ +bool tson::Layer::isVisible() const +{ + return m_visible; +} + +/*! + * 'x': Horizontal layer offset in tiles. Always 0. + * @return x value (always 0 for layer) + */ +int tson::Layer::getX() const +{ + return m_x; +} + +/*! + * 'y': Horizontal layer offset in tiles. Always 0. + * @return y value (always 0 for layer) + */ +int tson::Layer::getY() const +{ + return m_y; +} + +/*! + * 'chunks': Array of chunks (optional). tilelayer only. + * @return + */ +std::vector &tson::Layer::getChunks() +{ + return m_chunks; +} + +/*! + * 'layers': Array of layers. group on + * @return + */ +std::vector &tson::Layer::getLayers() +{ + return m_layers; +} + +/*! + * 'objects': Array of objects. objectgroup only. + * @return + */ +std::vector &tson::Layer::getObjects() +{ + return m_objects; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::Layer::getProperties() +{ + return m_properties; +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Layer::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + return nullptr; +} + +/*! + * Get layer type + * @return Layer type as enum + */ +tson::LayerType tson::Layer::getType() const +{ + return m_type; +} + +/*! + * Assigns a tilemap of pointers to existing tiles. + * @param tileMap The tilemap. key: tile id, value: pointer to Tile. + */ +void tson::Layer::assignTileMap(std::map *tileMap) +{ + m_tileMap = tileMap; +} + +/*! + * Get tile data as some kind of map with x and y position with pointers to existing tiles. + * Map only contains tiles that are not empty. x and y position is in tile units. + * + * Example of getting tile from the returned map: + * + * Tile *tile = tileData[{0, 4}]; + * + * @return A map that represents the data returned from getData() in a 2D map with Tile pointers. + */ +const std::map, tson::Tile *> &tson::Layer::getTileData() const +{ + return m_tileData; +} + +/*! + * A safe way to get tile data + * Get tile data as some kind of map with x and y position with pointers to existing tiles. + * Map only contains tiles that are not empty. x and y position is in tile units. + * + * Example of getting tile: + * Tile *tile = layer->getTileData(0, 4) + * + * @param x X position in tile units + * @param y Y position in tile units + * @return pointer to tile, if it exists. nullptr otherwise. + */ +tson::Tile *tson::Layer::getTileData(int x, int y) +{ + return (m_tileData.count({x, y}) > 0) ? m_tileData[{x,y}] : nullptr; +} + +/*! + * Used for getting the tson::Map who is the parent of this Layer. + * @return a pointer to the tson::Map where this layer is contained. + */ +tson::Map *tson::Layer::getMap() const +{ + return m_map; +} + +/*! + * + * This is only supported for non-infinite maps! + * + * @param mapSize The size of the map + * @param isInfiniteMap Whether or not the current map is infinte. + */ +void tson::Layer::createTileData(const Vector2i &mapSize, bool isInfiniteMap) +{ + size_t x = 0; + size_t y = 0; + if(!isInfiniteMap) + { + std::for_each(m_data.begin(), m_data.end(), [&](uint32_t tileId) + { + if (static_cast(x) == mapSize.x) + { + ++y; + x = 0; + } + + if (tileId > 0 && m_tileMap->count(tileId) > 0) + { + m_tileData[{static_cast(x), static_cast(y)}] = m_tileMap->at(tileId); + m_tileObjects[{static_cast(x), static_cast(y)}] = {{static_cast(x), static_cast(y)}, m_tileData[{static_cast(x), static_cast(y)}]}; + } + else if(tileId > 0 && m_tileMap->count(tileId) == 0) //Tile with flip flags! + { + queueFlaggedTile(x, y, tileId); + } + x++; + }); + + } +} + +std::map, tson::TileObject> &tson::Layer::getTileObjects() +{ + return m_tileObjects; +} + +tson::TileObject *tson::Layer::getTileObject(int x, int y) +{ + return (m_tileObjects.count({x, y}) > 0) ? &m_tileObjects[{x,y}] : nullptr; +} + +const std::set &tson::Layer::getUniqueFlaggedTiles() const +{ + return m_uniqueFlaggedTiles; +} + +void tson::Layer::resolveFlaggedTiles() +{ + std::for_each(m_flaggedTiles.begin(), m_flaggedTiles.end(), [&](const tson::FlaggedTile &tile) + { + if (tile.id > 0 && m_tileMap->count(tile.id) > 0) + { + m_tileData[{static_cast(tile.x), static_cast(tile.y)}] = m_tileMap->at(tile.id); + m_tileObjects[{static_cast(tile.x), static_cast(tile.y)}] = {{static_cast(tile.x), static_cast(tile.y)}, m_tileData[{static_cast(tile.x), static_cast(tile.y)}]}; + } + }); +} + +/*! + * 'tintcolor': Hex-formatted color (#RRGGBB or #AARRGGBB) that is multiplied with any graphics drawn by this layer or any child layers (optional). + * + * @return tintcolor + */ +const tson::Colori &tson::Layer::getTintColor() const +{ + return m_tintColor; +} + +/*! + * New in Tiled v1.5 + * Gets the parallax factor for current layer. Defaults to 1. + * @return A vector with the x and y values of the parallax factor. + */ +const tson::Vector2f &tson::Layer::getParallax() const +{ + return m_parallax; +} + +/*! + * New in Tiled v1.8 + * 'repeatx': Whether the image drawn by this layer is repeated along the X axis. + * @return true if image layer is repeated along the X axis, false otherwise. + */ +bool tson::Layer::hasRepeatX() const +{ + return m_repeatX; +} + +/*! + * New in Tiled v1.8 + * 'repeatx': Whether the image drawn by this layer is repeated along the Y axis. + * @return true if image layer is repeated along the Y axis, false otherwise. + */ +bool tson::Layer::hasRepeatY() const +{ + return m_repeatY; +} + +const std::string &tson::Layer::getClassType() const +{ + return m_classType; +} + +#endif //TILESON_LAYER_HPP + +/*** End of inlined file: Layer.hpp ***/ + + +/*** Start of inlined file: Tileset.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_TILESET_HPP +#define TILESON_TILESET_HPP + +//#include "../external/json.hpp" + + +/*** Start of inlined file: Transformations.hpp ***/ +// +// Created by robin on 04.04.2021. +// + +#ifndef TILESON_TRANSFORMATIONS_HPP +#define TILESON_TRANSFORMATIONS_HPP + +namespace tson +{ + class Transformations + { + public: + inline Transformations() = default; + inline explicit Transformations(IJson &json); + inline bool parse(IJson &json); + + inline bool allowHflip() const; + inline bool allowPreferuntransformed() const; + inline bool allowRotation() const; + inline bool allowVflip() const; + + private: + bool m_hflip {}; /*! hflip: Whether the tiles in this set can be flipped horizontally (default false) */ + bool m_preferuntransformed {}; /*! preferuntransformed: Whether untransformed tiles remain preferred, otherwise transformed tiles are used to produce more variations (default false) */ + bool m_rotate {}; /*! rotate: Whether the tiles in this set can be rotated in 90 degree increments (default false) */ + bool m_vflip {}; /*! vflip: Whether the tiles in this set can be flipped vertically (default false) */ + }; + + Transformations::Transformations(IJson &json) + { + parse(json); + } + + bool Transformations::parse(IJson &json) + { + if(json.count("hflip") > 0) m_hflip = json["hflip"].get(); //Optional + if(json.count("preferuntransformed") > 0) m_preferuntransformed = json["preferuntransformed"].get(); //Optional + if(json.count("rotate") > 0) m_rotate = json["rotate"].get(); //Optional + if(json.count("vflip") > 0) m_vflip = json["vflip"].get(); //Optional + + return true; + } + + /*! + * + * @return hflip: Whether the tiles in this set can be flipped horizontally (default false) + */ + bool Transformations::allowHflip() const + { + return m_hflip; + } + + /*! + * + * @return preferuntransformed: Whether untransformed tiles remain preferred, otherwise transformed tiles are used to produce more variations (default false) + */ + bool Transformations::allowPreferuntransformed() const + { + return m_preferuntransformed; + } + + /*! + * + * @return rotate: Whether the tiles in this set can be rotated in 90 degree increments (default false) + */ + bool Transformations::allowRotation() const + { + return m_rotate; + } + + /*! + * + * @return vflip: Whether the tiles in this set can be flipped vertically (default false) + */ + bool Transformations::allowVflip() const + { + return m_vflip; + } +} + +#endif //TILESON_TRANSFORMATIONS_HPP + +/*** End of inlined file: Transformations.hpp ***/ + + +/*** Start of inlined file: WangSet.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_WANGSET_HPP +#define TILESON_WANGSET_HPP + +//#include "../external/json.hpp" + +/*** Start of inlined file: WangColor.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_WANGCOLOR_HPP +#define TILESON_WANGCOLOR_HPP + +//#include "../external/json.hpp" + +namespace tson +{ + class WangColor + { + public: + inline WangColor() = default; + inline explicit WangColor(IJson &json, tson::Map *map); + inline bool parse(IJson &json, tson::Map *map); + + [[nodiscard]] inline const Colori &getColor() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline float getProbability() const; + [[nodiscard]] inline int getTile() const; + + inline PropertyCollection &getProperties(); + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + + private: + tson::Colori m_color; /*! 'color': Hex-formatted color (#RRGGBB or #AARRGGBB) */ + std::string m_name; /*! 'name': Name of the Wang color */ + float m_probability{}; /*! 'probability': Probability used when randomizing */ + int m_tile{}; /*! 'tile': Local ID of tile representing the Wang color */ + + //New in Tiled v1.5 + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + tson::Map * m_map; + std::string m_classType {}; /*! 'class': The class of this map (since 1.9, defaults to “”). */ + std::shared_ptr m_class {}; + + }; +} + +tson::WangColor::WangColor(IJson &json, tson::Map *map) +{ + parse(json, map); +} + +bool tson::WangColor::parse(IJson &json, tson::Map *map) +{ + m_map = map; + bool allFound = true; + + if(json.count("color") > 0) m_color = tson::Colori(json["color"].get()); else allFound = false; + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + if(json.count("probability") > 0) m_probability = json["probability"].get(); else allFound = false; + if(json.count("tile") > 0) m_tile = json["tile"].get(); else allFound = false; + if(json.count("class") > 0) m_classType = json["class"].get(); //Optional + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item); }); + } + + return allFound; +} + +/*! + * 'color': Color object created from hex-formatted string (#RRGGBB or #AARRGGBB) + * @return + */ +const tson::Colori &tson::WangColor::getColor() const +{ + return m_color; +} + +/*! + * 'name': Name of the Wang color + * @return + */ +const std::string &tson::WangColor::getName() const +{ + return m_name; +} + +/*! + * 'probability': Probability used when randomizing + * @return + */ +float tson::WangColor::getProbability() const +{ + return m_probability; +} + +/*! + * 'tile': Local ID of tile representing the Wang color + * @return + */ +int tson::WangColor::getTile() const +{ + return m_tile; +} + +/*! + * New property in Tiled v1.5 when data is contained in 'colors' of a wangset + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::WangColor::getProperties() +{ + return m_properties; +} + +/*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ +template +T tson::WangColor::get(const std::string &name) +{ + return m_properties.getValue(name); +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::WangColor::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + + return nullptr; +} + +const std::string &tson::WangColor::getClassType() const +{ + return m_classType; +} + +#endif //TILESON_WANGCOLOR_HPP + +/*** End of inlined file: WangColor.hpp ***/ + + + +/*** Start of inlined file: WangTile.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_WANGTILE_HPP +#define TILESON_WANGTILE_HPP + +//#include "../external/json.hpp" + +namespace tson +{ + class WangTile + { + public: + inline WangTile() = default; + inline explicit WangTile(IJson &json); + inline bool parse(IJson &json); + + [[nodiscard]] inline bool hasDFlip() const; + [[nodiscard]] inline bool hasHFlip() const; + [[nodiscard]] inline uint32_t getTileid() const; + [[nodiscard]] inline bool hasVFlip() const; + + [[nodiscard]] inline const std::vector &getWangIds() const; + + private: + bool m_dflip{}; /*! 'dflip': Tile is flipped diagonally */ + bool m_hflip{}; /*! 'hflip': Tile is flipped horizontally */ + uint32_t m_tileid{}; /*! 'tileid': Local ID of tile */ + bool m_vflip{}; /*! 'vflip': Tile is flipped vertically */ + std::vector m_wangId; /*! 'wangid': Array of Wang color indexes (uchar[8])*/ + }; +} + +tson::WangTile::WangTile(IJson &json) +{ + parse(json); +} + +/*! + * Parses a wang tile from Tiled json. + * @param json A Tiled json file + * @return true if all mandatory fields were found. False otherwise. + */ +bool tson::WangTile::parse(IJson &json) +{ + bool allFound = true; + + if(json.count("dflip") > 0) m_dflip = json["dflip"].get(); //Removed in Tiled v1.5 and is now optional + if(json.count("hflip") > 0) m_hflip = json["hflip"].get(); //Removed in Tiled v1.5 and is now optional + if(json.count("vflip") > 0) m_vflip = json["vflip"].get(); //Removed in Tiled v1.5 and is now optional + + if(json.count("tileid") > 0) m_tileid = json["tileid"].get(); else allFound = false; + if(json.count("wangid") > 0 && json["wangid"].isArray()) + { + auto &wangid = json.array("wangid"); + std::for_each(wangid.begin(), wangid.end(), [&](std::unique_ptr &item) { m_wangId.emplace_back(item->get()); }); + } + + return allFound; +} + +/*! + * 'dflip': Tile is flipped diagonally + * + * NB! This property got removed in Tiled v1.5 + * @return + */ +bool tson::WangTile::hasDFlip() const +{ + return m_dflip; +} + +/*! + * 'hflip': Tile is flipped horizontally + * + * NB! This property got removed in Tiled v1.5 + * @return + */ +bool tson::WangTile::hasHFlip() const +{ + return m_hflip; +} + +/*! + * 'tileid': Local ID of tile + * @return + */ +uint32_t tson::WangTile::getTileid() const +{ + return m_tileid; +} + +/*! + * 'vflip': Tile is flipped vertically + * + * NB! This property got removed in Tiled v1.5 + * @return + */ +bool tson::WangTile::hasVFlip() const +{ + return m_vflip; +} + +/*! + * 'wangid': Array of Wang color indexes (uchar[8]) + * @return + */ +const std::vector &tson::WangTile::getWangIds() const +{ + return m_wangId; +} + +#endif //TILESON_WANGTILE_HPP + +/*** End of inlined file: WangTile.hpp ***/ + +namespace tson +{ + class WangSet + { + public: + inline WangSet() = default; + inline explicit WangSet(IJson &json, tson::Map *map); + inline bool parse(IJson &json, tson::Map *map); + + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline int getTile() const; + + [[nodiscard]] inline const std::vector &getWangTiles() const; + [[nodiscard]] inline const std::vector &getCornerColors() const; + [[nodiscard]] inline const std::vector &getEdgeColors() const; + + inline tson::WangColor * getColor(const std::string &name); + inline const std::vector &getColors() const; + inline PropertyCollection &getProperties(); + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + + private: + + inline bool parseTiled15Props(IJson &json); + + std::string m_name; /*! 'name': Name of the Wang set */ + int m_tile{}; /*! 'tile': Local ID of tile representing the Wang set */ + std::vector m_wangTiles; /*! 'wangtiles': Array of Wang tiles */ + std::vector m_cornerColors; /*! 'cornercolors': Array of Wang colors */ + std::vector m_edgeColors; /*! 'edgecolors': Array of Wang colors */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + + //Tiled v1.5 + std::vector m_colors; /*! 'colors': */ + + tson::Map * m_map; + std::string m_classType {}; /*! 'class': The class of this map (since 1.9, defaults to “”). */ + std::shared_ptr m_class {}; + + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::WangSet::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +tson::WangSet::WangSet(IJson &json, tson::Map *map) +{ + parse(json, map); +} + +bool tson::WangSet::parse(IJson &json, tson::Map *map) +{ + m_map = map; + bool allFound = true; + + if(json.count("tile") > 0) m_tile = json["tile"].get(); else allFound = false; + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + + //More advanced data + if(json.count("wangtiles") > 0 && json["wangtiles"].isArray()) + { + auto &wangtiles = json.array("wangtiles"); + std::for_each(wangtiles.begin(), wangtiles.end(), [&](std::unique_ptr &item) { m_wangTiles.emplace_back(*item); }); + } + if(json.count("cornercolors") > 0 && json["cornercolors"].isArray()) + { + auto &cornercolors = json.array("cornercolors"); + std::for_each(cornercolors.begin(), cornercolors.end(), [&](std::unique_ptr &item) { m_cornerColors.emplace_back(*item, m_map); }); + } + if(json.count("edgecolors") > 0 && json["edgecolors"].isArray()) + { + auto &edgecolors = json.array("edgecolors"); + std::for_each(edgecolors.begin(), edgecolors.end(), [&](std::unique_ptr &item) { m_edgeColors.emplace_back(*item, m_map); }); + } + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item); }); + } + + if(json.count("class") > 0) m_classType = json["class"].get(); //Optional + + if(!parseTiled15Props(json)) + allFound = false; + + return allFound; +} + +/*! + * Parsing data related to Tiled v1.5 changes + * @param json The json containing data + * @return Returns true if success + */ + +bool tson::WangSet::parseTiled15Props(tson::IJson &json) +{ + if(json.count("colors") > 0 && json["colors"].isArray()) + { + auto &colors = json.array("colors"); + std::for_each(colors.begin(), colors.end(), [&](std::unique_ptr &item) { m_colors.emplace_back(*item, m_map); }); + } + return true; +} + +/*! + * 'name': Name of the Wang set + * @return + */ +const std::string &tson::WangSet::getName() const +{ + return m_name; +} + +/*! + * 'tile': Local ID of tile representing the Wang set + * @return + */ +int tson::WangSet::getTile() const +{ + return m_tile; +} + +/*! + * 'wangtiles': Array of Wang tiles + * @return + */ +const std::vector &tson::WangSet::getWangTiles() const +{ + return m_wangTiles; +} + +/*! + * 'cornercolors': Array of Wang colors + * @return + */ +const std::vector &tson::WangSet::getCornerColors() const +{ + return m_cornerColors; +} + +/*! + * 'edgecolors': Array of Wang colors + * @return + */ +const std::vector &tson::WangSet::getEdgeColors() const +{ + return m_edgeColors; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::WangSet::getProperties() +{ + return m_properties; +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::WangSet::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + + return nullptr; +} + +/*! + * Get Wangset colors (new in Tiled v1.5) + * @return + */ +const std::vector &tson::WangSet::getColors() const +{ + return m_colors; +} + +/*! + * NB! Will only work with maps created/modified by Tiled v1.5 or later! + * Gets a color from a wangset by its name. + * + * @param name 'name' of WangColor + * @return The WangColor with the given name or nullptr if it doesn't exist. + */ +tson::WangColor *tson::WangSet::getColor(const std::string &name) +{ + auto color = std::find_if(m_colors.begin(), m_colors.end(), [&](const auto &c) { return c.getName() == name; }); + + if(color != m_colors.end()) + return &color.operator*(); + + return nullptr; +} + +const std::string &tson::WangSet::getClassType() const +{ + return m_classType; +} + +#endif //TILESON_WANGSET_HPP + +/*** End of inlined file: WangSet.hpp ***/ + + +/*** Start of inlined file: Tile.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_TILE_HPP +#define TILESON_TILE_HPP + +//#include "../external/json.hpp" + + +/*** Start of inlined file: Frame.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_FRAME_HPP +#define TILESON_FRAME_HPP + +//#include "../external/json.hpp" + +namespace tson +{ + class Frame + { + public: + inline Frame() = default; + inline Frame(int duration, uint32_t tileId); + inline explicit Frame(IJson &json); + + inline bool parse(IJson &json); + + [[nodiscard]] inline int getDuration() const; + [[nodiscard]] inline uint32_t getTileId() const; + + private: + int m_duration {}; /*! 'duration': Frame duration in milliseconds */ + uint32_t m_tileId {}; /*! 'tileid': Local tile ID representing this frame */ + }; +} + +/*! + * + * @param duration duration in milliseconds + * @param tileId TileId + */ +tson::Frame::Frame(int duration, uint32_t tileId) : m_duration {duration}, m_tileId {tileId} +{ + +} + +/*! + * Parses frame data from json + * @param json + */ +tson::Frame::Frame(IJson &json) +{ + parse(json); +} + +/*! + * Parses frame data from json + * @param json + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Frame::parse(IJson &json) +{ + bool allFound = true; + + if(json.count("duration") > 0) m_duration = json["duration"].get(); else allFound = false; + if(json.count("tileid") > 0) m_tileId = json["tileid"].get() + 1; else allFound = false; + + return allFound; +} + +/*! + * 'duration': Frame duration in milliseconds + * @return Duration in milliseconds + */ +int tson::Frame::getDuration() const +{ + return m_duration; +} + +/*! + * 'tileid': Local tile ID representing this frame + * @return tile id + */ +uint32_t tson::Frame::getTileId() const +{ + return m_tileId; +} + +#endif //TILESON_FRAME_HPP + +/*** End of inlined file: Frame.hpp ***/ + + +/*** Start of inlined file: Animation.hpp ***/ +// +// Created by robin on 21.05.2021. +// + +#ifndef TILESON_ANIMATION_HPP +#define TILESON_ANIMATION_HPP + +namespace tson +{ + class Animation + { + public: + inline Animation() = default; + inline Animation(const std::vector &frames) : m_frames {frames} {}; + + inline void update(float timeDeltaMs); + inline void reset(); + + inline void setFrames(const std::vector &frames); + inline void setCurrentFrame(uint32_t currentFrame); + inline void setTimeDelta(float timeDelta); + + inline const std::vector &getFrames() const; + inline const tson::Frame *getCurrentFrame() const; + inline uint32_t getCurrentFrameNumber() const; + inline uint32_t getCurrentTileId() const; + inline float getTimeDelta() const; + + inline bool any() const; + inline size_t size() const; + + private: + inline int nextFrame(); + std::vector m_frames; + uint32_t m_currentFrame {0}; + float m_timeDelta {0}; + }; + + const std::vector &Animation::getFrames() const + { + return m_frames; + } + + /*! + * Resets the current frame and time delta to 0. + */ + void Animation::reset() + { + m_currentFrame = 0; + m_timeDelta = 0.f; + } + + /*! + * Gets the current frame or nullptr if no frame is found. + * @return + */ + const tson::Frame *Animation::getCurrentFrame() const + { + return (m_frames.size() == 0 || m_currentFrame >= m_frames.size()) ? nullptr : &m_frames.at(m_currentFrame); + } + + size_t Animation::size() const + { + return m_frames.size(); + } + + /*! + * Update animation based on the fra + * @param timedeltaMs Time in milliseconds + */ + void Animation::update(float timeDeltaMs) + { + const tson::Frame *frame = getCurrentFrame(); + if(frame != nullptr) + { + m_timeDelta += timeDeltaMs; + if(m_timeDelta >= frame->getDuration()) + { + m_timeDelta = static_cast((int32_t)m_timeDelta % frame->getDuration()); + m_currentFrame = nextFrame(); + } + } + } + + int Animation::nextFrame() + { + return (m_currentFrame+1 >= m_frames.size()) ? 0 : m_currentFrame + 1; + } + + float Animation::getTimeDelta() const + { + return m_timeDelta; + } + + uint32_t Animation::getCurrentFrameNumber() const + { + return m_currentFrame; + } + + uint32_t Animation::getCurrentTileId() const + { + return (getCurrentFrame() != nullptr) ? getCurrentFrame()->getTileId() : 0; + } + + void Animation::setFrames(const std::vector &frames) + { + m_frames = frames; + } + + void Animation::setCurrentFrame(uint32_t currentFrame) + { + m_currentFrame = currentFrame; + } + + void Animation::setTimeDelta(float timeDelta) + { + m_timeDelta = timeDelta; + } + + /*! + * True if any frames exists, false otherwise + * @return + */ + bool Animation::any() const + { + return m_frames.size() > 0; + } +} + +#endif //TILESON_ANIMATION_HPP + +/*** End of inlined file: Animation.hpp ***/ + +namespace tson +{ + class Tileset; + class TiledClass; + + class Tile + { + public: + inline Tile() = default; + inline Tile(IJson &json, tson::Tileset *tileset, tson::Map *map); + inline Tile(uint32_t id, tson::Tileset *tileset, tson::Map *map); + inline Tile(uint32_t id, tson::Map *map); //v1.2.0 + inline bool parse(IJson &json, tson::Tileset *tileset, tson::Map *map); + inline bool parseId(IJson &json); + + [[nodiscard]] inline uint32_t getId() const; + [[nodiscard]] inline const fs::path &getImage() const; + [[nodiscard]] inline const Vector2i &getImageSize() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + + //[[nodiscard]] inline const std::vector &getAnimation() const; + [[nodiscard]] inline tson::Animation &getAnimation(); + [[nodiscard]] inline Layer &getObjectgroup(); + [[nodiscard]] inline PropertyCollection &getProperties(); + [[nodiscard]] inline const std::vector &getTerrain() const; + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + //v1.2.0-stuff + inline void setProperties(const tson::PropertyCollection &properties); + + [[nodiscard]] inline tson::Tileset * getTileset() const; + [[nodiscard]] inline tson::Map * getMap() const; + [[nodiscard]] inline const tson::Rect &getDrawingRect() const; + [[nodiscard]] inline const Rect &getSubRectangle() const; + + inline const tson::Vector2f getPosition(const std::tuple &tileDataPos); + inline const tson::Vector2i getPositionInTileUnits(const std::tuple &tileDataPos); + [[nodiscard]] inline const tson::Vector2i getTileSize() const; /*! Declared in tileson_forward.hpp */ + + [[nodiscard]] inline TileFlipFlags getFlipFlags() const; + inline bool hasFlipFlags(TileFlipFlags flags); + [[nodiscard]] inline uint32_t getGid() const; + + inline void addTilesetAndPerformCalculations(tson::Tileset *tileset); //v1.2.0 + + private: + tson::Animation m_animation{}; /*! 'animation': Array of Frames */ + uint32_t m_id {}; /*! 'id': Local ID of the tile */ + + fs::path m_image; /*! 'image': Image representing this tile (optional)*/ + + tson::Vector2i m_imageSize; /*! x = 'imagewidth' and y = 'imageheight': in pixels */ + tson::Layer m_objectgroup; /*! 'objectgroup': Layer with type objectgroup (optional) */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + std::vector m_terrain; /*! 'terrain': Index of terrain for each corner of tile */ + std::string m_type; /*! 'type': The type of the tile (optional) */ + + //v1.2.0-stuff + uint32_t m_gid {}; /*! id without flip flags */ + tson::Tileset * m_tileset; /*! A pointer to the tileset where this Tile comes from */ + tson::Map * m_map; /*! A pointer to the map where this tile is contained */ + tson::Rect m_drawingRect; /*! A rect that shows which part of the tileset that is used for this tile */ + tson::Rect m_subRect; /*! Tiled 1.9: Contains the newly added sub-rectangle variables: 'x', 'y', 'width' and 'height'*/ + tson::TileFlipFlags m_flipFlags = TileFlipFlags::None; /*! Resolved using bit 32, 31 and 30 from gid */ + inline void performDataCalculations(); /*! Declared in tileson_forward.hpp - Calculate all the values used in the tile class. */ + inline void manageFlipFlagsByIdThenRemoveFlags(uint32_t &id); + friend class Layer; + std::shared_ptr m_class {}; + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::Tile::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +tson::Tile::Tile(IJson &json, tson::Tileset *tileset, tson::Map *map) +{ + parse(json, tileset, map); +} + +/*! + * Used in cases where you have a tile without any property + * @param id + */ +tson::Tile::Tile(uint32_t id, tson::Tileset *tileset, tson::Map *map) : m_id {id}, m_gid {id} +{ + m_tileset = tileset; + m_map = map; + manageFlipFlagsByIdThenRemoveFlags(m_gid); + performDataCalculations(); +} + +/*! + * Used in cases where you have a FLIP FLAGGED tile + * @param id + */ +tson::Tile::Tile(uint32_t id, tson::Map *map) : m_id {id}, m_gid {id} +{ + m_map = map; + manageFlipFlagsByIdThenRemoveFlags(m_gid); +} + +/*! + * For flip flagged tiles, tilesets must be resolved later. + * @param tileset + */ +void tson::Tile::addTilesetAndPerformCalculations(tson::Tileset *tileset) +{ + m_tileset = tileset; + performDataCalculations(); +} + +/*! + * Parses a tile from a Tiled json. id on tile is store as id + 1 to match the references in data containers. + * @param json + * @return + */ +bool tson::Tile::parse(IJson &json, tson::Tileset *tileset, tson::Map *map) +{ + m_tileset = tileset; + m_map = map; + + if(json.count("image") > 0) m_image = fs::path(json["image"].get()); //Optional + + bool allFound = parseId(json); + + if(json.count("type") > 0) m_type = json["type"].get(); //Optional + else if(json.count("class") > 0) m_type = json["class"].get(); //Tiled v1.9 renamed 'type' to 'class' + + if(json.count("objectgroup") > 0) m_objectgroup = tson::Layer(json["objectgroup"], m_map); //Optional + + if(json.count("imagewidth") > 0 && json.count("imageheight") > 0) + m_imageSize = {json["imagewidth"].get(), json["imageheight"].get()}; //Optional + + m_subRect = {0,0, m_imageSize.x, m_imageSize.y}; + if(json.count("x") > 0) m_subRect.x = json["x"].get(); //Optional + if(json.count("y") > 0) m_subRect.y = json["y"].get(); //Optional + if(json.count("width") > 0) m_subRect.width = json["width"].get(); //Optional + if(json.count("height") > 0) m_subRect.height = json["height"].get(); //Optional + + //More advanced data + if(json.count("animation") > 0 && json["animation"].isArray()) + { + auto &animation = json.array("animation"); + std::vector frames; + std::for_each(animation.begin(), animation.end(), [&](std::unique_ptr &item) { frames.emplace_back(*item); }); + if(frames.size() > 0) + { + m_animation.setFrames(frames); + } + } + if(json.count("terrain") > 0 && json["terrain"].isArray()) + { + auto &terrain = json.array("terrain"); + std::for_each(terrain.begin(), terrain.end(), [&](std::unique_ptr &item) { m_terrain.emplace_back(item->get()); }); + } + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item); }); + } + + performDataCalculations(); + + return allFound; +} + +/*! + * 'id': Local ID of the tile + * @return + */ +uint32_t tson::Tile::getId() const +{ + return m_id; +} + +/*! + * 'image': Image representing this tile (optional) + * @return + */ + +const fs::path &tson::Tile::getImage() const { return m_image; } + +/*! + * x = 'imagewidth' and y = 'imageheight': in pixels + * @return + */ +const tson::Vector2i &tson::Tile::getImageSize() const +{ + return m_imageSize; +} + +/*! + * 'type': The type of the tile (optional) + * This was renamed to 'class' in Tiled v1.9 + * @return + */ +const std::string &tson::Tile::getType() const +{ + return m_type; +} + +/*! + * 'class': String assigned to class field in editor (optional) + * This was renamed from 'type' to 'class' in Tiled v1.9 + * @return + */ +const std::string &tson::Tile::getClassType() const +{ + return m_type; +} + +/*! + * 'animation': Array of Frames + * @return + */ +tson::Animation &tson::Tile::getAnimation() +{ + return m_animation; +} + +/*! + * 'objectgroup': Layer with type objectgroup (optional) + * @return + */ +tson::Layer &tson::Tile::getObjectgroup() +{ + return m_objectgroup; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::Tile::getProperties() +{ + return m_properties; +} + +/*! + * 'terrain': Index of terrain for each corner of tile + * @return + */ +const std::vector &tson::Tile::getTerrain() const +{ + return m_terrain; +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Tile::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + + return nullptr; +} + +/*! + * Used for getting the tson::Tileset who is the parent of this Tile. + * @return a pointer to the tson::Tileset where this tile is contained. + */ +tson::Tileset *tson::Tile::getTileset() const +{ + return m_tileset; +} + +/*! + * Used for getting the tson::Map who is the parent of this Tile. + * @return a pointer to the tson::Map where this tile is contained. + */ +tson::Map *tson::Tile::getMap() const +{ + return m_map; +} + +/*! + * Get the information needed to draw the Tile based on its current tileset + * @return a tson::Rect containing the information needed to draw the tile. + */ +const tson::Rect &tson::Tile::getDrawingRect() const +{ + return m_drawingRect; +} + +/*! + * Helper function. + * + * Get the position of the tile in tile units. + * The size of each unit is determined by the tile size property of the map. + * Example: If the tile size is 16x16 in the map, a tile unit of [2, 4] would be [32, 64] in pixels. + * If you want the position in pixels: use getPosition() instead. + * + * @return Position of tile in tile units. + */ +const tson::Vector2i tson::Tile::getPositionInTileUnits(const std::tuple &tileDataPos) +{ + return {std::get<0>(tileDataPos), std::get<1>(tileDataPos)}; +} + +void tson::Tile::manageFlipFlagsByIdThenRemoveFlags(uint32_t &id) +{ + if (id & FLIPPED_HORIZONTALLY_FLAG) m_flipFlags |= TileFlipFlags::Horizontally; + if (id & FLIPPED_VERTICALLY_FLAG) m_flipFlags |= TileFlipFlags::Vertically; + if (id & FLIPPED_DIAGONALLY_FLAG) m_flipFlags |= TileFlipFlags::Diagonally; + + id &= ~(FLIPPED_HORIZONTALLY_FLAG | FLIPPED_VERTICALLY_FLAG | FLIPPED_DIAGONALLY_FLAG); +} + +tson::TileFlipFlags tson::Tile::getFlipFlags() const +{ + return m_flipFlags; +} + +/*! + * + * @param flags Which flags to check for. Several flags can be checked at once using the bitwise or operator. + * Example: + * hasFlipFlags(TileFlipFlags::Vertically | TileFlipFlags::Horizontally) + * + * @return true if the flag(s) specified are set + */ +bool tson::Tile::hasFlipFlags(tson::TileFlipFlags flags) +{ + return ((m_flipFlags & flags) == flags) ? true : false; +} + +uint32_t tson::Tile::getGid() const +{ + return m_gid; +} + +void tson::Tile::setProperties(const tson::PropertyCollection &properties) +{ + m_properties = properties; +} + +/*! + * Tiled 1.9: Contains the newly added sub-rectangle variables: 'x', 'y', 'width' and 'height' + * @return A tson::Rect with the 'x', 'y', 'width' and 'height' values + */ +const tson::Rect &tson::Tile::getSubRectangle() const +{ + return m_subRect; +} + +#endif //TILESON_TILE_HPP + +/*** End of inlined file: Tile.hpp ***/ + + +/*** Start of inlined file: Terrain.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_TERRAIN_HPP +#define TILESON_TERRAIN_HPP + +//#include "../external/json.hpp" + +namespace tson +{ + class Terrain + { + public: + inline Terrain() = default; + inline Terrain(std::string name, int tile); + inline explicit Terrain(IJson &json); + + inline bool parse(IJson &json); + + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline int getTile() const; + [[nodiscard]] inline PropertyCollection &getProperties(); + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + private: + std::string m_name; /*! 'name': Name of terrain */ + int m_tile {}; /*! 'tile': Local ID of tile representing terrain */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::Terrain::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +tson::Terrain::Terrain(std::string name, int tile) : m_name {std::move(name)}, m_tile {tile} +{ + +} + +tson::Terrain::Terrain(IJson &json) +{ + parse(json); +} + +bool tson::Terrain::parse(IJson &json) +{ + bool allFound = true; + + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + if(json.count("tile") > 0) m_tile = json["tile"].get(); else allFound = false; + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item); }); + } + + return allFound; +} + +/*! + * 'name': Name of terrain + * @return + */ +const std::string &tson::Terrain::getName() const +{ + return m_name; +} + +/*! + * 'tile': Local ID of tile representing terrain + * @return + */ +int tson::Terrain::getTile() const +{ + return m_tile; +} + +/*! + * 'properties': A list of properties (name, value, type). *Missing from the official Tiled documentation...* + * @return + */ +tson::PropertyCollection &tson::Terrain::getProperties() +{ + return m_properties; +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Terrain::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + return nullptr; +} + +#endif //TILESON_TERRAIN_HPP + +/*** End of inlined file: Terrain.hpp ***/ + + +/*** Start of inlined file: Grid.hpp ***/ +// +// Created by robin on 22.03.2020. +// + +#ifndef TILESON_GRID_HPP +#define TILESON_GRID_HPP + +#include +//#include "../external/json.hpp" + +namespace tson +{ + class Grid + { + public: + inline Grid() = default; + inline explicit Grid(IJson &json); + + inline bool parse(IJson &json); + + [[nodiscard]] inline const std::string &getOrientation() const; + [[nodiscard]] inline const Vector2i &getSize() const; + + private: + std::string m_orientation; /*! 'orientation': Orientation of the grid for the tiles in this tileset (orthogonal or isometric) */ + tson::Vector2i m_size; /*! 'width' and 'height': Size. */ + }; +} + +/*! + * Parses Tiled grid data from json + * @param json + */ +tson::Grid::Grid(IJson &json) +{ + parse(json); +} + +/*! + * Parses Tiled grid data from json + * @param json + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Grid::parse(IJson &json) +{ + bool allFound = true; + + if(json.count("orientation") > 0) m_orientation = json["orientation"].get(); //Optional + + if(json.count("width") > 0 && json.count("height") > 0) + m_size = {json["width"].get(), json["height"].get()}; else allFound = false; + + return allFound; +} + +/*! + * 'orientation': Orientation of the grid for the tiles in this tileset (orthogonal or isometric) + * @return orientation as string + */ +const std::string &tson::Grid::getOrientation() const +{ + return m_orientation; +} + +/*! + * 'width' and 'height': Size. + * @return size as int + */ +const tson::Vector2i &tson::Grid::getSize() const +{ + return m_size; +} + +#endif //TILESON_GRID_HPP + +/*** End of inlined file: Grid.hpp ***/ + +#include + +namespace tson +{ + class Map; + class Tileset + { + public: + inline Tileset() = default; + inline explicit Tileset(IJson &json, tson::Map *map); + inline bool parse(IJson &json, tson::Map *map); + + [[nodiscard]] inline int getColumns() const; + [[nodiscard]] inline int getFirstgid() const; + + [[nodiscard]] inline const fs::path &getImagePath() const; + [[nodiscard]] inline const fs::path &getImage() const; + [[nodiscard]] inline const Vector2i &getImageSize() const; + [[nodiscard]] inline int getMargin() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline int getSpacing() const; + [[nodiscard]] inline int getTileCount() const; + [[nodiscard]] inline const Vector2i &getTileSize() const; + [[nodiscard]] inline const Colori &getTransparentColor() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + [[nodiscard]] inline std::vector &getTiles(); + [[nodiscard]] inline const std::vector &getWangsets() const; + [[nodiscard]] inline PropertyCollection &getProperties(); + [[nodiscard]] inline const std::vector &getTerrains() const; + [[nodiscard]] inline const Vector2i &getTileOffset() const; + [[nodiscard]] inline const Grid &getGrid() const; + [[nodiscard]] inline TileRenderSize getTileRenderSize() const; + [[nodiscard]] inline FillMode getFillMode() const; + + inline tson::Tile * getTile(uint32_t id); + inline tson::Terrain * getTerrain(const std::string &name); + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + //v1.2.0-stuff + [[nodiscard]] inline tson::Map *getMap() const; + [[nodiscard]] inline ObjectAlignment getObjectAlignment() const; + + inline static tson::ObjectAlignment StringToAlignment(std::string_view str); + + //v1.3.0 + inline tson::Vector2i getMarginSpacingOffset(const tson::Vector2i &posInTileUnits); + inline tson::WangSet * getWangset(const std::string &name); + inline const Transformations &getTransformations() const; + + #ifndef TSON_TEST_ENABLED + private: + #endif + inline void generateMissingTiles(); + + int m_columns {}; /*! 'columns': The number of tile columns in the tileset */ + int m_firstgid {}; /*! 'firstgid': GID corresponding to the first tile in the set */ + + fs::path m_image; /*! 'image': Image used for tiles in this set */ + + tson::Vector2i m_imageSize; /*! x = 'imagewidth' and y = 'imageheight': in pixels */ + int m_margin {}; /*! 'margin': Buffer between image edge and first tile (pixels)*/ + std::string m_name; /*! 'name': Name given to this tileset */ + int m_spacing {}; /*! 'spacing': Spacing between adjacent tiles in image (pixels)*/ + int m_tileCount {}; /*! 'tilecount': The number of tiles in this tileset */ + tson::Vector2i m_tileSize; /*! x = 'tilewidth' and y = 'tileheight': Maximum size of tiles in this set */ + tson::Colori m_transparentColor; /*! 'transparentcolor': Hex-formatted color (#RRGGBB) (optional) */ + std::string m_type; /*! 'type': tileset (for tileset files, since 1.0) */ + + std::vector m_tiles; /*! 'tiles': Array of Tiles (optional) */ + std::vector m_wangsets; /*! 'wangsets':Array of Wang sets (since 1.1.5) */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + + std::vector m_terrains; /*! 'terrains': Array of Terrains (optional) */ + tson::Vector2i m_tileOffset; /*! 'x' and 'y': See (optional) */ + tson::Grid m_grid; /*! 'grid': This element is only used in case of isometric orientation, and determines + how tile overlays for terrain and collision information are rendered. */ + + //v1.2.0-stuff + tson::ObjectAlignment m_objectAlignment{tson::ObjectAlignment::Unspecified}; /*! 'objectalignment': Alignment to use for tile objects. Tiled 1.4.*/ + tson::Map * m_map; /*! The map who owns this tileset */ + + //v1.3.0-stuff + fs::path m_source {}; /*! 'source': exists only when tileset is contained in an external file*/ + fs::path m_path {}; /*! Has the full path to the tileset if 'source' has an existing value */ + Transformations m_transformations {}; /*! New in Tiled v1.5 - This element is used to describe which transformations can be applied to + the tiles (e.g. to extend a Wang set by transforming existing tiles).*/ + + //v1.4.0-stuff + TileRenderSize m_tileRenderSize {}; /*! 'tilerendersize': The size to use when rendering tiles from this tileset on a tile layer. Valid values are 'tile' (the default) and 'grid'. + * When set to 'grid', the tile is drawn at the tile grid size of the map. (since 1.9)*/ + FillMode m_fillMode {}; /*! 'fillmode': The fill mode to use when rendering tiles from this tileset. Valid values are 'stretch' (the default) and 'preserve-aspect-fit'. + * Only relevant when the tiles are not rendered at their native size, so this applies to resized tile objects or in combination with 'tilerendersize' set to 'grid'. (since 1.9)*/ + + std::string m_classType {}; /*! 'class': The class of this map (since 1.9, defaults to “”). */ + std::shared_ptr m_class {}; + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::Tileset::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +tson::Tileset::Tileset(IJson &json, tson::Map *map) +{ + parse(json, map); +} + +bool tson::Tileset::parse(IJson &json, tson::Map *map) +{ + m_map = map; + bool allFound = true; + + if(json.count("firstgid") > 0) m_firstgid = json["firstgid"].get(); else allFound = false; + + //Tileset is stored in external file if 'source' exists + if(json.count("source") > 0) + { + if(!allFound) + return allFound; + + std::string sourceStr = json["source"].get(); + m_source = fs::path(sourceStr); + m_path = json.directory() / m_source; + + if(!json.parse(m_path)) + return false; + } + + if(json.count("columns") > 0) m_columns = json["columns"].get(); else allFound = false; + + if(json.count("image") > 0) m_image = fs::path(json["image"].get()); else allFound = false; + + if(json.count("margin") > 0) m_margin = json["margin"].get(); else allFound = false; + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + if(json.count("spacing") > 0) m_spacing = json["spacing"].get(); else allFound = false; + if(json.count("tilecount") > 0) m_tileCount = json["tilecount"].get(); else allFound = false; + if(json.count("transparentcolor") > 0) m_transparentColor = tson::Colori(json["transparentcolor"].get()); //Optional + if(json.count("type") > 0) m_type = json["type"].get(); + if(json.count("grid") > 0) m_grid = tson::Grid(json["grid"]); + if(json.count("class") > 0) m_classType = json["class"].get(); //Optional + + if(json.count("imagewidth") > 0 && json.count("imageheight") > 0) + m_imageSize = {json["imagewidth"].get(), json["imageheight"].get()}; else allFound = false; + if(json.count("tilewidth") > 0 && json.count("tileheight") > 0) + m_tileSize = {json["tilewidth"].get(), json["tileheight"].get()}; else allFound = false; + if(json.count("tileoffset") > 0) + m_tileOffset = {json["tileoffset"]["x"].get(), json["tileoffset"]["y"].get()}; + + if(json.count("tilerendersize") > 0) + { + std::string tileRenderStr = json["tilerendersize"].get(); + if(tileRenderStr == "tile") m_tileRenderSize = TileRenderSize::Tile; + else if(tileRenderStr == "grid") m_tileRenderSize = TileRenderSize::Grid; + } + + if(json.count("fillmode") > 0) + { + std::string fillmode = json["fillmode"].get(); + if(fillmode == "stretch") m_fillMode = FillMode::Stretch; + else if(fillmode == "preserve-aspect-fit") m_fillMode = FillMode::PreserveAspectFit; + } + + //More advanced data + if(json.count("wangsets") > 0 && json["wangsets"].isArray()) + { + auto &wangsets = json.array("wangsets"); + std::for_each(wangsets.begin(), wangsets.end(), [&](std::unique_ptr &item) { m_wangsets.emplace_back(*item, m_map); }); + } + if(json.count("tiles") > 0 && json["tiles"].isArray()) + { + auto &tiles = json.array("tiles"); + std::for_each(tiles.begin(), tiles.end(), [&](std::unique_ptr &item) { m_tiles.emplace_back(*item, this, m_map); }); + } + if(json.count("terrains") > 0 && json["terrains"].isArray()) + { + auto &terrains = json.array("terrains"); + std::for_each(terrains.begin(), terrains.end(), [&](std::unique_ptr &item) { m_terrains.emplace_back(*item); }); + } + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item); }); + } + + if(json.count("objectalignment") > 0) + { + std::string alignment = json["objectalignment"].get(); + m_objectAlignment = StringToAlignment(alignment); + } + + if(json.count("transformations") > 0) + { + m_transformations.parse(json["transformations"]); + } + + generateMissingTiles(); + + return allFound; +} + +/*! + * 'columns': The number of tile columns in the tileset + * @return + */ +int tson::Tileset::getColumns() const +{ + return m_columns; +} + +/*! + * 'firstgid': GID corresponding to the first tile in the set + * @return + */ +int tson::Tileset::getFirstgid() const +{ + return m_firstgid; +} + +/*! + * 'image': Image used for tiles in this set + * @return + */ + +const fs::path &tson::Tileset::getImagePath() const { return m_image; } + +/*! + * x = 'imagewidth' and y = 'imageheight': in pixels + * @return + */ +const tson::Vector2i &tson::Tileset::getImageSize() const +{ + return m_imageSize; +} + +/*! + * 'margin': Buffer between image edge and first tile (pixels) + * @return + */ +int tson::Tileset::getMargin() const +{ + return m_margin; +} + +/*! + * 'name': Name given to this tileset + * @return + */ +const std::string &tson::Tileset::getName() const +{ + return m_name; +} + +/*! + * 'spacing': Spacing between adjacent tiles in image (pixels) + * @return + */ +int tson::Tileset::getSpacing() const +{ + return m_spacing; +} + +/*! + * 'tilecount': The number of tiles in this tileset + * @return + */ +int tson::Tileset::getTileCount() const +{ + return m_tileCount; +} + +/*! + * x = 'tilewidth' and y = 'tileheight': Maximum size of tiles in this set + * @return + */ +const tson::Vector2i &tson::Tileset::getTileSize() const +{ + return m_tileSize; +} + +/*! + * 'transparentcolor': Color object created by hex-formatted color (#RRGGBB) (optional) + * @return + */ +const tson::Colori &tson::Tileset::getTransparentColor() const +{ + return m_transparentColor; +} + +/*! + * 'type': tileset (for tileset files, since 1.0) + * @return + */ +const std::string &tson::Tileset::getType() const +{ + return m_type; +} + +/*! + * 'image': Image used for tiles in this set + * @return + */ + +const fs::path &tson::Tileset::getImage() const { return m_image; } + +/*! + * 'tiles': Array of Tiles (optional) + * @return + */ +std::vector &tson::Tileset::getTiles() +{ + return m_tiles; +} + +/*! + * 'wangsets':Array of Wang sets (since Tiled 1.1.5) + * @return + */ +const std::vector &tson::Tileset::getWangsets() const +{ + return m_wangsets; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::Tileset::getProperties() +{ + return m_properties; +} + +/*! + * 'terrains': Array of Terrains (optional) + * @return + */ +const std::vector &tson::Tileset::getTerrains() const +{ + return m_terrains; +} + +/*! + * 'x' and 'y': See (optional) + * @return + */ +const tson::Vector2i &tson::Tileset::getTileOffset() const +{ + return m_tileOffset; +} + +/*! + * 'grid': This element is only used in case of isometric orientation, and determines + * how tile overlays for terrain and collision information are rendered. + * @return + */ +const tson::Grid &tson::Tileset::getGrid() const +{ + return m_grid; +} + +/*! + * Gets a tile by ID (Tiled ID + 1) + * @param id The ID of the tile stored in Tiled map + 1. Example: If ID was stored in Tiled map as 0, the corresponding value in Tileson is 1. + * This is to make sure the IDs of tiles matches their references in containers. + * @return A pointer to the Tile if found. nullptr otherwise. + */ +tson::Tile *tson::Tileset::getTile(uint32_t id) +{ + auto result = std::find_if(m_tiles.begin(), m_tiles.end(), [&](const tson::Tile & item) { return item.getId() == id;}); + if(result == m_tiles.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Get an existing Terrain object by name + * @param name + * @return A pointer to the Terrain if found. nullptr otherwise. + */ +tson::Terrain *tson::Tileset::getTerrain(const std::string &name) +{ + auto result = std::find_if(m_terrains.begin(), m_terrains.end(), [&](const tson::Terrain & item) { return item.getName() == name;}); + if(result == m_terrains.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Tileset::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + + return nullptr; +} + +/*! + * Tiled only has tiles with a property stored in the map. This function makes sure even the ones with no properties will exist. + */ +void tson::Tileset::generateMissingTiles() +{ + std::vector tileIds; + for(auto &tile : m_tiles) + tileIds.push_back(tile.getId()); + + for(uint32_t i = m_firstgid; i < m_firstgid + (uint32_t) m_tileCount; ++i) + { + if(std::count(tileIds.begin(), tileIds.end(), i) == 0) + { + m_tiles.emplace_back(Tile(i, this, m_map)); + } + } +} + +/*! + * Used for getting the tson::Map who is the parent of this Tileset. + * @return a pointer to the tson::Map where this tileset is contained. + */ +tson::Map *tson::Tileset::getMap() const +{ + return m_map; +} + +/*! + * + * @param str The string you want to convert + * @return Alignment enum based on the string from the input. + */ +tson::ObjectAlignment tson::Tileset::StringToAlignment(std::string_view str) +{ + if(str == "unspecified") return tson::ObjectAlignment::Unspecified; + else if(str == "topleft") return tson::ObjectAlignment::TopLeft; + else if(str == "top") return tson::ObjectAlignment::Top; + else if(str == "topright") return tson::ObjectAlignment::TopRight; + else if(str == "left") return tson::ObjectAlignment::Left; + else if(str == "center") return tson::ObjectAlignment::Center; + else if(str == "right") return tson::ObjectAlignment::Right; + else if(str == "bottomleft") return tson::ObjectAlignment::BottomLeft; + else if(str == "bottom") return tson::ObjectAlignment::Bottom; + else if(str == "bottomright") return tson::ObjectAlignment::BottomRight; + else + return tson::ObjectAlignment::Unspecified; +} + +tson::ObjectAlignment tson::Tileset::getObjectAlignment() const +{ + return m_objectAlignment; +} + +/*! + * Helper function to calculate the correct additional offset when margin and/or spacing is used in a tileset + * Created to solve issue #31. + * + * @param posInTileUnits Position of the current tile in tile units. + * @return Calculated additional offset in pixels. + */ +tson::Vector2i tson::Tileset::getMarginSpacingOffset(const tson::Vector2i &posInTileUnits) +{ + if(m_margin == 0 && m_spacing == 0) + return {0,0}; + + tson::Vector2i offset {(posInTileUnits.x * m_spacing) + m_margin, (posInTileUnits.y * m_spacing) + m_margin}; + return offset; +} + +/*! + * Get a wangset by name + * @param name + * @return + */ +tson::WangSet *tson::Tileset::getWangset(const std::string &name) +{ + auto wangset = std::find_if(m_wangsets.begin(), m_wangsets.end(), [&](const auto &w) { return w.getName() == name; }); + + if(wangset != m_wangsets.end()) + return &wangset.operator*(); + + return nullptr; +} + +/*! + * New in Tiled v1.5 - This element is used to describe which transformations can be applied to + * the tiles (e.g. to extend a Wang set by transforming existing tiles). + * + * @return + */ +const tson::Transformations &tson::Tileset::getTransformations() const +{ + return m_transformations; +} + +tson::TileRenderSize tson::Tileset::getTileRenderSize() const +{ + return m_tileRenderSize; +} + +tson::FillMode tson::Tileset::getFillMode() const +{ + return m_fillMode; +} + +const std::string &tson::Tileset::getClassType() const +{ + return m_classType; +} + +#endif //TILESON_TILESET_HPP +/*** End of inlined file: Tileset.hpp ***/ + +namespace tson +{ + class Map + { + public: + inline Map() = default; + inline Map(ParseStatus status, std::string description); + inline explicit Map(IJson &json, tson::DecompressorContainer *decompressors, tson::Project *project); + inline bool parse(IJson &json, tson::DecompressorContainer *decompressors, tson::Project *project); + + [[nodiscard]] inline const Colori &getBackgroundColor() const; + [[nodiscard]] inline const Vector2i &getSize() const; + [[nodiscard]] inline int getHexsideLength() const; + [[nodiscard]] inline bool isInfinite() const; + [[nodiscard]] inline int getNextLayerId() const; + [[nodiscard]] inline int getNextObjectId() const; + [[nodiscard]] inline const std::string &getOrientation() const; + [[nodiscard]] inline const std::string &getRenderOrder() const; + [[nodiscard]] inline const std::string &getStaggerAxis() const; + [[nodiscard]] inline const std::string &getStaggerIndex() const; + [[nodiscard]] inline const std::string &getTiledVersion() const; + [[nodiscard]] inline const Vector2i &getTileSize() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const std::string &getClassType() const; + [[nodiscard]] inline tson::TiledClass *getClass(); /*! Declared in tileson_forward.hpp */ + [[nodiscard]] inline const Vector2f &getParallaxOrigin() const; + //[[nodiscard]] inline int getVersion() const; //Removed - Tileson v1.3.0 + + [[nodiscard]] inline std::vector &getLayers(); + [[nodiscard]] inline PropertyCollection &getProperties(); + [[nodiscard]] inline std::vector &getTilesets(); + + [[nodiscard]] inline ParseStatus getStatus() const; + [[nodiscard]] inline const std::string &getStatusMessage() const; + [[nodiscard]] inline const std::map &getTileMap() const; + + inline Layer * getLayer(const std::string &name); + inline Tileset * getTileset(const std::string &name); + + template + inline T get(const std::string &name); + inline tson::Property * getProp(const std::string &name); + + //v1.2.0 + [[nodiscard]] inline int getCompressionLevel() const; + inline DecompressorContainer *getDecompressors(); + inline Project * getProject(); + inline Tileset * getTilesetByGid(uint32_t gid); + + private: + inline bool createTilesetData(IJson &json); + inline void processData(); + + Colori m_backgroundColor; /*! 'backgroundcolor': Hex-formatted color (#RRGGBB or #AARRGGBB) (optional)*/; + Vector2i m_size; /*! 'width' and 'height' of a Tiled map */ + int m_hexsideLength {}; /*! 'hexsidelength': Length of the side of a hex tile in pixels */ + bool m_isInfinite {}; /*! 'infinite': Whether the map has infinite dimensions*/ + std::vector m_layers; /*! 'layers': Array of layers. group on */ + int m_nextLayerId {}; /*! 'nextlayerid': Auto-increments for each layer */ + int m_nextObjectId {}; /*! 'nextobjectid': Auto-increments for each placed object */ + std::string m_orientation; /*! 'orientation': orthogonal, isometric, staggered or hexagonal */ + tson::PropertyCollection m_properties; /*! 'properties': A list of properties (name, value, type). */ + std::string m_renderOrder; /*! 'renderorder': Rendering direction (orthogonal maps only) */ + std::string m_staggerAxis; /*! 'staggeraxis': x or y (staggered / hexagonal maps only) */ + std::string m_staggerIndex; /*! 'staggerindex': odd or even (staggered / hexagonal maps only) */ + std::string m_tiledVersion; /*! 'tiledversion': The Tiled version used to save the file */ + Vector2i m_tileSize; /*! 'tilewidth': and 'tileheight' of a map */ + std::vector m_tilesets; /*! 'tilesets': Array of Tilesets */ + std::string m_type; /*! 'type': map (since 1.0) */ + tson::Vector2f m_parallaxOrigin; /*! Tiled v1.8: parallax origin in pixels. Defaults to 0. */ + //int m_version{}; /*! 'version': The JSON format version - Removed in Tileson v1.3.0*/ + + ParseStatus m_status {ParseStatus::OK}; + std::string m_statusMessage {"OK"}; + + std::map m_tileMap{}; /*! key: Tile ID. Value: Pointer to Tile*/ + + //v1.2.0 + int m_compressionLevel {-1}; /*! 'compressionlevel': The compression level to use for tile layer + * data (defaults to -1, which means to use the algorithm default) + * Introduced in Tiled 1.3*/ + tson::DecompressorContainer * m_decompressors {nullptr}; + tson::Project * m_project {nullptr}; + std::map m_flaggedTileMap{}; /*! key: Tile ID. Value: Tile*/ + + std::string m_classType{}; /*! 'class': The class of this map (since 1.9, defaults to “”). */ + std::shared_ptr m_class {}; + }; + + /*! + * A shortcut for getting a property. Alternative to getProperties().getValue("") + * @tparam T The template value + * @param name Name of the property + * @return The actual value, if it exists. Otherwise: The default value of the type. + */ + template + T tson::Map::get(const std::string &name) + { + return m_properties.getValue(name); + } +} + +/*! + * When errors have happened before the map starts parsing, just keep the statuses + * @param status The status + * @param description Description of the status + */ +tson::Map::Map(tson::ParseStatus status, std::string description) : m_status {status}, m_statusMessage { std::move(description) } +{ + +} + +/*! + * Parses a json of a Tiled map. + * @param json A json object with the format of Map + * @return true if all mandatory fields was found. false otherwise. + */ +tson::Map::Map(IJson &json, tson::DecompressorContainer *decompressors, tson::Project *project) +{ + parse(json, decompressors, project); +} + +/*! + * Parses a json of a Tiled map. + * @param json A json object with the format of Map + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Map::parse(IJson &json, tson::DecompressorContainer *decompressors, tson::Project *project) +{ + m_decompressors = decompressors; + m_project = project; + + bool allFound = true; + if(json.count("compressionlevel") > 0) + m_compressionLevel = json["compressionlevel"].get(); //Tiled 1.3 - Optional + + if(json.count("backgroundcolor") > 0) m_backgroundColor = Colori(json["backgroundcolor"].get()); //Optional + if(json.count("width") > 0 && json.count("height") > 0 ) + m_size = {json["width"].get(), json["height"].get()}; else allFound = false; + if(json.count("hexsidelength") > 0) m_hexsideLength = json["hexsidelength"].get(); //Optional + if(json.count("infinite") > 0) m_isInfinite = json["infinite"].get(); //Optional + if(json.count("nextlayerid") > 0) m_nextLayerId = json["nextlayerid"].get(); //Optional + if(json.count("nextobjectid") > 0) m_nextObjectId = json["nextobjectid"].get(); else allFound = false; + if(json.count("orientation") > 0) m_orientation = json["orientation"].get(); else allFound = false; + if(json.count("renderorder") > 0) m_renderOrder = json["renderorder"].get(); //Optional + if(json.count("staggeraxis") > 0) m_staggerAxis = json["staggeraxis"].get(); //Optional + if(json.count("staggerindex") > 0) m_staggerIndex = json["staggerindex"].get(); //Optional + if(json.count("tiledversion") > 0) m_tiledVersion = json["tiledversion"].get(); else allFound = false; + if(json.count("tilewidth") > 0 && json.count("tileheight") > 0 ) + m_tileSize = {json["tilewidth"].get(), json["tileheight"].get()}; else allFound = false; + if(json.count("type") > 0) m_type = json["type"].get(); //Optional + if(json.count("class") > 0) m_classType = json["class"].get(); //Optional + + //Removed - Changed from a float to string in Tiled v1.6, and old spec said int. + //Reason for removal is that it seems to have no real use, as TiledVersion is stored in another variable. + //if(json.count("version") > 0) m_version = json["version"].get(); else allFound = false; + + //More advanced data + if(json.count("layers") > 0 && json["layers"].isArray()) + { + auto &array = json.array("layers"); + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) + { + m_layers.emplace_back(*item, this); + }); + } + + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &array = json.array("properties"); + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) + { + m_properties.add(*item, m_project); + }); + } + + tson::Vector2f parallaxOrigin {0.f, 0.f}; + if(json.count("parallaxoriginx") > 0) + parallaxOrigin.x = json["parallaxoriginx"].get(); + if(json.count("parallaxoriginy") > 0) + parallaxOrigin.y = json["parallaxoriginy"].get(); + + m_parallaxOrigin = parallaxOrigin; + + if(!createTilesetData(json)) + allFound = false; + + processData(); + + return allFound; +} + +/*! + * Tileset data must be created in two steps to prevent malformed tson::Tileset pointers inside tson::Tile + */ +bool tson::Map::createTilesetData(IJson &json) +{ + bool ok = true; + if(json.count("tilesets") > 0 && json["tilesets"].isArray()) + { + //First created tileset objects + auto &tilesets = json.array("tilesets"); + std::for_each(tilesets.begin(), tilesets.end(), [&](std::unique_ptr &) + { + m_tilesets.emplace_back(); + }); + + int i = 0; + //Then do the parsing + std::for_each(tilesets.begin(), tilesets.end(), [&](std::unique_ptr &item) + { + item->directory(json.directory()); + if(!m_tilesets[i].parse(*item, this)) + ok = false; + + ++i; + }); + } + return ok; +} + +/*! + * Processes the parsed data and uses the data to create helpful objects, like tile maps. + */ +void tson::Map::processData() +{ + m_tileMap.clear(); + for(auto &tileset : m_tilesets) + { + std::set usedIds; + for(auto& tile : tileset.getTiles()) + { + if (usedIds.count(tile.getGid()) != 0) + { + continue; + } + usedIds.insert(tile.getGid()); + m_tileMap[tile.getGid()] = &tile; + } + } + std::for_each(m_layers.begin(), m_layers.end(), [&](tson::Layer &layer) + { + layer.assignTileMap(&m_tileMap); + layer.createTileData(m_size, m_isInfinite); + const std::set &flaggedTiles = layer.getUniqueFlaggedTiles(); + for(uint32_t ftile : flaggedTiles) + { + tson::Tile tile {ftile, layer.getMap()}; + if(m_tileMap.count(tile.getGid())) + { + tson::Tile *originalTile = m_tileMap[tile.getGid()]; + tile.addTilesetAndPerformCalculations(originalTile->getTileset()); + tile.setProperties(originalTile->getProperties()); + m_flaggedTileMap[ftile] = tile; + m_tileMap[ftile] = &m_flaggedTileMap[ftile]; + } + } + layer.resolveFlaggedTiles(); + }); +} + +/*! + * 'backgroundcolor': Color created from a hex-formatted color string (#RRGGBB or #AARRGGBB) (optional) + * @return string as color + */ +const tson::Colori &tson::Map::getBackgroundColor() const +{ + return m_backgroundColor; +} + +/*! + * 'width' and 'height' of a Tiled map + * @return + */ +const tson::Vector2 &tson::Map::getSize() const +{ + return m_size; +} + +/*! + * 'hexsidelength': Length of the side of a hex tile in pixels + * @return + */ +int tson::Map::getHexsideLength() const +{ + return m_hexsideLength; +} + +/*! + * 'infinite': Whether the map has infinite dimensions + * @return + */ +bool tson::Map::isInfinite() const +{ + return m_isInfinite; +} + +/*! + * 'nextlayerid': Auto-increments for each layer + * @return + */ +int tson::Map::getNextLayerId() const +{ + return m_nextLayerId; +} + +/*! + * 'nextobjectid': Auto-increments for each placed object + * @return + */ +int tson::Map::getNextObjectId() const +{ + return m_nextObjectId; +} + +/*! + * 'orientation': orthogonal, isometric, staggered or hexagonal + * @return + */ +const std::string &tson::Map::getOrientation() const +{ + return m_orientation; +} + +/*! + * 'renderorder': Rendering direction (orthogonal maps only) + * @return + */ +const std::string &tson::Map::getRenderOrder() const +{ + return m_renderOrder; +} + +/*! + * 'staggeraxis': x or y (staggered / hexagonal maps only) + * @return + */ +const std::string &tson::Map::getStaggerAxis() const +{ + return m_staggerAxis; +} + +/*! + * 'staggerindex': odd or even (staggered / hexagonal maps only) + * @return + */ +const std::string &tson::Map::getStaggerIndex() const +{ + return m_staggerIndex; +} + +/*! + * 'tiledversion': The Tiled version used to save the file + * @return + */ +const std::string &tson::Map::getTiledVersion() const +{ + return m_tiledVersion; +} + +/*! + * 'tilewidth': and 'tileheight' of a map + * @return + */ +const tson::Vector2 &tson::Map::getTileSize() const +{ + return m_tileSize; +} + +/*! + * 'type': map (since 1.0) + * @return + */ +const std::string &tson::Map::getType() const +{ + return m_type; +} + +/*! + * 'version': The JSON format version + * @return + */ +//int tson::Map::getVersion() const +//{ +// return m_version; +//} + +/*! + * 'layers': Array of layers. group on + * @return + */ +std::vector &tson::Map::getLayers() +{ + return m_layers; +} + +/*! + * 'properties': A list of properties (name, value, type). + * @return + */ +tson::PropertyCollection &tson::Map::getProperties() +{ + return m_properties; +} + +/*! + * 'tilesets': Array of Tilesets + * @return + */ +std::vector &tson::Map::getTilesets() +{ + return m_tilesets; +} + +tson::Layer *tson::Map::getLayer(const std::string &name) +{ + auto result = std::find_if(m_layers.begin(), m_layers.end(), [&](const tson::Layer &item) { return item.getName() == name; }); + if(result == m_layers.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Gets a tileset by name + * + * @param name Name of the tileset + * @return tileset with the matching name + */ +tson::Tileset *tson::Map::getTileset(const std::string &name) +{ + auto result = std::find_if(m_tilesets.begin(), m_tilesets.end(), [&](const tson::Tileset &item) {return item.getName() == name; }); + if(result == m_tilesets.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Gets a tileset by gid (graphical ID of a tile). These are always unique, no matter how many tilesets you have + * + * @param gid Graphical ID of a tile + * @return tileset related to the actual gid + */ +tson::Tileset *tson::Map::getTilesetByGid(uint32_t gid) +{ + auto result = std::find_if(m_tilesets.begin(), m_tilesets.end(), [&](const tson::Tileset &tileset) + { + auto const firstId = static_cast(tileset.getFirstgid()); //First tile id of the tileset + auto const lastId = static_cast((firstId + tileset.getTileCount()) - 1); + + return (gid >= firstId && gid <= lastId); + }); + if(result == m_tilesets.end()) + return nullptr; + + return &result.operator*(); +} + +/*! + * Shortcut for getting a property object. Alternative to getProperties().getProperty(""); + * @param name Name of the property + * @return + */ +tson::Property *tson::Map::getProp(const std::string &name) +{ + if(m_properties.hasProperty(name)) + return m_properties.getProperty(name); + return nullptr; +} + +tson::ParseStatus tson::Map::getStatus() const +{ + return m_status; +} + +const std::string &tson::Map::getStatusMessage() const +{ + return m_statusMessage; +} + +/*! + * Get a tile map with pointers to every existing tile. + * @return + */ +const std::map &tson::Map::getTileMap() const +{ + return m_tileMap; +} + +tson::DecompressorContainer *tson::Map::getDecompressors() +{ + return m_decompressors; +} + +/*! + * 'compressionlevel': The compression level to use for tile layer data (defaults to -1, which means to use the algorithm default) + * + * @return The compression level + */ +int tson::Map::getCompressionLevel() const +{ + return m_compressionLevel; +} + +/*! + * New in Tiled v1.8 + * Gets the parallax origin in pixels. Defaults to 0. + * @return A vector with the x and y values of the parallax origin. + */ +const tson::Vector2f &tson::Map::getParallaxOrigin() const +{ + return m_parallaxOrigin; +} + +tson::Project *tson::Map::getProject() +{ + return m_project; +} + +const std::string &tson::Map::getClassType() const +{ + return m_classType; +} + +#endif //TILESON_MAP_HPP + +/*** End of inlined file: Map.hpp ***/ + + +/*** Start of inlined file: TiledEnum.hpp ***/ +// +// Created by robin on 06.06.22. +// + +#ifndef TILESON_TILEDENUM_HPP +#define TILESON_TILEDENUM_HPP + +namespace tson +{ + class EnumDefinition + { + public: + inline explicit EnumDefinition(IJson &json); + inline uint32_t getValue(const std::string &str); + inline std::string getValue(uint32_t num); + inline std::vector getValues(uint32_t num); + inline bool exists(const std::string &str); + inline bool exists(uint32_t num); + + [[nodiscard]] inline uint32_t getId() const; + [[nodiscard]] inline uint32_t getMaxValue() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline EnumStorageType getStorageType() const; + [[nodiscard]] inline bool hasValuesAsFlags() const; + + private: + inline bool hasFlag(uint32_t value, uint32_t flag) const; + uint32_t m_id {}; + uint32_t m_maxValue {}; + std::string m_name {}; + std::map m_values {}; + bool m_valuesAsFlags {false}; + EnumStorageType m_storageType { EnumStorageType::Unspecified }; + }; + + EnumDefinition::EnumDefinition(IJson &json) + { + m_id = json.get("id"); + m_name = json.get("name"); + std::string type = json.get("storageType"); + m_storageType = (type == "int") ? EnumStorageType::Int : (type == "string") ? EnumStorageType::String : EnumStorageType::Unspecified; + m_valuesAsFlags = json.get("valuesAsFlags"); + + if(json.count("values") > 0 && json["values"].isArray()) + { + m_values[0] = "None"; + uint32_t valueCounter = (m_valuesAsFlags) ? 1 : 0; + uint8_t flagBit = 1; + auto &array = json.array("values"); + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) + { + std::string v = item->get(); + m_values[valueCounter] = v; + if(m_valuesAsFlags) + { + valueCounter = 1 << flagBit; + ++flagBit; + } + else + { + ++valueCounter; + } + }); + + m_maxValue = valueCounter; + } + } + + uint32_t EnumDefinition::getValue(const std::string &str) + { + auto result = std::find_if(m_values.begin(), m_values.end(), [&](const std::pair &pair) + { + return pair.second == str; + }); + + if(result != m_values.end()) + return result->first; + + return 0; + } + + std::string EnumDefinition::getValue(uint32_t num) + { + return (m_values.count(num) > 0) ? m_values[num] : ""; + } + + bool EnumDefinition::hasValuesAsFlags() const + { + return m_valuesAsFlags; + } + + bool EnumDefinition::exists(const std::string &str) + { + auto result = std::find_if(m_values.begin(), m_values.end(), [&](const std::pair &pair) + { + return pair.second == str; + }); + + if(result != m_values.end()) + return true; + + return false; + } + + bool EnumDefinition::exists(uint32_t num) { return (m_values.count(num) > 0); } + + uint32_t EnumDefinition::getId() const + { + return m_id; + } + + const std::string &EnumDefinition::getName() const + { + return m_name; + } + + EnumStorageType EnumDefinition::getStorageType() const + { + return m_storageType; + } + + uint32_t EnumDefinition::getMaxValue() const + { + return m_maxValue; + } + + std::vector EnumDefinition::getValues(uint32_t num) + { + std::vector values; + if(m_valuesAsFlags) + { + uint32_t flag = 0; + uint32_t i = 0; + while(flag < m_maxValue) + { + flag = 1 << i; + ++i; + if(m_values.count(flag) > 0 && hasFlag(num, flag)) + { + values.emplace_back(m_values[flag]); + } + } + } + else + { + std::string v = getValue(num); + if(!v.empty()) + values.emplace_back(); + } + + return values; + } + + bool EnumDefinition::hasFlag(uint32_t value, uint32_t flag) const + { + return ((value & flag) == flag); + } + + class EnumValue + { + public: + inline EnumValue() = default; + inline EnumValue(uint32_t value, EnumDefinition *definition); + inline EnumValue(const std::string &value, EnumDefinition *definition); + + [[nodiscard]] inline uint32_t getValue() const; + inline std::string getValueName() const; + [[nodiscard]] inline std::vector getValueNames() const; + [[nodiscard]] inline EnumDefinition *getDefinition() const; + + inline bool hasFlagValue(uint32_t flag) const; + template + inline bool hasFlag(T flags) const; + inline bool hasAnyFlagValue(uint32_t flags) const; + template + inline bool hasAnyFlag(T flags) const; + [[nodiscard]] inline bool containsValueName(const std::string &value) const; + + private: + uint32_t m_value {0}; + EnumDefinition *m_definition = nullptr; + }; + + EnumValue::EnumValue(uint32_t value, EnumDefinition *definition) : m_value {value}, m_definition {definition} + { + + } + + EnumValue::EnumValue(const std::string &value, EnumDefinition *definition) : m_definition {definition} + { + if(!value.empty() && definition != nullptr) + { + std::vector values = Tools::SplitString(value, ','); + for(auto &item : values) + { + uint32_t v = definition->getValue(item); + m_value |= v; + } + } + } + + /*! + * Checks if uint32 value contains a single flag. If 'valuesAsFlags' is not a part of the EnumDefinition, a simple equality comparison will be done + * instead. + * @param flags The uint32 value of the flag you want to check + * @return 'true' if EnumValue has the requested bit activated. 'false' otherwise. + */ + bool EnumValue::hasFlagValue(uint32_t flags) const + { + if(m_definition->hasValuesAsFlags()) + return ((m_value & flags) == flags) ? true : false; + + return m_value == flags; + } + + /*! + * Checks if uint32 value contains one of several possible flags. If 'valuesAsFlags' is not a part of the EnumDefinition, a simple equality comparison will be done + * instead. + * @param flags The uint32 values of the flags you want to check + * @return 'true' if EnumValue has the requested bits activated. 'false' otherwise. + */ + bool EnumValue::hasAnyFlagValue(uint32_t flags) const + { + if(m_definition->hasValuesAsFlags()) + return ((m_value & flags) != 0); + + return m_value == flags; + } + + uint32_t EnumValue::getValue() const + { + return m_value; + } + + /*! + * Gets the single name of a value. + * This function is intended for enums that can only have one value (non-flag). + * If you want to get several value names (flags), use getValueNames() instead. + * @return A single name for a value + */ + std::string EnumValue::getValueName() const + { + return (m_definition == nullptr) ? "" : m_definition->getValue(m_value); + } + + /*! + * Checks if T value contains a single flag. If 'valuesAsFlags' is not a part of the EnumDefinition, a simple equality comparison will be done + * instead. + * @tparam T A uint32_t compatible type + * @param flags One or more flags you want to verify is included. + * @return true is all flags presented are set. false otherwise. + */ + template + bool EnumValue::hasFlag(T flags) const + { + return hasFlagValue(static_cast(flags)); + } + + /*! + * Checks if T value contains one of several possible flags. If 'valuesAsFlags' is not a part of the EnumDefinition, a simple equality comparison will be done + * instead. + * @tparam T A uint32_t compatible type + * @param flags One or more flags you want to verify is included. + * @return true is all flags presented are set. false otherwise. + */ + template + bool EnumValue::hasAnyFlag(T flags) const + { + return hasAnyFlagValue(static_cast(flags)); + } + + EnumDefinition *EnumValue::getDefinition() const + { + return m_definition; + } + + std::vector EnumValue::getValueNames() const + { + return (m_definition == nullptr) ? std::vector() : m_definition->getValues(m_value); + } + + /*! + * + * @param value + * @return + */ + bool EnumValue::containsValueName(const std::string &value) const + { + if(m_definition != nullptr) + { + if(m_definition->hasValuesAsFlags()) + { + std::vector values = m_definition->getValues(m_value); + auto it = std::find(values.begin(), values.end(), value); + return it != values.end(); + } + return m_definition->getValue(value) == m_value; + } + return false; + } +} + +#endif //TILESON_TILEDENUM_HPP + +/*** End of inlined file: TiledEnum.hpp ***/ + + +/*** Start of inlined file: TiledClass.hpp ***/ +// +// Created by robin on 06.06.22. +// + +#ifndef TILESON_TILEDCLASS_HPP +#define TILESON_TILEDCLASS_HPP + +namespace tson +{ + class TiledClass + { + public: + inline explicit TiledClass() = default; + inline explicit TiledClass(IJson &json, tson::Project *project = nullptr); + + [[nodiscard]] inline uint32_t getId() const; + [[nodiscard]] inline const std::string &getName() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const PropertyCollection &getMembers() const; + inline void update(IJson &json); + inline void update(PropertyCollection &properties); + + template + inline T get(const std::string &name); + inline tson::Property *getMember(const std::string &name); + + private: + uint32_t m_id {}; + std::string m_name {}; + std::string m_type {}; + PropertyCollection m_members {}; + + }; + + TiledClass::TiledClass(IJson &json, tson::Project *project) + { + if(json.count("id") > 0) + m_id = json["id"].get(); + + if(json.count("name") > 0) + m_name = json["name"].get(); + if(json.count("type") > 0) + m_type = json["type"].get(); + + if(json.count("members") > 0 && json["members"].isArray()) + { + auto &array = json.array("members"); + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) + { + m_members.add(*item, project); + }); + } + } + + uint32_t TiledClass::getId() const + { + return m_id; + } + + const std::string &TiledClass::getName() const + { + return m_name; + } + + const std::string &TiledClass::getType() const + { + return m_type; + } + + const PropertyCollection &TiledClass::getMembers() const + { + return m_members; + } + + template + T TiledClass::get(const std::string &name) + { + return m_members.getValue(name); + } + + tson::Property *TiledClass::getMember(const std::string &name) + { + if(m_members.hasProperty(name)) + return m_members.getProperty(name); + return nullptr; + } + + /*! + * Takes a json object from a particular map top update values if they differ from the original values of the class + * @param json + */ + void TiledClass::update(IJson &json) + { + for(Property *property : m_members.get()) + { + if(json.any(property->getName())) + { + property->setValueByType(json[property->getName()]); + } + } + } + + void TiledClass::update(PropertyCollection &properties) + { + std::vector toUpdate; + for(Property *member : m_members.get()) + { + if(properties.hasProperty(member->getName())) + { + Property *property = properties.getProperty(member->getName()); + if(member->getType() == property->getType()) + { + toUpdate.push_back(property); + } + } + } + + std::for_each(toUpdate.begin(), toUpdate.end(), [&](Property *p) + { + m_members.setProperty(p->getName(), *p); + }); + } +} + +#endif //TILESON_TILEDCLASS_HPP + +/*** End of inlined file: TiledClass.hpp ***/ + + +/*** Start of inlined file: Project.hpp ***/ +// +// Created by robin on 01.08.2020. +// + +#ifndef TILESON_PROJECT_HPP +#define TILESON_PROJECT_HPP + +#include +#include +#include + +/*** Start of inlined file: World.hpp ***/ +// +// Created by robin on 01.08.2020. +// + +#ifndef TILESON_WORLD_HPP +#define TILESON_WORLD_HPP + + +/*** Start of inlined file: WorldMapData.hpp ***/ +// +// Created by robin on 01.08.2020. +// + +#ifndef TILESON_WORLDMAPDATA_HPP +#define TILESON_WORLDMAPDATA_HPP + +namespace tson +{ + class WorldMapData + { + public: + inline WorldMapData(const fs::path &folder_, IJson &json); + inline void parse(const fs::path &folder_, IJson &json); + //inline WorldMapData(fs::path folder_, std::string fileName_) : folder {std::move(folder_)}, fileName {fileName_} + //{ + // path = folder / fileName; + //} + + fs::path folder; + fs::path path; + std::string fileName; + tson::Vector2i size; + tson::Vector2i position; + }; + + WorldMapData::WorldMapData(const fs::path &folder_, IJson &json) + { + parse(folder_, json); + } + + void WorldMapData::parse(const fs::path &folder_, IJson &json) + { + folder = folder_; + if(json.count("fileName") > 0) fileName = json["fileName"].get(); + if(json.count("height") > 0) size = {json["width"].get(), json["height"].get()}; + if(json.count("x") > 0) position = {json["x"].get(), json["y"].get()}; + + path = (!fileName.empty()) ? folder / fileName : folder; + } +} + +#endif //TILESON_WORLDMAPDATA_HPP +/*** End of inlined file: WorldMapData.hpp ***/ + +#include +namespace tson +{ + class Tileson; + class World + { + public: + #ifdef JSON11_IS_DEFINED + inline explicit World(std::unique_ptr jsonParser = std::make_unique()) : m_json {std::move(jsonParser)} + { + } + + inline explicit World(const fs::path &path, std::unique_ptr jsonParser = std::make_unique()); + #else + inline explicit World(std::unique_ptr jsonParser) : m_json {std::move(jsonParser)} + { + } + + inline explicit World(const fs::path &path, std::unique_ptr jsonParser); + #endif + inline bool parse(const fs::path &path); + inline std::size_t loadMaps(tson::Tileson *parser); //tileson_forward.hpp + inline bool contains(std::string_view filename); + inline const WorldMapData *get(std::string_view filename) const; + + [[nodiscard]] inline const fs::path &getPath() const; + [[nodiscard]] inline const fs::path &getFolder() const; + [[nodiscard]] inline const std::vector &getMapData() const; + [[nodiscard]] inline bool onlyShowAdjacentMaps() const; + [[nodiscard]] inline const std::string &getType() const; + [[nodiscard]] inline const std::vector> &getMaps() const; + + private: + inline void parseJson(IJson &json); + + std::unique_ptr m_json = nullptr; + fs::path m_path; + fs::path m_folder; + std::vector m_mapData; + std::vector> m_maps; + bool m_onlyShowAdjacentMaps; + std::string m_type; + }; + + World::World(const fs::path &path, std::unique_ptr jsonParser) : m_json {std::move(jsonParser)} + { + parse(path); + } + + bool World::parse(const fs::path &path) + { + m_path = path; + m_folder = m_path.parent_path(); + + if(!m_json->parse(path)) + return false; + + parseJson(*m_json); + return true; + } + + const fs::path &World::getPath() const + { + return m_path; + } + + const std::vector &World::getMapData() const + { + return m_mapData; + } + + bool World::onlyShowAdjacentMaps() const + { + return m_onlyShowAdjacentMaps; + } + + const std::string &World::getType() const + { + return m_type; + } + + void World::parseJson(IJson &json) + { + if(json.count("onlyShowAdjacentMaps") > 0) m_onlyShowAdjacentMaps = json["onlyShowAdjacentMaps"].get(); + if(json.count("type") > 0) m_type = json["type"].get(); + + if(json["maps"].isArray()) + { + auto &maps = json.array("maps"); + std::for_each(maps.begin(), maps.end(), [&](std::unique_ptr &item) { m_mapData.emplace_back(m_folder, *item); }); + } + } + + const fs::path &World::getFolder() const + { + return m_folder; + } + + /*! + * Check if there is WorldMapData in the world that contains the current filename. + * Filename = . + * @param filename + * @return + */ + bool World::contains(std::string_view filename) + { + //Note: might be moved to std::ranges from C++20. + return std::any_of(m_mapData.begin(), m_mapData.end(), [&](const auto &item) { return item.fileName == filename; }); + } + + /*! + * Get a map by its filename + * @param filename Filename (including extension) - (example: file.json) + * @return pointer to WorldMapData or nullptr if not exists + */ + const WorldMapData * World::get(std::string_view filename) const + { + auto iter = std::find_if(m_mapData.begin(), m_mapData.end(), [&](const auto &item) { return item.fileName == filename; }); + return (iter == m_mapData.end()) ? nullptr : iter.operator->(); + } + + /*! + * Get all maps that have been loaded by loadMaps(). + * NOTE: This is untested, and was a last second addition to Tileson 1.2.0, as I had forgot about the loadMaps() functionality (also untested) + * If you find anything malfunctioning - please report. + * @return All maps loaded by loadMaps() + */ + const std::vector> &World::getMaps() const + { + return m_maps; + } + +} + +#endif //TILESON_WORLD_HPP + +/*** End of inlined file: World.hpp ***/ + + + +/*** Start of inlined file: ProjectPropertyTypes.hpp ***/ +// +// Created by robin on 01.08.22. +// + +#ifndef TILESON_PROJECTPROPERTYTYPES_HPP +#define TILESON_PROJECTPROPERTYTYPES_HPP + +namespace tson +{ + class ProjectPropertyTypes + { + public: + inline ProjectPropertyTypes() = default; + inline bool parse(IJson &json, tson::Project *project); + + inline const std::vector &getEnums() const; + inline const std::vector &getClasses() const; + [[nodiscard]] inline tson::EnumDefinition* getEnumDefinition(std::string_view name); + [[nodiscard]] inline tson::TiledClass* getClass(std::string_view name); + inline bool isUnhandledContentFound() const; + + private: + std::vector m_enums; + std::vector m_classes; + bool m_unhandledContentFound {false}; + + }; + + bool ProjectPropertyTypes::parse(IJson &json, tson::Project *project) + { + m_enums.clear(); + m_classes.clear(); + m_unhandledContentFound = false; + + if(json.count("propertyTypes") > 0 && json["propertyTypes"].isArray()) + { + auto &array = json.array("propertyTypes"); + std::vector classes; //Classes must be handled after enums + std::vector other; //Unhandled stuff - just to keep track if something is missing... + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) + { + IJson &j = *item; + if(j.count("type") > 0) + { + std::string t = j["type"].get(); + if(t == "enum") + { + m_enums.emplace_back(j); //Can be resolved directly + } + else if(t == "class") + { + classes.push_back(item.get()); //Must be resolved later + } + else + other.push_back(item.get()); //Only used to set flag for whether unhandled content was found. + } + }); + + std::for_each(classes.begin(), classes.end(), [&](IJson *item) + { + m_classes.emplace_back(*item, project); + }); + + if(!other.empty()) + m_unhandledContentFound = true; + + } + return false; + } + + const std::vector &ProjectPropertyTypes::getEnums() const + { + return m_enums; + } + + const std::vector &ProjectPropertyTypes::getClasses() const + { + return m_classes; + } + + bool ProjectPropertyTypes::isUnhandledContentFound() const + { + return m_unhandledContentFound; + } + + tson::EnumDefinition *ProjectPropertyTypes::getEnumDefinition(std::string_view name) + { + auto it = std::find_if(m_enums.begin(), m_enums.end(), [&](const EnumDefinition &def) + { + return def.getName() == name; + }); + + if(it != m_enums.end()) + return &it.operator*(); + + return nullptr; + } + + tson::TiledClass *ProjectPropertyTypes::getClass(std::string_view name) + { + auto it = std::find_if(m_classes.begin(), m_classes.end(), [&](const TiledClass &def) + { + return def.getName() == name; + }); + + if(it != m_classes.end()) + return &it.operator*(); + + return nullptr; + } +} + +#endif //TILESON_PROJECTPROPERTYTYPES_HPP + +/*** End of inlined file: ProjectPropertyTypes.hpp ***/ + + +/*** Start of inlined file: ProjectFolder.hpp ***/ +// +// Created by robin on 01.08.2020. +// + +#ifndef TILESON_PROJECTFOLDER_HPP +#define TILESON_PROJECTFOLDER_HPP + +namespace tson +{ + class ProjectFolder + { + public: + inline ProjectFolder(const fs::path &path); + + inline const fs::path &getPath() const; + inline bool hasWorldFile() const; + inline const std::vector &getSubFolders() const; + inline const std::vector &getFiles() const; + inline const World &getWorld() const; + + private: + inline void loadData(); + fs::path m_path; + bool m_hasWorldFile; + tson::World m_world; + std::vector m_subFolders; + std::vector m_files; + + }; + + ProjectFolder::ProjectFolder(const fs::path &path) : m_path {path} + { + loadData(); + } + + void ProjectFolder::loadData() + { + m_hasWorldFile = false; + m_subFolders.clear(); + m_files.clear(); + //Search and see if there is a World file .world file + fs::path worldPath; + for (const auto & entry : fs::directory_iterator(m_path)) + { + if(fs::is_regular_file(entry.path())) + { + if(entry.path().extension() == ".world") + { + m_hasWorldFile = true; + worldPath = entry.path(); + } + } + } + + if(m_hasWorldFile) + m_world.parse(worldPath); + + for (const auto & entry : fs::directory_iterator(m_path)) + { + if (fs::is_directory(entry.path())) + m_subFolders.emplace_back(entry.path());//.loadData(); - loadData() is called in the constructor, so don't call again. + else if (fs::is_regular_file(entry.path())) + { + if(m_hasWorldFile && m_world.contains(entry.path().filename().generic_string())) + m_files.emplace_back(entry.path()); + else if(!m_hasWorldFile) + m_files.emplace_back(entry.path()); + } + } + + } + + const fs::path &ProjectFolder::getPath() const + { + return m_path; + } + + bool ProjectFolder::hasWorldFile() const + { + return m_hasWorldFile; + } + + const std::vector &ProjectFolder::getSubFolders() const + { + return m_subFolders; + } + + const std::vector &ProjectFolder::getFiles() const + { + return m_files; + } + + /*! + * Only gives useful data if hasWorldFile() is true! + * @return + */ + const World &ProjectFolder::getWorld() const + { + return m_world; + } +} + +#endif //TILESON_PROJECTFOLDER_HPP +/*** End of inlined file: ProjectFolder.hpp ***/ + + +/*** Start of inlined file: ProjectData.hpp ***/ +// +// Created by robin on 01.08.2020. +// + +#ifndef TILESON_PROJECTDATA_HPP +#define TILESON_PROJECTDATA_HPP + +namespace tson +{ + class ProjectData + { + public: + ProjectData() = default; + std::string automappingRulesFile; + std::vector commands; + std::string extensionsPath; + std::vector folders; + std::string objectTypesFile; + ProjectPropertyTypes projectPropertyTypes; + + //Tileson specific + fs::path basePath; + std::vector folderPaths; + }; +} + +#endif //TILESON_PROJECTDATA_HPP +/*** End of inlined file: ProjectData.hpp ***/ + +namespace tson +{ + class Project + { + public: + #ifdef JSON11_IS_DEFINED + inline explicit Project(std::unique_ptr jsonParser = std::make_unique()) : m_json {std::move(jsonParser)} + { + + } + inline explicit Project(const fs::path &path, std::unique_ptr jsonParser = std::make_unique()); + #else + inline explicit Project(std::unique_ptr jsonParser) : m_json {std::move(jsonParser)} + { + + } + inline explicit Project(const fs::path &path, std::unique_ptr jsonParser); + #endif + inline bool parse(const fs::path &path); + inline void parse(); + + [[nodiscard]] inline const ProjectData &getData() const; + [[nodiscard]] inline const fs::path &getPath() const; + [[nodiscard]] inline const std::vector &getFolders() const; + [[nodiscard]] inline tson::EnumDefinition* getEnumDefinition(std::string_view name); + [[nodiscard]] inline tson::TiledClass* getClass(std::string_view name); + + private: + inline void parseJson(IJson &json); + fs::path m_path; + std::vector m_folders; + ProjectData m_data; + std::unique_ptr m_json = nullptr; + }; + + Project::Project(const fs::path &path, std::unique_ptr jsonParser) : m_json {std::move(jsonParser)} + { + parse(path); + } + + bool Project::parse(const fs::path &path) + { + m_path = path; + std::ifstream i(m_path.generic_string()); + + try + { + if(!m_json->parse(path)) + return false; + } + catch(const std::exception &error) + { + std::string message = "Parse error: "; + message += std::string(error.what()); + message += std::string("\n"); + return false; + } + parseJson(*m_json); + return true; + } + + const ProjectData &Project::getData() const + { + return m_data; + } + + void Project::parseJson(IJson &json) + { + m_data.basePath = (m_path.empty()) ? fs::path() : m_path.parent_path(); //The directory of the project file + + //Make sure these property types are read before any map is, so they can be resolved. + if(json.count("propertyTypes") > 0) + { + m_data.projectPropertyTypes.parse(json, this); + } + + if(json.count("automappingRulesFile") > 0) m_data.automappingRulesFile = json["automappingRulesFile"].get(); + if(json.count("commands") > 0) + { + m_data.commands.clear(); + auto &commands = json.array("commands"); + std::for_each(commands.begin(), commands.end(), [&](std::unique_ptr &item) + { + m_data.commands.emplace_back(item->get()); + }); + } + if(json.count("extensionsPath") > 0) m_data.extensionsPath = json["extensionsPath"].get(); + if(json.count("folders") > 0) + { + m_data.folders.clear(); + m_data.folderPaths.clear(); + auto &folders = json.array("folders"); + std::for_each(folders.begin(), folders.end(), [&](std::unique_ptr &item) + { + std::string folder = item->get(); + m_data.folders.emplace_back(folder); + m_data.folderPaths.emplace_back(m_data.basePath / folder); + m_folders.emplace_back(m_data.basePath / folder); + }); + } + if(json.count("objectTypesFile") > 0) m_data.objectTypesFile = json["objectTypesFile"].get(); + } + + const fs::path &Project::getPath() const + { + return m_path; + } + + const std::vector &Project::getFolders() const + { + return m_folders; + } + + tson::EnumDefinition *Project::getEnumDefinition(std::string_view name) + { + return m_data.projectPropertyTypes.getEnumDefinition(name); + } + + tson::TiledClass *Project::getClass(std::string_view name) + { + return m_data.projectPropertyTypes.getClass(name); + } + + /*! + * Parses preloaded json data. Only used during tests involving project jsons not actually read from files + * @return + */ + void Project::parse() + { + parseJson(*m_json); + } + +} + +#endif //TILESON_PROJECT_HPP + +/*** End of inlined file: Project.hpp ***/ + +namespace tson +{ + class Tileson + { + public: + #ifdef JSON11_IS_DEFINED + inline explicit Tileson(std::unique_ptr jsonParser = std::make_unique(), bool includeBase64Decoder = true); + inline explicit Tileson(tson::Project *project, std::unique_ptr jsonParser = std::make_unique(), bool includeBase64Decoder = true); + #else + inline explicit Tileson(std::unique_ptr jsonParser, bool includeBase64Decoder = true); + inline explicit Tileson(tson::Project *project, std::unique_ptr jsonParser, bool includeBase64Decoder = true); + #endif + + inline std::unique_ptr parse(const fs::path &path, std::unique_ptr, std::vector>> decompressor = nullptr); + inline std::unique_ptr parse(const void * data, size_t size, std::unique_ptr, std::vector>> decompressor = nullptr); + inline tson::DecompressorContainer *decompressors(); + + private: + inline std::unique_ptr parseJson(); + std::unique_ptr m_json; + tson::DecompressorContainer m_decompressors; + tson::Project *m_project {nullptr}; + }; +} + +/*! + * + * @param includeBase64Decoder Includes the base64-decoder from "Base64Decompressor.hpp" if true. + * Otherwise no other decompressors/decoders than whatever the user itself have added will be used. + */ +tson::Tileson::Tileson(std::unique_ptr jsonParser, bool includeBase64Decoder) : m_json {std::move(jsonParser)} +{ + if(includeBase64Decoder) + m_decompressors.add(); +} + +tson::Tileson::Tileson(tson::Project *project, std::unique_ptr jsonParser, bool includeBase64Decoder) : m_json {std::move(jsonParser)} +{ + m_project = project; + if(includeBase64Decoder) + m_decompressors.add(); +} + +/*! + * Parses Tiled json map data by file + * @param path path to file + * @return parsed data as Map + */ +std::unique_ptr tson::Tileson::parse(const fs::path &path, std::unique_ptr, std::vector>> decompressor) +{ + + bool result = false; + + if(decompressor != nullptr) + { + std::vector decompressed = decompressor->decompressFile(path); + result = (decompressed.empty()) ? false : true; + if(!result) + return std::make_unique(tson::ParseStatus::DecompressionError, "Error during decompression"); + + result = m_json->parse(&decompressed[0], decompressed.size()); + + if(result) + return parseJson(); + } + else if(m_json->parse(path)) + { + return parseJson(); + } + + std::string msg = "File not found: "; + msg += std::string(path.generic_string()); + return std::make_unique(tson::ParseStatus::FileNotFound, msg); +} + +/*! + * Parses Tiled json map data by memory + * @param data The data to parse + * @param size The size of the data to parse + * @return parsed data as Map + */ +std::unique_ptr tson::Tileson::parse(const void *data, size_t size, std::unique_ptr, std::vector>> decompressor) +{ + bool result = false; + + if(decompressor != nullptr) + { + std::vector decompressed = decompressor->decompress(data, size); + result = (decompressed.empty()) ? false : true; + if(!result) + return std::make_unique(tson::ParseStatus::DecompressionError, "Error during decompression"); + result = m_json->parse(&decompressed[0], decompressed.size()); + } + else + result = m_json->parse(data, size); + + if(!result) + return std::make_unique(tson::ParseStatus::ParseError, "Memory error"); + + return parseJson(); +} + +/*! + * Common parsing functionality for doing the json parsing + * @param json Tiled json to parse + * @return parsed data as Map + */ +std::unique_ptr tson::Tileson::parseJson() +{ + std::unique_ptr map = std::make_unique(); + + if(map->parse(*m_json, &m_decompressors, m_project)) + return map; + + return std::make_unique (tson::ParseStatus::MissingData, "Missing map data..."); +} + +/*! + * Gets the decompressor container used when something is either encoded or compressed (regardless: IDecompressor is used as base). + * These are used specifically for tile layers, and are connected by checking the name of the IDecompressor. If the name of a decompressor + * matches with an encoding or a compression, its decompress() function will be used. + * + * @return The container including all decompressors. + */ +tson::DecompressorContainer *tson::Tileson::decompressors() +{ + return &m_decompressors; +} + +#endif //TILESON_TILESON_PARSER_HPP + +/*** End of inlined file: tileson_parser.hpp ***/ + + +/*** Start of inlined file: tileson_forward.hpp ***/ +// +// Created by robin on 25.07.2020. +// + +#ifndef TILESON_TILESON_FORWARD_HPP +#define TILESON_TILESON_FORWARD_HPP +/*! + * T I L E S O N F O R W A R D D E C L A R A T I O N S + * ------------------------------------------------------- + * + * Due to cross-references we have forward declarations that cannot be resolved during the + * implementation, thus the implementations must be done later when the class definition itself is known. + * + * All those forward declarations can be found below. + */ + +// M a p . h p p +// ---------------- + +tson::TiledClass *tson::Map::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_project != nullptr) ? m_project->getClass(m_classType) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// T i l e . h p p +// --------------------- + +/*! + * Really just a shortcut to retrieve the tile size from the map. + * @return TileSize based on the map property for tile size. + */ +const tson::Vector2i tson::Tile::getTileSize() const +{ + if(m_map != nullptr) + return m_map->getTileSize(); + else + return {0,0}; +} + +bool tson::Tile::parseId(IJson &json) +{ + if(json.count("id") > 0) + { + m_id = json["id"].get() + 1; + if (m_tileset != nullptr) + m_gid = m_tileset->getFirstgid() + m_id - 1; + else + m_gid = m_id; + manageFlipFlagsByIdThenRemoveFlags(m_gid); + return true; + } + return false; +} + +/*! + * Uses tson::Tileset and tson::Map data to calculate related values for tson::Tile. + * Added in v1.2.0 + */ +void tson::Tile::performDataCalculations() +{ + if(m_tileset == nullptr || m_map == nullptr) + return; + + int firstId = m_tileset->getFirstgid(); //First tile id of the tileset + int columns = m_tileset->getColumns(); + int rows = m_tileset->getTileCount() / columns; + int lastId = (m_tileset->getFirstgid() + m_tileset->getTileCount()) - 1; + + int const gid = static_cast(getGid()); + if (gid >= firstId && gid <= lastId) + { + int const baseTilePosition = (gid - firstId); + + int const tileModX = (baseTilePosition % columns); + int const currentRow = (baseTilePosition / columns); + int const offsetX = (tileModX != 0) ? ((tileModX) * m_map->getTileSize().x) : (0 * m_map->getTileSize().x); + int const offsetY = (currentRow < rows-1) ? (currentRow * m_map->getTileSize().y) : ((rows-1) * m_map->getTileSize().y); + + tson::Vector2i spacing = m_tileset->getMarginSpacingOffset({tileModX, currentRow}); + m_drawingRect = { offsetX + spacing.x, offsetY + spacing.y, m_map->getTileSize().x, m_map->getTileSize().y }; + } + else + m_drawingRect = {0, 0, 0, 0}; +} + +/*! + * Get the position of the tile in pixels based on the tile data position from the current layer. + * @return The position of the tile in Pixels + */ +const tson::Vector2f tson::Tile::getPosition(const std::tuple &tileDataPos) +{ + return {((float) std::get<0>(tileDataPos)) * m_drawingRect.width, ((float) std::get<1>(tileDataPos)) * m_drawingRect.height}; +} + +/*! + * Gets the class information for the 'type'/'class' + * This may only give a valid result if the map is loaded through a tson::Project + * @return a tson::TiledClass object if related map was loaded through tson::Project + */ +tson::TiledClass *tson::Tile::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_type) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// T i l e s e t . h p p +// ------------------------ + +tson::TiledClass *tson::Tileset::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_classType) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// T i l e O b j e c t . h p p +// --------------------- + +/*! + * In cases where the empty constructor is called, this must be called manually + * for this class to make sense + * @param posInTileUnits + * @param tile + */ +void tson::TileObject::initialize(const std::tuple &posInTileUnits, tson::Tile *tile) +{ + m_tile = tile; + m_posInTileUnits = tile->getPositionInTileUnits(posInTileUnits); + m_position = tile->getPosition(posInTileUnits); +} + +const tson::Rect &tson::TileObject::getDrawingRect() const +{ + return m_tile->getDrawingRect(); +} + +// L a y e r . h p p +// ------------------- + +/*! + * Decompresses data if there are matching decompressors + */ +void tson::Layer::decompressData() +{ + + tson::DecompressorContainer *container = m_map->getDecompressors(); + if(container->empty()) + return; + + if(m_encoding.empty() && m_compression.empty()) + return; + + std::string data = m_base64Data; + bool hasBeenDecoded = false; + if(!m_encoding.empty() && container->contains(m_encoding)) + { + data = container->get(m_encoding)->decompress(data); + hasBeenDecoded = true; + } + + if(!m_compression.empty() && container->contains(m_compression)) + { + data = container->get(m_compression)->decompress(data); + } + + if(hasBeenDecoded) + { + std::vector bytes = tson::Tools::Base64DecodedStringToBytes(data); + m_data = tson::Tools::BytesToUnsignedInts(bytes); + } +} + +/*! + * Parses a Tiled layer from json + * @param json + * @return true if all mandatory fields was found. false otherwise. + */ +bool tson::Layer::parse(IJson &json, tson::Map *map) +{ + m_map = map; + + bool allFound = true; + if(json.count("tintcolor") > 0) m_tintColor = tson::Colori(json["tintcolor"].get()); //Optional + if(json.count("compression") > 0) m_compression = json["compression"].get(); //Optional + if(json.count("draworder") > 0) m_drawOrder = json["draworder"].get(); //Optional + if(json.count("encoding") > 0) m_encoding = json["encoding"].get(); //Optional + if(json.count("id") > 0) m_id = json["id"].get(); //Optional + if(json.count("image") > 0) m_image = json["image"].get(); //Optional + if(json.count("name") > 0) m_name = json["name"].get(); else allFound = false; + if(json.count("offsetx") > 0 && json.count("offsety") > 0) + m_offset = {json["offsetx"].get(), json["offsety"].get()}; //Optional + if(json.count("opacity") > 0) m_opacity = json["opacity"].get(); else allFound = false; + if(json.count("width") > 0 && json.count("height") > 0) + m_size = {json["width"].get(), json["height"].get()}; //else allFound = false; - Not mandatory for all layers! + if(json.count("transparentcolor") > 0) m_transparentColor = tson::Colori(json["transparentcolor"].get()); //Optional + if(json.count("type") > 0) m_typeStr = json["type"].get(); else allFound = false; + if(json.count("class") > 0) m_classType = json["class"].get(); //Optional + if(json.count("visible") > 0) m_visible = json["visible"].get(); else allFound = false; + if(json.count("x") > 0) m_x = json["x"].get(); else allFound = false; + if(json.count("y") > 0) m_y = json["y"].get(); else allFound = false; + if(json.count("repeatx") > 0) m_repeatX = json["repeatx"].get(); //Optional + if(json.count("repeaty") > 0) m_repeatY = json["repeaty"].get(); //Optional + + tson::Vector2f parallax {1.f, 1.f}; + if(json.count("parallaxx") > 0) + parallax.x = json["parallaxx"].get(); + if(json.count("parallaxy") > 0) + parallax.y = json["parallaxy"].get(); + + m_parallax = parallax; + + //Handle DATA (Optional) + if(json.count("data") > 0) + { + if(json["data"].isArray()) + { + auto &array = json.array("data"); + std::for_each(array.begin(), array.end(), [&](std::unique_ptr &item) { m_data.push_back(item->get()); }); + } + else + { + m_base64Data = json["data"].get(); + decompressData(); + } + } + + //More advanced data + if(json.count("chunks") > 0 && json["chunks"].isArray()) + { + auto &chunks = json.array("chunks"); + std::for_each(chunks.begin(), chunks.end(), [&](std::unique_ptr &item) { m_chunks.emplace_back(*item); }); + } + if(json.count("layers") > 0 && json["layers"].isArray()) + { + auto &layers = json.array("layers"); + std::for_each(layers.begin(), layers.end(), [&](std::unique_ptr &item) { m_layers.emplace_back(*item, m_map); }); + } + if(json.count("objects") > 0 && json["objects"].isArray()) + { + auto &objects = json.array("objects"); + std::for_each(objects.begin(), objects.end(), [&](std::unique_ptr &item) { m_objects.emplace_back(*item, m_map); }); + } + if(json.count("properties") > 0 && json["properties"].isArray()) + { + auto &properties = json.array("properties"); + tson::Project *project = (m_map != nullptr) ? m_map->getProject() : nullptr; + std::for_each(properties.begin(), properties.end(), [&](std::unique_ptr &item) { m_properties.add(*item, project); }); + } + + setTypeByString(); + + return allFound; +} + +tson::TiledClass *tson::Layer::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_classType) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// O b j e c t . h p p +// -------------------- + +// W a n g s e t . h p p +// ---------------------- +tson::TiledClass *tson::WangSet::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_classType) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// W a n g c o l o r . h p p +// ---------------------- +tson::TiledClass *tson::WangColor::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_classType) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +/*! + * Gets the class information for the 'type'/'class' + * This may only give a valid result if the map is loaded through a tson::Project + * @return a tson::TiledClass object if related map was loaded through tson::Project + */ +tson::TiledClass *tson::Object::getClass() +{ + if(m_class == nullptr) + { + TiledClass* baseClass = (m_map != nullptr && m_map->getProject() != nullptr) ? m_map->getProject()->getClass(m_type) : nullptr; + if(baseClass != nullptr) + { + m_class = std::make_shared(*baseClass); + m_class->update(m_properties); + } + } + return (m_class != nullptr) ? m_class.get() : nullptr; +} + +// W o r l d . h p p +// ------------------ + +/*! + * Loads the actual maps based on the world data. + * @param parser A Tileson object used for parsing the maps of the world. + * @return How many maps who were parsed. Remember to call getStatus() for the actual map to find out if everything went okay. + */ + +std::size_t tson::World::loadMaps(tson::Tileson *parser) +{ + m_maps.clear(); + std::for_each(m_mapData.begin(), m_mapData.end(), [&](const tson::WorldMapData &data) + { + if(fs::exists(data.path)) + { + std::unique_ptr map = parser->parse(data.path); + m_maps.push_back(std::move(map)); + } + }); + + return m_maps.size(); +} + +// P r o p e r t y . h p p +// ------------------ +void tson::Property::setValueByType(IJson &json) +{ + switch(m_type) + { + case Type::Color: + m_value = Colori(json.get()); + break; + + case Type::File: + m_value = fs::path(json.get()); + break; + + case Type::Int: + if(!m_propertyType.empty()) + { + m_type = Type::Enum; + tson::EnumDefinition *def = (m_project != nullptr) ? m_project->getEnumDefinition(m_propertyType) : nullptr; + if(def != nullptr) + { + uint32_t v = json.get(); + m_value = tson::EnumValue(v, def); + } + else + m_value = tson::EnumValue(); + } + else + m_value = json.get(); + + break; + + case Type::Boolean: + m_value = json.get(); + break; + + case Type::Float: + m_value = json.get(); + break; + + case Type::String: + if(!m_propertyType.empty()) + { + m_type = Type::Enum; + tson::EnumDefinition *def = (m_project != nullptr) ? m_project->getEnumDefinition(m_propertyType) : nullptr; + if(def != nullptr) + { + std::string v = json.get(); + m_value = tson::EnumValue(v, def); + } + else + m_value = tson::EnumValue(); + } + else + setStrValue(json.get()); + + break; + + case Type::Class: + { + tson::TiledClass *baseClass = (m_project != nullptr) ? m_project->getClass(m_propertyType) : nullptr; + if (baseClass != nullptr) + { + tson::TiledClass c = *baseClass; + c.update(json); + m_value = c; + } + } + break; + + case Type::Object: + m_value = json.get(); + break; + default: + setStrValue(json.get()); + break; + } +} + +#endif //TILESON_TILESON_FORWARD_HPP + +/*** End of inlined file: tileson_forward.hpp ***/ + +#endif //TILESON_TILESON_H +