summaryrefslogtreecommitdiffhomepage
path: root/serialize/world-impl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize/world-impl.hpp')
-rw-r--r--serialize/world-impl.hpp60
1 files changed, 3 insertions, 57 deletions
diff --git a/serialize/world-impl.hpp b/serialize/world-impl.hpp
index 18aec72a..7eb6c7c9 100644
--- a/serialize/world-impl.hpp
+++ b/serialize/world-impl.hpp
@@ -3,39 +3,12 @@
#include <concepts>
#include <Corrade/Containers/StringView.h>
-/* protocol changelog:
- * 1) Initial version.
- * 2) Tile atlas variant now always a uint8_t. Was uint16_t or uint8_t
- * depending on value of the tile flag (1 << 6) which is now removed.
- * 3) Serialize scenery. Tile flag (1 << 6) added.
- * 4) Scenery dt now stored as fixed-point uint16_t.
- * 5) Serialize scenery pixel offset.
- * 6) Serialize scenery bboxes.
- * 7) Serialize scenery bbox_size offset.
- * 8) Entity subtypes.
- * 9) Interned strings.
- * 10) Chunk Z level.
- * 11) RLE empty tiles.
- * 12) Don't write object name twice.
- * 13) Entity counter initialized to 1024.
- * 14) Always store object offset, rework how sc_exact works.
- * 15) Add light alpha.
- * 16) One more bit for light falloff enum.
- * 17) Switch critter::offset_frac to unsigned.
- * 20) Just rewrite the whole thing.
- */
-
-namespace floormat {
-struct object;
-struct object_proto;
-} // namespace floormat
-
namespace floormat::Serialize {
using tilemeta = uint8_t;
using atlasid = uint32_t;
using chunksiz = uint32_t;
-using proto_t = uint16_t;
+using proto_t = uint32_t;
template<typename T> struct int_traits;
@@ -44,29 +17,9 @@ template<std::signed_integral T> struct int_traits<T> { static constexpr T max =
namespace {
-constexpr inline proto_t proto_version = 20;
-constexpr inline proto_t min_proto_version = 20;
-constexpr inline auto file_magic = ".floormat.save"_s;
-constexpr inline auto chunk_magic = (uint16_t)0xdead;
-constexpr inline auto object_magic = (uint16_t)0xb00b;
-constexpr inline auto atlas_magic = (uint16_t)0xbeef;
-constexpr inline auto string_max = 256uz;
-constexpr inline auto null_atlas = (atlasid)-1;
-} // namespace
-template<typename T> concept object_subtype = std::is_base_of_v<object, T> || std::is_base_of_v<object_proto, T>;
-
-enum : tilemeta {
- meta_ground = 1 << 2,
- meta_wall_n = 1 << 3,
- meta_wall_w = 1 << 4,
- meta_rle = 1 << 7,
-
- meta_short_atlasid_ = 1 << 5,
- meta_short_variant_ = 1 << 6,
- meta_scenery_ = 1 << 7,
-};
+} // namespace
} // namespace floormat::Serialize
@@ -74,14 +27,7 @@ namespace floormat {
namespace {
-struct FILE_raii final {
- FILE_raii(FILE* s) noexcept : s{s} {}
- ~FILE_raii() noexcept { close(); }
- operator FILE*() noexcept { return s; }
- void close() noexcept { if (s) std::fclose(s); s = nullptr; }
-private:
- FILE* s;
-};
+
} // namespace