diff options
29 files changed, 108 insertions, 44 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c7da2617..bcefcd6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -172,12 +172,13 @@ include_directories(SYSTEM ) add_subdirectory(src) +add_subdirectory(serialize) +add_subdirectory(loader) +add_subdirectory(anim-crop-tool) +add_subdirectory(draw) add_subdirectory(main) add_subdirectory(editor) -add_subdirectory(anim-crop-tool) -if(WIN32) # TODO - add_subdirectory(test) -endif() +add_subdirectory(test) install(DIRECTORY images anim DESTINATION "share/floormat") diff --git a/anim-crop-tool/CMakeLists.txt b/anim-crop-tool/CMakeLists.txt index 2267a1db..b0fa0570 100644 --- a/anim-crop-tool/CMakeLists.txt +++ b/anim-crop-tool/CMakeLists.txt @@ -1,11 +1,11 @@ find_package(OpenCV QUIET) if(OpenCV_FOUND) - set(self "${PROJECT_NAME}-anim-crop-tool") + set(self "floormat-anim-crop-tool") include_directories(SYSTEM PRIVATE ${OpenCV_INCLUDE_DIRS}) link_libraries(Corrade::Utility Magnum::Magnum) link_libraries(opencv_imgproc opencv_imgcodecs opencv_core) - link_libraries(${PROJECT_NAME}) + link_libraries(floormat-serialize floormat) file(GLOB sources "*.cpp" CONFIGURE_ARGS) add_executable(${self} ${sources}) diff --git a/draw/CMakeLists.txt b/draw/CMakeLists.txt new file mode 100644 index 00000000..ded948b8 --- /dev/null +++ b/draw/CMakeLists.txt @@ -0,0 +1,11 @@ +set(self floormat-draw) +file(GLOB sources "*.cpp" CONFIGURE_ARGS) +add_library(${self} STATIC "${sources}") +target_link_libraries( + ${self} PUBLIC + floormat + Magnum::GL +) +if(FLOORMAT_PRECOMPILED-HEADERS) + target_precompile_headers(${self} PRIVATE precomp.hpp) +endif() diff --git a/draw/precomp.hpp b/draw/precomp.hpp new file mode 100644 index 00000000..0b357722 --- /dev/null +++ b/draw/precomp.hpp @@ -0,0 +1,2 @@ +#pragma once +#include "../src/precomp.hpp" diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index b420aa9c..2b42e15d 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -1,6 +1,6 @@ -set(self ${PROJECT_NAME}-editor) +set(self floormat-editor) -file(GLOB sources "*.cpp" "../loader/*.cpp" CONFIGURE_ARGS) +file(GLOB sources "*.cpp" CONFIGURE_ARGS) corrade_add_resource(res "../resources.conf") if(MSVC) @@ -9,14 +9,10 @@ else() set_property(SOURCE "${res}" APPEND PROPERTY COMPILE_OPTIONS "-w") endif() -if(WIN32) - link_libraries(ntdll) -endif() - link_libraries(MagnumIntegration::ImGui fmt::fmt) +link_libraries(floormat-main floormat-loader floormat-serialize) add_executable(${self} "${sources}" "${res}") -target_link_libraries(${self} ${PROJECT_NAME}-main) if(FLOORMAT_PRECOMPILED-HEADERS) target_precompile_headers(${self} PRIVATE precomp.hpp) diff --git a/editor/app.cpp b/editor/app.cpp index e9497520..986f6102 100644 --- a/editor/app.cpp +++ b/editor/app.cpp @@ -2,7 +2,7 @@ #include "compat/assert.hpp" #include "floormat/main.hpp" #include "floormat/settings.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "world.hpp" #include "src/anim-atlas.hpp" #include <algorithm> diff --git a/editor/editor.cpp b/editor/editor.cpp index e2690101..1ac4a887 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -1,5 +1,5 @@ #include "editor.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "tile-atlas.hpp" #include "src/world.hpp" #include "keys.hpp" diff --git a/editor/precomp.hpp b/editor/precomp.hpp index 27d0f317..775f59e7 100644 --- a/editor/precomp.hpp +++ b/editor/precomp.hpp @@ -9,8 +9,6 @@ #include <fmt/compile.h> #include <Corrade/Utility/Arguments.h> - -#include <Magnum/GL/Renderer.h> #include <Magnum/ImGuiIntegration/Context.h> #if __has_include(<SDL.h>) diff --git a/editor/scenery-editor.cpp b/editor/scenery-editor.cpp index a3560d2f..1f2fabf3 100644 --- a/editor/scenery-editor.cpp +++ b/editor/scenery-editor.cpp @@ -1,6 +1,6 @@ #include "scenery-editor.hpp" #include "src/anim-atlas.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "compat/assert.hpp" namespace floormat { diff --git a/editor/tile-editor.cpp b/editor/tile-editor.cpp index 506cf9f3..e1661c64 100644 --- a/editor/tile-editor.cpp +++ b/editor/tile-editor.cpp @@ -2,7 +2,7 @@ #include "tile-atlas.hpp" #include "world.hpp" #include "keys.hpp" -#include "loader.hpp" +#include "loader/loader.hpp" #include "random.hpp" #include "serialize/json-helper.hpp" #include "serialize/tile-atlas.hpp" diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt new file mode 100644 index 00000000..9c0b6ee7 --- /dev/null +++ b/loader/CMakeLists.txt @@ -0,0 +1,16 @@ +set(self floormat-loader) +file(GLOB sources "*.cpp" CONFIGURE_ARGS) +add_library(${self} STATIC "${sources}") +target_link_libraries( + ${self} PUBLIC + floormat-serialize + floormat + Magnum::Magnum + Magnum::Trade +) +if(WIN32) + target_link_libraries(${self} PUBLIC ntdll) +endif() +if(FLOORMAT_PRECOMPILED-HEADERS) + target_precompile_headers(${self} PRIVATE precomp.hpp) +endif() diff --git a/loader/loader-impl.cpp b/loader/impl.cpp index 955ccf03..99be0be6 100644 --- a/loader/loader-impl.cpp +++ b/loader/impl.cpp @@ -1,5 +1,5 @@ #include "impl.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "src/tile-atlas.hpp" #include "compat/assert.hpp" #include "compat/alloca.hpp" diff --git a/src/loader.cpp b/loader/loader.cpp index c4329de3..83c3eed2 100644 --- a/src/loader.cpp +++ b/loader/loader.cpp @@ -1,5 +1,4 @@ #include "loader.hpp" - namespace floormat { loader_::loader_() = default; loader_::~loader_() = default; diff --git a/src/loader.hpp b/loader/loader.hpp index 32158675..32158675 100644 --- a/src/loader.hpp +++ b/loader/loader.hpp diff --git a/loader/precomp.hpp b/loader/precomp.hpp new file mode 100644 index 00000000..4ebd56b2 --- /dev/null +++ b/loader/precomp.hpp @@ -0,0 +1,7 @@ +#pragma once +#include "../src/precomp.hpp" +#include <Corrade/PluginManager/PluginManager.h> +#include <Corrade/Utility/Implementation/ErrorString.h> +#include <Magnum/Trade/AbstractImporter.h> +#include <Magnum/Trade/ImageData.h> +#include <Magnum/Trade/AbstractImageConverter.h> diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 1ad37734..a84337cc 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,7 +1,7 @@ -set(self ${PROJECT_NAME}-main) +set(self floormat-main) file(GLOB sources "*.cpp" CONFIGURE_ARGS) -link_libraries(${PROJECT_NAME}) +link_libraries(floormat-draw floormat) link_libraries(Magnum::Sdl2Application Corrade::Containers Magnum::GL Magnum::Trade fmt::fmt) add_library(${self} STATIC "${sources}") diff --git a/serialize/CMakeLists.txt b/serialize/CMakeLists.txt new file mode 100644 index 00000000..65b63174 --- /dev/null +++ b/serialize/CMakeLists.txt @@ -0,0 +1,13 @@ +set(self floormat-serialize) +file(GLOB sources "*.cpp" CONFIGURE_ARGS) +add_library(${self} STATIC "${sources}") +target_link_libraries( + ${self} PUBLIC + floormat-loader + floormat + Magnum::Magnum + nlohmann_json::nlohmann_json +) +if(FLOORMAT_PRECOMPILED-HEADERS) + target_precompile_headers(${self} PRIVATE precomp.hpp) +endif() diff --git a/serialize/json-helper.cpp b/serialize/json-helper.cpp index d21d48f4..eda628de 100644 --- a/serialize/json-helper.cpp +++ b/serialize/json-helper.cpp @@ -11,7 +11,7 @@ static T open_stream(StringView filename) { T s; s.open(filename.data(), mode); - if (!s.good()) + if (!s) { char errbuf[128]; constexpr auto get_error_string = []<std::size_t N> (char (&buf)[N]) diff --git a/serialize/precomp.hpp b/serialize/precomp.hpp new file mode 100644 index 00000000..23c79b16 --- /dev/null +++ b/serialize/precomp.hpp @@ -0,0 +1,4 @@ +#pragma once +#include "../src/precomp.hpp" +#include <nlohmann/json_fwd.hpp> +#include <nlohmann/json.hpp> diff --git a/serialize/tile-atlas.cpp b/serialize/tile-atlas.cpp index 451fb48c..a92dfc28 100644 --- a/serialize/tile-atlas.cpp +++ b/serialize/tile-atlas.cpp @@ -2,7 +2,7 @@ #include "serialize/tile-atlas.hpp" #include "serialize/corrade-string.hpp" #include "serialize/magnum-vector2i.hpp" -#include "loader.hpp" +#include "loader/loader.hpp" #include <tuple> #include <nlohmann/json.hpp> diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp index 602eabf5..2ec62015 100644 --- a/serialize/world-reader.cpp +++ b/serialize/world-reader.cpp @@ -2,7 +2,7 @@ #include "world-impl.hpp" #include "binary-reader.inl" #include "src/world.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "src/tile-atlas.hpp" #include <cstring> diff --git a/shaders/tile.cpp b/shaders/tile.cpp index 859ba4aa..ade9b5a1 100644 --- a/shaders/tile.cpp +++ b/shaders/tile.cpp @@ -1,5 +1,5 @@ #include "shaders/tile.hpp" -#include "loader.hpp" +#include "loader/loader.hpp" #include "compat/assert.hpp" #include "local-coords.hpp" #include <Corrade/Containers/Iterable.h> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ae5bfd02..5f73bfad 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,12 +1,11 @@ -set(self ${PROJECT_NAME}) -file(GLOB sources "*.cpp" "../shaders/*.cpp" "../serialize/*.cpp" "../draw/*.cpp" CONFIGURE_ARGS) +set(self floormat) +file(GLOB sources "*.cpp" "../shaders/*.cpp" CONFIGURE_ARGS) add_library(${self} STATIC "${sources}") target_link_libraries( ${self} PUBLIC Magnum::GL Magnum::Magnum Magnum::Shaders - nlohmann_json::nlohmann_json ) if(FLOORMAT_PRECOMPILED-HEADERS) target_precompile_headers(${self} PRIVATE precomp.hpp) diff --git a/src/precomp.hpp b/src/precomp.hpp index 9cdc85d6..5ec01fe0 100644 --- a/src/precomp.hpp +++ b/src/precomp.hpp @@ -10,10 +10,12 @@ #endif #include <bit> +#include <cerrno> #include <cstddef> #include <cstdint> -#include <cstdio> +#include <cstring> #include <cmath> +#include <cstdio> #include <concepts> #include <iterator> @@ -31,13 +33,16 @@ #include <unordered_map> #include <Corrade/Containers/Array.h> -#include <Corrade/Containers/ArrayView.h> -#include <Corrade/Containers/StringView.h> +#include <Corrade/Containers/ArrayViewStl.h> +#include <Corrade/Containers/EnumSet.h> #include <Corrade/Containers/OptionalStl.h> #include <Corrade/Containers/Pointer.h> -#include <Corrade/Containers/ArrayViewStl.h> // TODO maybe remove stl +#include <Corrade/Containers/StringStl.h> #include <Corrade/Containers/StringStlHash.h> + #include <Corrade/Utility/DebugStl.h> +#include <Corrade/Utility/Resource.h> +#include <Corrade/Utility/Path.h> #include <Magnum/Magnum.h> #include <Magnum/Math/Vector2.h> @@ -50,5 +55,3 @@ #include <Magnum/GL/Renderer.h> #include <Magnum/GL/Texture.h> #include <Magnum/Trade/ImageData.h> - -#include <nlohmann/json.hpp> diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 71b9ed93..d7d202dc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,10 +1,10 @@ -set(self "${PROJECT_NAME}-test") -file(GLOB sources "*.cpp" "../loader/*.cpp" CONFIGURE_ARGS) +set(self floormat-test) +file(GLOB sources "*.cpp" CONFIGURE_ARGS) file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/test") -link_libraries(${PROJECT_NAME}) -link_libraries(Magnum::Trade) +link_libraries(Magnum::GL Magnum::Trade) +link_libraries(floormat-loader floormat-serialize floormat) if(APPLE) link_libraries(Magnum::WindowlessCglApplication) @@ -16,4 +16,7 @@ else() endif() add_executable(${self} "${sources}") +if(FLOORMAT_PRECOMPILED-HEADERS) + target_precompile_headers(${self} PRIVATE precomp.hpp) +endif() install(TARGETS ${self} RUNTIME DESTINATION bin) diff --git a/test/json.cpp b/test/json.cpp index fa4564fd..b5caf145 100644 --- a/test/json.cpp +++ b/test/json.cpp @@ -7,7 +7,7 @@ #include "tile-atlas.hpp" #include "tile.hpp" #include "chunk.hpp" -#include "loader.hpp" +#include "loader/loader.hpp" #include <Corrade/Containers/StringView.h> #include <Corrade/Utility/Path.h> diff --git a/test/main.cpp b/test/main.cpp index f09768a9..d20d5d26 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,5 +1,5 @@ #include "app.hpp" -#include "loader.hpp" +#include "loader/loader.hpp" namespace floormat { @@ -33,4 +33,3 @@ int main(int argc, char** argv) floormat::floormat application{{argc, argv}}; return application.exec(); } - diff --git a/test/precomp.hpp b/test/precomp.hpp new file mode 100644 index 00000000..c183dcc0 --- /dev/null +++ b/test/precomp.hpp @@ -0,0 +1,13 @@ +#pragma once +#include "../src/precomp.hpp" + +#if 0 +#ifdef __APPLE__ +#include <Magnum/Platform/WindowlessCglApplication.h> +#elif defined _WIN32 +#include <Magnum/Platform/WindowlessWglApplication.h> +#else +#include <Magnum/Platform/WindowlessGlxApplication.h> +#endif +#endif +#include <Magnum/Platform/GLContext.h> diff --git a/test/serializer.cpp b/test/serializer.cpp index c1ab5fef..0625f294 100644 --- a/test/serializer.cpp +++ b/test/serializer.cpp @@ -1,6 +1,6 @@ #include "app.hpp" #include "src/world.hpp" -#include "src/loader.hpp" +#include "loader/loader.hpp" #include "src/tile-atlas.hpp" #include <Corrade/Utility/Path.h> |