Make collider retrieving more permissive

This commit is contained in:
2023-11-09 09:49:14 +01:00
parent ced7aa2ea5
commit 6cc3ce9750
3 changed files with 22 additions and 23 deletions

View File

@@ -27,6 +27,24 @@ bool handleGameObjects(BzTileObjectLayer *objectLayer) {
return false;
}
bool canBuildOn(BzTileMap *map, i32 tileX, i32 tileY, i32 sizeX, i32 sizeY) {
// Need to check neighbour tiles
tileX -= 1;
tileY -= 1;
sizeX += 2;
sizeY += 2;
for (i32 y = tileY; y < tileY + sizeY; y++) {
for (i32 x = tileX; x < tileX + sizeX; x++) {
BzTileCollider collider = bzTileMapGetCollider(map, x, y);
if (collider.shapes[0].type != BZ_TILE_SHAPE_NONE) return false;
}
}
return true;
}
bool init(Game *game) {
int screenWidth = 1280;
int screenHeight = 720;
@@ -100,7 +118,7 @@ void render(float dt, Game *game) {
if (tileX != 0 && tileY != 0) {
bool canPlace = bzTileMapCanPlace(&game->map, tileX, tileY, sizeX, sizeY);
bool canPlace = canBuildOn(&game->map, tileX, tileY, sizeX, sizeY);
Color placeColor = canPlace ?
(Color) {0, 255, 0, 200} :
(Color) {255, 0, 0, 200};