summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--main/draw.cpp2
-rw-r--r--src/wall-atlas.cpp29
2 files changed, 11 insertions, 20 deletions
diff --git a/main/draw.cpp b/main/draw.cpp
index d74d9f38..98fd861e 100644
--- a/main/draw.cpp
+++ b/main/draw.cpp
@@ -109,6 +109,8 @@ auto main_impl::get_draw_bounds() const noexcept -> draw_bounds
y0 = std::min(y0, p.y);
y1 = std::max(y1, p.y);
}
+ // todo test this with the default viewport size using --magnum-dpi-scaling=1
+ x0 -= 1; y0 -= 1; x1 += 1; y1 += 1;
constexpr int16_t mx = tile_shader::max_screen_tiles.x()/(int16_t)2,
my = tile_shader::max_screen_tiles.y()/(int16_t)2;
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)); }