From 88f34628e2ca069d1d384c11f2c3d9de6cf2f39d Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 18 Mar 2023 16:01:17 +0100 Subject: serialize/save: fix inverted flag condition --- serialize/world-impl.hpp | 4 ++-- serialize/world-reader.cpp | 4 ++-- serialize/world-writer.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/serialize/world-impl.hpp b/serialize/world-impl.hpp index 6d3f73cf..3487d854 100644 --- a/serialize/world-impl.hpp +++ b/serialize/world-impl.hpp @@ -62,9 +62,9 @@ template constexpr inline auto highbit = T(1) << sizeof(T)*8-1; template constexpr inline auto highbits = (T(1) << N)-1 << sizeof(T)*8-N-off; -constexpr inline atlasid meta_long_scenery_bit = highbit; +constexpr inline atlasid meta_short_scenery_bit = highbit; constexpr inline atlasid meta_rotation_bits = highbits; -constexpr inline atlasid scenery_id_flag_mask = meta_long_scenery_bit | meta_rotation_bits; +constexpr inline atlasid scenery_id_flag_mask = meta_short_scenery_bit | meta_rotation_bits; constexpr inline atlasid scenery_id_max = int_max & ~scenery_id_flag_mask; } // namespace diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp index ed256172..6dcd93ae 100644 --- a/serialize/world-reader.cpp +++ b/serialize/world-reader.cpp @@ -219,7 +219,7 @@ void reader_state::read_chunks(reader_t& s) offset_frac[1] << s; const auto name = s.read_asciiz_string(); proto.name = StringView{name.buf, name.len, StringViewFlag::Global|StringViewFlag::NullTerminated}; - if (id & meta_long_scenery_bit) + if (!(id & meta_short_scenery_bit)) read_offsets(s, proto); auto e = _world->make_entity(oid, {ch, local}, proto); (void)e; @@ -227,7 +227,7 @@ void reader_state::read_chunks(reader_t& s) } case entity_type::scenery: { atlasid id; id << s; - const bool exact = id & meta_long_scenery_bit; + const bool exact = id & meta_short_scenery_bit; const auto r = rotation(id >> sizeof(id)*8-1-rotation_BITS & rotation_MASK); id &= ~scenery_id_flag_mask; auto sc = lookup_scenery(id); diff --git a/serialize/world-writer.cpp b/serialize/world-writer.cpp index 799e386f..129a9e08 100644 --- a/serialize/world-writer.cpp +++ b/serialize/world-writer.cpp @@ -383,7 +383,7 @@ void writer_state::serialize_chunk(const chunk& c, chunk_coords coord) const auto sc_exact = C.offset.isZero() && C.bbox_offset.isZero() && C.bbox_size == def_char_bbox_size; - id |= meta_long_scenery_bit * sc_exact; + id |= meta_short_scenery_bit * sc_exact; id |= static_cast(C.r) << sizeof(id)*8-1-rotation_BITS; s << id; write_entity_flags(s, C); @@ -409,7 +409,7 @@ void writer_state::serialize_chunk(const chunk& c, chunk_coords coord) atlasid id = img_s; static_assert(rotation_BITS == 3); fm_assert((id & (1 << 16-3-1)-1) == id); - id |= meta_long_scenery_bit * sc_exact; + id |= meta_short_scenery_bit * sc_exact; id |= static_cast(sc.r) << sizeof(id)*8-1-rotation_BITS; s << id; if (!sc_exact) -- cgit v1.2.3