Move world files to engine

This commit is contained in:
2023-11-08 06:07:22 +01:00
parent 03b824b756
commit 120cb7503b
13 changed files with 82 additions and 82 deletions

View File

@@ -23,6 +23,10 @@ set(BreezeSources
breeze/core/module_system.c
breeze/utils/tokenizer.c
breeze/world/layer.c
breeze/world/map.c
breeze/world/tileset.c
)
set(BreezeHeaders
@@ -33,6 +37,10 @@ set(BreezeHeaders
breeze/utils/tokenizer.h
breeze/world/layer.h
breeze/world/map.h
breeze/world/tileset.h
breeze/defines.h
breeze/game.h

View File

@@ -8,6 +8,10 @@
#include "breeze/utils/tokenizer.h"
#include "breeze/world/layer.h"
#include "breeze/world/map.h"
#include "breeze/world/tileset.h"
#include "breeze/defines.h"
#include "breeze/game.h"

View File

@@ -0,0 +1 @@
#include "layer.h"

View File

@@ -0,0 +1,4 @@
#ifndef BREEZE_LAYER_H
#define BREEZE_LAYER_H
#endif //BREEZE_LAYER_H

View File

@@ -0,0 +1 @@
#include "map.h"

View File

@@ -0,0 +1,4 @@
#ifndef BREEZE_MAP_H
#define BREEZE_MAP_H
#endif //BREEZE_MAP_H

View File

@@ -0,0 +1,49 @@
#include <assert.h>
#include <stdio.h>
#include <cute_tiled.h>
#include "tileset.h"
BzTileset BZ_TILESET_INVALID = {.isValid = false};
BzTileset bzTilesetCreate(const BzTilesetDesc *desc) {
BzTileset tileset = {};
cute_tiled_tileset_t *source = cute_tiled_load_external_tileset(desc->path, NULL);
tileset.tiles = LoadTexture(desc->texturePath);
tileset.startID = source->firstgid;
tileset.tileWidth = source->tilewidth;
tileset.tileHeight = source->tileheight;
tileset.offsetX = source->tileoffset_x;
tileset.offsetY = source->tileoffset_y;
tileset.width = tileset.tiles.width / tileset.tileWidth;
tileset.height = tileset.tiles.height / tileset.tileHeight;
cute_tiled_free_external_tileset(source);
if (tileset.tiles.width != source->imagewidth ||
tileset.tiles.height != source->imageheight) {
bzTilesetDestroy(&tileset);
return BZ_TILESET_INVALID;
}
tileset.isValid = true;
return tileset;
}
Rectangle bzTilesetGetTileRegion(BzTileset *tileset, int tileID) {
tileID = tileID - tileset->startID;
int posX = tileID % tileset->width;
int posY = tileID / tileset->width;
return (Rectangle) {posX * tileset->tileWidth, posY * tileset->tileHeight,
tileset->tileWidth, tileset->tileHeight};
}
void bzTilesetDestroy(BzTileset *tileset) {
UnloadTexture(tileset->tiles);
*tileset = BZ_TILESET_INVALID;
}

View File

@@ -0,0 +1,33 @@
#ifndef BREEZE_TILESET_H
#define BREEZE_TILESET_H
#include <raylib.h>
typedef struct BzTilesetDesc {
const char *path;
const char *texturePath;
} BzTilesetDesc;
typedef struct BzTileset {
Texture2D tiles;
int startID;
int tileWidth;
int tileHeight;
int width;
int height;
int offsetX;
int offsetY;
bool isValid;
} BzTileset;
extern BzTileset BZ_TILESET_INVALID;
BzTileset bzTilesetCreate(const BzTilesetDesc *desc);
Rectangle bzTilesetGetTileRegion(BzTileset *tileset, int tileID);
void bzTilesetDestroy(BzTileset *tileset);
#endif //BREEZE_TILESET_H