Tilemap YAML: sala piràmide renderitzada amb tiles reals de tomb.gif i caixa de debug llevada (v0.13.0)

This commit is contained in:
JailDesigner committed 2026-04-19 19:35:21 +02:00
1 parent c921833537
commit 46a578fd86
12 files changed
+501 -45

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
#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_;
};