From df2073a5692c991e4fc43c926334983997d272af Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 21 Oct 2022 21:11:33 +0200 Subject: lots of refactoring types crap --- src/tile-atlas.cpp | 4 ++-- src/tile-atlas.hpp | 2 +- src/tile.hpp | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tile-atlas.cpp b/src/tile-atlas.cpp index 6c2bd746..3f08bc9c 100644 --- a/src/tile-atlas.cpp +++ b/src/tile-atlas.cpp @@ -28,7 +28,7 @@ std::array tile_atlas::texcoords_for_id(std::size_t i) const return texcoords_[i]; } -auto tile_atlas::make_texcoords(Vector2ui pixel_size, Vector2ub tile_count, std::uint8_t i) -> texcoords +auto tile_atlas::make_texcoords(Vector2ui pixel_size, Vector2ub tile_count, std::size_t i) -> texcoords { const auto sz = pixel_size/Vector2ui{tile_count}; const Vector2ui id = { std::uint32_t(i % tile_count[0]), std::uint32_t(i / tile_count[0]) }; @@ -46,7 +46,7 @@ auto tile_atlas::make_texcoords_array(Vector2ui pixel_size, Vector2ub tile_count { const std::size_t N = Vector2ui{tile_count}.product(); auto ptr = std::make_unique[]>(N); - for (std::uint8_t i = 0; i < N; i++) + for (std::size_t i = 0; i < N; i++) ptr[i] = make_texcoords(pixel_size, tile_count, i); return ptr; } diff --git a/src/tile-atlas.hpp b/src/tile-atlas.hpp index 712c396c..97f9f408 100644 --- a/src/tile-atlas.hpp +++ b/src/tile-atlas.hpp @@ -29,7 +29,7 @@ struct tile_atlas final private: static std::unique_ptr make_texcoords_array(Vector2ui pixel_size, Vector2ub tile_count); - static texcoords make_texcoords(Vector2ui pixel_size, Vector2ub tile_count, std::uint8_t i); + static texcoords make_texcoords(Vector2ui pixel_size, Vector2ub tile_count, std::size_t i); std::unique_ptr texcoords_; GL::Texture2D tex_; diff --git a/src/tile.hpp b/src/tile.hpp index 067df3c7..499acd97 100644 --- a/src/tile.hpp +++ b/src/tile.hpp @@ -12,9 +12,15 @@ struct tile_atlas; struct tile_image final { std::shared_ptr atlas; - std::uint8_t variant = 0xff; + std::size_t variant = (std::size_t)-1; explicit operator bool() const noexcept { return !!atlas; } + + std::strong_ordering operator<=>(const tile_image& o) const noexcept + { + const auto ret = atlas.get() <=> o.atlas.get(); + return ret != std::strong_ordering::equal ? ret : variant <=> o.variant; + } }; struct tile final -- cgit v1.2.3