summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-12-11 07:13:38 +0100
committerStanislaw Halik <sthalik@misaki.pl>2023-12-11 07:13:38 +0100
commitcbe5b4ab6e6eb7bf1b2655c57d9e9f32e275e21f (patch)
tree1f3e10c862893ffd84945197e89db03a670d74db /src
parent18e85caba16438e1b5b44d86fd31021b336be73f (diff)
cb
Diffstat (limited to 'src')
-rw-r--r--src/wall-atlas.cpp29
1 files changed, 9 insertions, 20 deletions
diff --git a/src/wall-atlas.cpp b/src/wall-atlas.cpp
index e905eab2..a023c803 100644
--- a/src/wall-atlas.cpp
+++ b/src/wall-atlas.cpp
@@ -49,6 +49,7 @@ Vector2ui wall_atlas::expected_size(unsigned depth, Group_ group)
case corner_R:
return { size.x() - half_tile, size.z() };
default:
+ std::unreachable();
fm_assert(false);
}
}
@@ -136,35 +137,23 @@ auto wall_atlas::frames(Direction_ dir, Group_ gr) const -> ArrayView<const Fram
auto wall_atlas::group(Direction_ dir, Group_ gr) const -> const Group* { return group((size_t)dir, (size_t)gr); }
auto wall_atlas::group(size_t dir, Group_ gr) const -> const Group* { return group(dir, (size_t)gr); }
-auto wall_atlas::group(size_t dir, size_t group) const -> const Group*
+auto wall_atlas::group(size_t dir, size_t tag) const -> const Group*
{
- fm_assert(group < Group_COUNT);
- const auto* const set_ = direction(dir);
- if (!set_)
- return {};
- const auto& set = *set_;
-
- const auto memfn = set.groups[group].member;
- const Group& ret = set.*memfn;
-#if 0
- if (ret.is_empty())
+ fm_assert(tag < Group_COUNT);
+ if (const auto* D = direction(dir))
+ return group(*D, (Group_)tag);
+ else
return {};
-#endif
- return &ret;
}
auto wall_atlas::group(const Direction& dir, Group_ tag) const -> const Group*
{
fm_assert(tag < Group_::COUNT);
const auto memfn = dir.groups[(size_t)tag].member;
- const Group& ret = dir.*memfn;
- if (!ret.is_defined)
- return {};
-#if 0
- if (ret.is_empty())
+ if (const Group& ret = dir.*memfn; ret.is_defined)
+ return &ret;
+ else
return {};
-#endif
- return &ret;
}
auto wall_atlas::direction(size_t dir) const -> const Direction* { return get_Direction(Direction_(dir)); }