Add BzTileID which refers to the tileset
This commit is contained in:
@@ -334,9 +334,10 @@ static void drawLayer(BzTileLayer *layer, BzTileset *tileset) {
|
||||
|
||||
for (i32 y = 0; y < layer->height; y++) {
|
||||
for (i32 x = 0; x < layer->width; x++) {
|
||||
BzTile tile = bzTileLayerGetTile(layer, x, y);
|
||||
if (tile - tileset->startID != -1) {
|
||||
Rectangle rec = bzTilesetGetTileRegion(tileset, tile);
|
||||
BzTile tile = bzTileLayerGetTile(layer, x, y);
|
||||
BzTileID tileID = bzTilesetGetTileID(tileset, tile);
|
||||
if (tileID != -1) {
|
||||
Rectangle rec = bzTilesetGetTileRegion(tileset, tileID);
|
||||
DrawTextureRec(tileset->tiles, rec, drawPos, WHITE);
|
||||
}
|
||||
drawPos.x += (float) tileset->tileWidth;
|
||||
@@ -382,7 +383,7 @@ BzTileObjectGroup *bzTileMapGetObjects(BzTileMap *map, i32 slotID) {
|
||||
BZ_ASSERT(slotID >= 0 && slotID < map->objectGroupCount);
|
||||
return &map->objectGroups[slotID];
|
||||
}
|
||||
static f32 abs(f32 x) {
|
||||
static f32 absf32(f32 x) {
|
||||
return x > 0 ? x : -x;
|
||||
}
|
||||
|
||||
@@ -399,7 +400,7 @@ f32 bzTileMapRayCast(BzTileMap *map, Vector2 from, Vector2 to, f32 maxDst, Vecto
|
||||
// sqrtf(1 + (dir.y / dir.x) * (dir.y / dir.x)),
|
||||
// sqrtf(1 + (dir.x / dir.y) * (dir.x / dir.y))
|
||||
//};
|
||||
Vector2 stepSize = {abs(1.0f / dir.x), abs(1.0f / dir.y)};
|
||||
Vector2 stepSize = {absf32(1.0f / dir.x), absf32(1.0f / dir.y)};
|
||||
|
||||
i32 cellX = (i32) from.x;
|
||||
i32 cellY = (i32) from.y;
|
||||
|
||||
@@ -78,7 +78,7 @@ BzTileset bzTilesetCreate(const BzTilesetDesc *desc) {
|
||||
return tileset;
|
||||
}
|
||||
|
||||
BzTile bzTilesetGetTile(BzTileset *tileset, BzTile tile) {
|
||||
BzTile bzTilesetGetTileID(BzTileset *tileset, BzTile tile) {
|
||||
if (tile == 0)
|
||||
return -1;
|
||||
tile = tile - tileset->startID;
|
||||
@@ -86,7 +86,6 @@ BzTile bzTilesetGetTile(BzTileset *tileset, BzTile tile) {
|
||||
return tile;
|
||||
}
|
||||
Rectangle bzTilesetGetTileRegion(BzTileset *tileset, BzTile tileID) {
|
||||
tileID = tileID - tileset->startID;
|
||||
if (tileID < 0 || tileID >= tileset->tileCount) {
|
||||
return (Rectangle){};
|
||||
}
|
||||
@@ -96,8 +95,6 @@ Rectangle bzTilesetGetTileRegion(BzTileset *tileset, BzTile tileID) {
|
||||
tileset->tileWidth, tileset->tileHeight};
|
||||
}
|
||||
BzTileShape bzTilesetGetTileCollider(BzTileset *tileset, BzTile tileID) {
|
||||
tileID = tileID - tileset->startID;
|
||||
|
||||
if (tileID < 0 || tileID >= tileset->tileCount) {
|
||||
return (BzTileShape) {.type = BZ_TILE_SHAPE_NONE};
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <raylib.h>
|
||||
|
||||
typedef i32 BzTile;
|
||||
typedef i32 BzTileID;
|
||||
|
||||
typedef struct BzTilesetDesc {
|
||||
const char *path;
|
||||
@@ -46,9 +47,9 @@ extern BzTileset BZ_TILESET_INVALID;
|
||||
|
||||
BzTileset bzTilesetCreate(const BzTilesetDesc *desc);
|
||||
|
||||
BzTile bzTilesetGetTile(BzTileset *tileset, BzTile tile);
|
||||
Rectangle bzTilesetGetTileRegion(BzTileset *tileset, BzTile tileID);
|
||||
BzTileShape bzTilesetGetTileCollider(BzTileset *tileset, BzTile tileID);
|
||||
BzTileID bzTilesetGetTileID(BzTileset *tileset, BzTile tile);
|
||||
Rectangle bzTilesetGetTileRegion(BzTileset *tileset, BzTileID tileID);
|
||||
BzTileShape bzTilesetGetTileCollider(BzTileset *tileset, BzTileID tileID);
|
||||
|
||||
void bzTilesetDestroy(BzTileset *tileset);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user