2025-08-03 14:57:36 +08:00

46 lines
802 B
C++

#ifndef ISTD_TILEMAP_TILE_H
#define ISTD_TILEMAP_TILE_H
#include <cstdint>
namespace istd {
enum class BaseTileType : std::uint8_t {
Land,
Mountain,
Sand,
Water,
Ice,
Deepwater,
_count
};
enum class SurfaceTileType : std::uint8_t {
Empty,
Oil,
_count
};
constexpr std::uint8_t base_tile_count = static_cast<std::uint8_t>(
BaseTileType::_count
);
constexpr std::uint8_t surface_tile_count = static_cast<std::uint8_t>(
SurfaceTileType::_count
);
static_assert(base_tile_count <= 16, "Base tile don't fit in 4 bits");
static_assert(surface_tile_count <= 16, "Surface tile don't fit in 4 bits");
struct Tile {
BaseTileType base : 4;
SurfaceTileType surface : 4;
friend bool operator==(Tile lhs, Tile rhs) = default;
};
static_assert(sizeof(Tile) == 1);
} // namespace istd
#endif