Add rocks

This commit is contained in:
2024-01-23 18:45:12 +01:00
parent 2d11bb4675
commit d2ea703ea9
3 changed files with 41 additions and 2 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

After

Width:  |  Height:  |  Size: 440 KiB

View File

@@ -97,6 +97,40 @@ bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer) {
}
bool initRocksLayer(BzTileMap *map, BzTileLayer *layer) {
Game *game = ecs_singleton_get_mut(ECS, Game);
BzTileset *tileset = bzTileLayerGetTileset(map, layer);
for (i32 y = 0; y < layer->height; y++) {
for (i32 x = 0; x < layer->width; x++) {
BzTile tile = layer->data[y * layer->width + x];
BzTile layerTile = tile;
tile = bzTilesetGetTileID(tileset, tile);
if (tile == -1) continue; // Not a tree
f32 sizeX = tileset->tileWidth;
f32 sizeY = tileset->tileHeight;
f32 posX = layer->offsetX + x * sizeX;
f32 posY = layer->offsetY + y * sizeY;
ecs_entity_t e = entityCreateEmpty();
SpatialGridID gridID = bzSpatialGridInsert(game->entityGrid, &e, posX, posY, sizeX, sizeY);
ecs_set(ECS, e, SpatialGridID, {gridID});
posX += sizeX * 0.5f;
posY += sizeY * 0.5f;
ecs_set(ECS, e, Position, {posX, posY});
ecs_set(ECS, e, Size, {sizeX, sizeY});
ecs_set(ECS, e, Rotation, {0});
BzTile tileID = bzTilesetGetTileID(tileset, layerTile);
ecs_set(ECS, e, TextureRegion, {tileset->tiles, bzTilesetGetTileRegion(tileset, tileID)});
ecs_set(ECS, e, Resource, {RES_GOLD, 80});
ecs_add_id(ECS, e, Selectable);
ecs_add_id(ECS, e, Harvestable);
}
}
return true;
}
bool initTreesLayer(BzTileMap *map, BzTileLayer *layer) {
Game *game = ecs_singleton_get_mut(ECS, Game);
@@ -169,8 +203,8 @@ void loadMap(Game *game, const char *path) {
.tilesets[0]=game->tileset,
.layers[LAYER_TERRAIN]=(BzTileLayerDesc) {"terrain", .renderer=terrainRender, .applyColliders=true},
.layers[LAYER_ROCKS]=(BzTileLayerDesc) {"rocks"},
.layers[LAYER_ROCKS2]=(BzTileLayerDesc) {"rocks_s"},
.layers[LAYER_ROCKS]=(BzTileLayerDesc) {"rocks", BZ_TILE_LAYER_SKIP_RENDER},
.layers[LAYER_ROCKS2]=(BzTileLayerDesc) {"rocks_s", BZ_TILE_LAYER_SKIP_RENDER},
.layers[LAYER_TREES]=(BzTileLayerDesc) {"trees", BZ_TILE_LAYER_SKIP_RENDER},
.layers[LAYER_TREES2]=(BzTileLayerDesc) {"trees_s", BZ_TILE_LAYER_SKIP_RENDER},
.layers[LAYER_BUILDINGS]=(BzTileLayerDesc) {"buildings", BZ_TILE_LAYER_SKIP_RENDER},
@@ -198,6 +232,9 @@ void loadMap(Game *game, const char *path) {
bzTileMapOverrideLayer(&game->map, LAYER_TREES, initTreesLayer);
bzTileMapOverrideLayer(&game->map, LAYER_TREES2, initTreesLayer);
bzTileMapOverrideLayer(&game->map, LAYER_ROCKS, initRocksLayer);
bzTileMapOverrideLayer(&game->map, LAYER_ROCKS2, initRocksLayer);
bzTileMapOverrideLayer(&game->map, LAYER_BUILDING_OWNER, initBuildingsLayer);
bzTileMapOverrideLayer(&game->map, LAYER_BUILDINGS, BZ_TILE_LAYER_CLEAR);

View File

@@ -12,6 +12,8 @@ bool initEntityObjectsLayer(BzTileMap *map, BzTileObjectGroup *objectGroup);
bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer);
bool initRocksLayer(BzTileMap *map, BzTileLayer *layer);
bool initTreesLayer(BzTileMap *map, BzTileLayer *layer);
typedef struct Game Game;