#pragma once #include #include #include #include #include #include "Web/MapRegistry.h" // ------------------------------------------------------------------------- // MapTileService // Loads a full map PNG on first request, caches it in memory, and serves // 512×512 tiles on demand (nearest-neighbour resampled). // ------------------------------------------------------------------------- class MapTileService { public: /// Return PNG-encoded bytes for the requested tile. /// errCode is set to one of: 200, 400, 404, 500. /// An empty vector is returned for any non-200 result. std::vector GetTile(const MapInfo& map, int tileX, int tileY, int& errCode); private: struct Image { std::vector pixels; // RGBA, row-major int w = 0; int h = 0; }; std::mutex m_mutex; std::unordered_map m_cache; // mapId → loaded image /// Return cached Image or attempt to load it. Returns nullptr on failure. const Image* LoadOrGet(const std::string& mapId); };