From d34cf9c575fef03c6505939fa77ebedabfae413a Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 27 Aug 2024 14:27:50 +0200 Subject: wip --- src/chunk-walls.cpp | 21 +++++++++++++++++++++ test/hole.cpp | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/chunk-walls.cpp b/src/chunk-walls.cpp index 17aac134..14249671 100644 --- a/src/chunk-walls.cpp +++ b/src/chunk-walls.cpp @@ -40,6 +40,27 @@ using Wall::Group_; using Wall::Direction_; using Wall::Frame; +template +constexpr Quads::texcoords hole_to_texcoord(CutResult::rect hole) +{ + static_assert(G < Group_::COUNT); + + switch (G) + { + using enum Group_; + case COUNT: fm_assert(false); + case wall: + fm_assert(false); + break; + case corner: + case side: + case top: + fm_assert(false); + } + //std::unreachable(); + return {}; +} + template constexpr Quads::quad get_quad(float depth) { diff --git a/test/hole.cpp b/test/hole.cpp index ade06a9c..f5cbb345 100644 --- a/test/hole.cpp +++ b/test/hole.cpp @@ -1,6 +1,7 @@ #include "app.hpp" #include "src/hole.hpp" #include "src/hole-cut.hpp" +#include "src/tile-constants.hpp" namespace floormat { namespace { @@ -54,6 +55,25 @@ void test1(Vector2i offset) #endif } +auto make_search_predicate(const CutResult& res) +{ + return [&](Vector2i min, Vector2i max) -> bool { + for (auto i = 0u; i < res.size; i++) + if (res.array[i].min == min && res.array[i].max == max) + return true; + return false; + }; +} + +void test2() +{ + const auto res = CutResult::cut({{}, Vector2ub{tile_size_xy}}, {Vector2i(-tile_size_xy/2), Vector2ub{tile_size_xy}}); + fm_assert(res.size == 2); + const auto has = make_search_predicate(res); + fm_assert(has({-32, 0}, {32, 32})); + fm_assert(has({0, -32}, {32, 0})); +} + } // namespace void Test::test_hole() @@ -68,6 +88,8 @@ void Test::test_hole() for (auto offset : offsets) test1(offset); + + test2(); } } // namespace floormat -- cgit v1.2.3