Add transperency when units are behind

This commit is contained in:
2024-01-15 13:16:24 +01:00
parent 0f33ed9fc0
commit ac7525c42a
5 changed files with 52 additions and 4 deletions

View File

@@ -465,6 +465,27 @@ void bzTileMapDrawCollisions(BzTileMap *map) {
}
}
void bzTileMapClearCollisions(BzTileMap *map) {
BZ_ASSERT(map->collisionMap);
for (i32 y = 0; y < map->width; y++) {
for (i32 x = 0; x < map->height; x++) {
i32 idxOffset = y * map->width + x;
u8 *cell = map->collisionMap + idxOffset;
*cell = 0;
}
}
}
void bzTileMapClearCollisionLayer(BzTileMap *map, i32 layer) {
BZ_ASSERT(map->collisionMap);
BZ_ASSERT(layer >= 0 && layer < 8);
for (i32 y = 0; y < map->width; y++) {
for (i32 x = 0; x < map->height; x++) {
i32 idxOffset = y * map->width + x;
u8 *cell = map->collisionMap + idxOffset;
*cell &= ~(1 << layer);
}
}
}
bool bzTileMapHasAnyCollision(BzTileMap *map, i32 x, i32 y) {
if (!map->collisionMap) return false;
i32 idx = y * map->width + x;

View File

@@ -132,6 +132,8 @@ bool bzTileMapCanRayCastLine(BzTileMap *map, Vector2 from, Vector2 to);
void bzTileMapDraw(BzTileMap *map);
void bzTileMapDrawCollisions(BzTileMap *map);
void bzTileMapClearCollisions(BzTileMap *map);
void bzTileMapClearCollisionLayer(BzTileMap *map, i32 layer);
bool bzTileMapHasAnyCollision(BzTileMap *map, i32 x, i32 y);
bool bzTileMapHasCollision(BzTileMap *map, i32 layer, i32 x, i32 y);
void bzTileMapSetCollisions(BzTileMap *map, bool collision, i32 layer, i32 startX, i32 startY, i32 sizeX, i32 sizeY);