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:
1 parent
c921833537
commit
46a578fd86
12 files changed
+501
-45
No files matched your search
@@ -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_;
|
||||
};
|
||||
Reference in new issue
Block a user