Files
aee-arcade/source/game/map/tilemap.hpp
T

37 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include <cstdint>
#include <string>
#include <vector>
// 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<std::uint32_t> pixels_;
};