yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
tilemap.cc
Go to the documentation of this file.
1#include "app/gfx/tilemap.h"
2
3#include <vector>
4
6#include "app/gfx/bitmap.h"
7
8namespace yaze {
9namespace gfx {
10
11Tilemap CreateTilemap(std::vector<uint8_t> &data, int width, int height,
12 int tile_size, int num_tiles, SnesPalette &palette) {
13 Tilemap tilemap;
14 tilemap.tile_size.x = tile_size;
15 tilemap.tile_size.y = tile_size;
16 tilemap.map_size.x = num_tiles;
17 tilemap.map_size.y = num_tiles;
18 tilemap.atlas = Bitmap(width, height, 8, data);
19 tilemap.atlas.SetPalette(palette);
21 return tilemap;
22}
23
24void UpdateTilemap(Tilemap &tilemap, const std::vector<uint8_t> &data) {
25 tilemap.atlas.set_data(data);
27}
28
29void RenderTile(Tilemap &tilemap, int tile_id) {
30 if (tilemap.tile_bitmaps.find(tile_id) == tilemap.tile_bitmaps.end()) {
31 tilemap.tile_bitmaps[tile_id] =
32 Bitmap(tilemap.tile_size.x, tilemap.tile_size.y, 8,
33 GetTilemapData(tilemap, tile_id));
34 auto bitmap_ptr = &tilemap.tile_bitmaps[tile_id];
36 }
37}
38
39std::vector<uint8_t> GetTilemapData(Tilemap &tilemap, int tile_id) {
40 int tile_size = tilemap.tile_size.x;
41 std::vector<uint8_t> data(tile_size * tile_size);
42
43 int num_tiles = tilemap.map_size.x;
44 int index = tile_id * tile_size * tile_size;
45 int width = tilemap.atlas.width();
46
47 for (int ty = 0; ty < tile_size; ty++) {
48 for (int tx = 0; tx < tile_size; tx++) {
49 uint8_t value =
50 tilemap.atlas
51 .vector()[(tile_id % 8 * tile_size) +
52 (tile_id / 8 * tile_size * width) + ty * width + tx];
53 data[ty * tile_size + tx] = value;
54 }
55 }
56
57 return data;
58}
59
60} // namespace gfx
61} // namespace yaze
void UpdateBitmap(gfx::Bitmap *bitmap)
Used to update a bitmap on the screen.
Definition renderer.h:55
static Renderer & GetInstance()
Definition renderer.h:26
void RenderBitmap(gfx::Bitmap *bitmap)
Used to render a bitmap to the screen.
Definition renderer.h:48
Represents a bitmap image.
Definition bitmap.h:66
const std::vector< uint8_t > & vector() const
Definition bitmap.h:204
void set_data(const std::vector< uint8_t > &data)
Definition bitmap.h:209
void SetPalette(const SnesPalette &palette)
Set the palette for the bitmap.
Definition bitmap.cc:403
int width() const
Definition bitmap.h:196
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Contains classes for handling graphical data.
Definition bitmap.cc:18
Tilemap CreateTilemap(std::vector< uint8_t > &data, int width, int height, int tile_size, int num_tiles, SnesPalette &palette)
Definition tilemap.cc:11
void UpdateTilemap(Tilemap &tilemap, const std::vector< uint8_t > &data)
Definition tilemap.cc:24
std::vector< uint8_t > GetTilemapData(Tilemap &tilemap, int tile_id)
Definition tilemap.cc:39
void RenderTile(Tilemap &tilemap, int tile_id)
Definition tilemap.cc:29
Main namespace for the application.
Definition controller.cc:18
absl::flat_hash_map< int, Bitmap > tile_bitmaps
Definition tilemap.h:17