diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-02 14:44:32 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-02 14:46:59 +0100 |
commit | 889d2c0c0933cf2fd9e068b1d2b79eb936b29b58 (patch) | |
tree | cfc5f5b6e417c28482734645a69e0d49388fa5b3 /serialize/world-reader.cpp | |
parent | 8dbf450e34121358992e48212ae22cb7f5fc92f9 (diff) |
src, serialize: work on pass mode
1. add one more value to the enum
2. serialize it properly in binary
3. serialize it as string in json
Diffstat (limited to 'serialize/world-reader.cpp')
-rw-r--r-- | serialize/world-reader.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp index b6cf8839..b0e14254 100644 --- a/serialize/world-reader.cpp +++ b/serialize/world-reader.cpp @@ -53,8 +53,7 @@ template<typename T> bool read_scenery_flags(binary_reader<T>& s, scenery& sc) { std::uint8_t flags; flags << s; - sc.passable = !!(flags & 1 << 0); - sc.blocks_view = !!(flags & 1 << 1); + sc.passability = pass_mode(flags & pass_mask); sc.active = !!(flags & 1 << 2); sc.closing = !!(flags & 1 << 3); sc.interactive = !!(flags & 1 << 4); @@ -148,7 +147,7 @@ void reader_state::read_chunks(reader_t& s) return { atlas, v }; }; - t.pass_mode() = pass_mode(flags & pass_mask); + t.passability() = pass_mode(flags & pass_mask); if (flags & meta_ground) t.ground() = make_atlas(); if (flags & meta_wall_n) @@ -179,13 +178,13 @@ void reader_state::read_chunks(reader_t& s) switch (auto x = pass_mode(flags & pass_mask)) { - case pass_shoot_through: - case pass_blocked: - case pass_ok: - t.pass_mode() = x; + case pass_mode::shoot_through: + case pass_mode::blocked: + case pass_mode::pass: + t.passability() = x; break; default: [[unlikely]] - fm_throw("bad pass mode '{}' for tile {}"_cf, i, x); + fm_throw("bad pass mode '{}' for tile {}"_cf, i, pass_mode_(x)); } } } |