summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt9
-rw-r--r--anim-crop-tool/CMakeLists.txt4
-rw-r--r--draw/CMakeLists.txt11
-rw-r--r--draw/precomp.hpp2
-rw-r--r--editor/CMakeLists.txt10
-rw-r--r--editor/app.cpp2
-rw-r--r--editor/editor.cpp2
-rw-r--r--editor/precomp.hpp2
-rw-r--r--editor/scenery-editor.cpp2
-rw-r--r--editor/tile-editor.cpp2
-rw-r--r--loader/CMakeLists.txt16
-rw-r--r--loader/impl.cpp (renamed from loader/loader-impl.cpp)2
-rw-r--r--loader/loader.cpp (renamed from src/loader.cpp)1
-rw-r--r--loader/loader.hpp (renamed from src/loader.hpp)0
-rw-r--r--loader/precomp.hpp7
-rw-r--r--main/CMakeLists.txt4
-rw-r--r--serialize/CMakeLists.txt13
-rw-r--r--serialize/json-helper.cpp2
-rw-r--r--serialize/precomp.hpp4
-rw-r--r--serialize/tile-atlas.cpp2
-rw-r--r--serialize/world-reader.cpp2
-rw-r--r--shaders/tile.cpp2
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/precomp.hpp15
-rw-r--r--test/CMakeLists.txt11
-rw-r--r--test/json.cpp2
-rw-r--r--test/main.cpp3
-rw-r--r--test/precomp.hpp13
-rw-r--r--test/serializer.cpp2
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>