summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tile-atlas.cpp4
-rw-r--r--src/tile-atlas.hpp2
-rw-r--r--src/tile.hpp8
3 files changed, 10 insertions, 4 deletions
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<Vector2, 4> 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<std::array<Vector2, 4>[]>(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<const texcoords[]> 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<const texcoords[]> 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<tile_atlas> 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