summaryrefslogtreecommitdiffhomepage
path: root/serialize/world-reader.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-12-02 14:44:32 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-12-02 14:46:59 +0100
commit889d2c0c0933cf2fd9e068b1d2b79eb936b29b58 (patch)
treecfc5f5b6e417c28482734645a69e0d49388fa5b3 /serialize/world-reader.cpp
parent8dbf450e34121358992e48212ae22cb7f5fc92f9 (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.cpp15
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));
}
}
}