summaryrefslogtreecommitdiffhomepage
path: root/serialize/world-reader.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2024-01-19 15:03:59 +0100
committerStanislaw Halik <sthalik@misaki.pl>2024-01-20 15:37:22 +0100
commitfff6a131ccadee9dcbd7f213e1846a0095f526e1 (patch)
tree199dee817f35460c2a48bc8aecfa403b33a02cd0 /serialize/world-reader.cpp
parent3264ef85e50add2db3c54291540bde7e8411cb70 (diff)
w
Diffstat (limited to 'serialize/world-reader.cpp')
-rw-r--r--serialize/world-reader.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp
index 4387acda..ab196f7e 100644
--- a/serialize/world-reader.cpp
+++ b/serialize/world-reader.cpp
@@ -1,7 +1,8 @@
#define FM_SERIALIZE_WORLD_IMPL
#include "world-impl.hpp"
-#include "binary-reader.inl"
#include "src/world.hpp"
+#if 0
+#include "binary-reader.inl"
#include "src/scenery.hpp"
#include "src/critter.hpp"
#include "src/light.hpp"
@@ -78,7 +79,12 @@ bool read_object_flags(binary_reader<T>& s, U& e)
e.pass = pass_mode(flags & pass_mask);
if (e.type != tag)
fm_throw("invalid object type '{}'"_cf, (int)e.type);
- if constexpr(tag == object_type::scenery)
+ if constexpr(tag == object_type::generic_scenery)
+ {
+ e.active = !!(flags & 1 << 2);
+ e.interactive = !!(flags & 1 << 4);
+ }
+ else if constexpr(tag == object_type::door)
{
e.active = !!(flags & 1 << 2);
e.closing = !!(flags & 1 << 3);
@@ -292,6 +298,9 @@ void reader_state::read_chunks(reader_t& s)
SET_CHUNK_SIZE();
switch (type)
{
+ case object_type::door {
+ ...; // todo
+ }
case object_type::critter: {
critter_proto proto;
proto.offset = offset;
@@ -337,7 +346,7 @@ void reader_state::read_chunks(reader_t& s)
(void)e;
break;
}
- case object_type::scenery: {
+ case object_type::generic_scenery: {
atlasid id; id << s;
bool exact;
rotation r;
@@ -548,3 +557,14 @@ world world::deserialize(StringView filename)
}
} // namespace floormat
+
+#endif
+
+namespace floormat {
+
+class world world::deserialize(StringView filename)
+{
+ fm_assert("todo" && false);
+}
+
+} // namespace floormat