Add rocks
This commit is contained in:
BIN
assets/game.png
BIN
assets/game.png
Binary file not shown.
|
Before Width: | Height: | Size: 440 KiB After Width: | Height: | Size: 440 KiB |
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user