#pragma once #include #include #include // Tilemap basat en tiles 16×16 (o la mida que indique el yaml). El mapa es // prerenderitza una sola vegada a un buffer ARGB propi a la construcció; a // partir d'aquí, cada render és una simple còpia de píxels clipada sobre el // canvas del joc. Això evita recórrer la graella de tiles cada frame. // // Les cel·les sense tile (p.ex. les caselles dels sarcòfags, que es faran // actors independents) es deixen transparents (alpha=0) i el canvas // subjacent hi queda visible. class Tilemap { public: // Carrega el yaml (camí relatiu o absolut), el tileset referenciat i // prerenderitza la graella a memòria. explicit Tilemap(const std::string& yaml_path); // Dibuixa la textura prerenderitzada al canvas a l'origen del yaml. // Offsets negatius permeten overscan (textura més gran que el canvas). void render() const; [[nodiscard]] auto getWidth() const -> int { return width_px_; } [[nodiscard]] auto getHeight() const -> int { return height_px_; } [[nodiscard]] auto getOriginX() const -> int { return origin_x_; } [[nodiscard]] auto getOriginY() const -> int { return origin_y_; } private: int width_px_{0}; int height_px_{0}; int origin_x_{0}; int origin_y_{0}; std::vector pixels_; };