From 0d78ec0e53d9824a029840e74bf0721ed2187e6a Mon Sep 17 00:00:00 2001 From: davidovski Date: Sun, 23 Jul 2023 15:30:42 +0200 Subject: add chunk caching --- src/tiledmap.h | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'src/tiledmap.h') diff --git a/src/tiledmap.h b/src/tiledmap.h index fb9c789..2c4cf94 100644 --- a/src/tiledmap.h +++ b/src/tiledmap.h @@ -1,23 +1,33 @@ #include +#include "kdtree.h" -typedef struct TiledMap { - int width; - int height; - char * tilelayout; +#define CHUNK_CACHE_SIZE 32 + +typedef char * Chunk; + +typedef struct CachedChunk { + long filePos; + Chunk chunk; +} CachedChunk; + +typedef struct ChunkedTiledMap { + FILE * file; + int chunkWidth; + int chunkHeight; int tileSize; int atlasSize[2]; int tileCount; Color * atlasData; + kdtree_t * chunkTree; } TiledMap; void textureFromPixels(Texture2D *texOut, Color *pixels, int width, int height); +TiledMap openTiledMap(char * filename); +CachedChunk * loadChunk(TiledMap *tiledMap, int x, int y); +char getChunkedTile(TiledMap *tiledMap, int x, int y); +char setChunkedTile(TiledMap * tiledMap, int x, int y, char value); +CachedChunk * createChunk(TiledMap * tiledMap, int x, int y, Chunk chunk); +void writeTiledMapHeader(TiledMap tiledMap); +TiledMap openNewTiledMap(char * filename, Image atlas, int tileSize, int chunkWidth, int chunkHeight, int width, int height); +void closeTiledMap(TiledMap * tiledMap); -void setTiledMapTile(TiledMap tiledMap, int pos[2], char tile); - -char getTiledMapTile(TiledMap tiledMap, int pos[2]); - -TiledMap loadTiledMap(char * filename); - -void saveTiledMap(char * filename, TiledMap tiledMap); - -TiledMap newTiledMap(Image atlas, int tileSize, int width, int height); -- cgit v1.2.1