#pragma once #include #include "engine/point.hpp" #include "engine/rectangle.hpp" #include "engine/size.hpp" namespace devilution { using WorldTileCoord = uint8_t; using WorldTilePosition = PointOf; using WorldTileOffset = int8_t; using WorldTileDisplacement = DisplacementOf; using WorldTileSize = SizeOf; using WorldTileRectangle = RectangleOf; } // namespace devilution namespace std { /** * @brief Allows using WorldTilePosition as a map key for contexts where we want to lookup an entity by physical dungeon location */ template <> struct hash { size_t operator()(const devilution::WorldTilePosition &position) const noexcept { return static_cast(position.x) << 8 | position.y; } }; } // namespace std