Implement harvest worker AI

This commit is contained in:
2023-12-17 14:20:13 +01:00
parent 5564df4768
commit 33b28b620d
14 changed files with 338 additions and 40 deletions

View File

@@ -6,6 +6,9 @@
#include "game_state.h"
#include "map_layers.h"
#include "unit_ai.h"
#include "unit_actions.h"
bool initGameObjectsLayer(BzTileMap *map, BzTileObjectGroup *objectGroup) {
Game *game = ecs_singleton_get_mut(ECS, Game);
for (i32 i = 0; i < objectGroup->objectCount; i++) {
@@ -67,15 +70,19 @@ bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer) {
buildingTile = getTileBuilding(buildingTile);
if (buildingTile == BUILDING_NONE || ownerTile == 0) continue;
// We have a building
TileSize size = {};
getBuildingSize(buildingTile, &size.sizeX, &size.sizeY);
bzTileLayerSetTile(ownershipLayer, 0, x, y, size.sizeX, size.sizeY);
TileSize tileSize = {};
getBuildingSize(buildingTile, &tileSize.sizeX, &tileSize.sizeY);
bzTileLayerSetTile(ownershipLayer, 0, x, y, tileSize.sizeX, tileSize.sizeY);
const i32 tileWidth = map->tileWidth;
const i32 tileHeight = map->tileHeight;
ecs_entity_t e = ecs_new_id(ECS);
ecs_set(ECS, e, Position, {.x = x * tileWidth, .y = y * tileHeight});
ecs_set(ECS, e, TileSize, {.sizeX = size.sizeX * tileWidth, .sizeY = size.sizeY * tileHeight});
Size size = {.x = tileSize.sizeX * tileWidth, .y = tileSize.sizeY * tileHeight };
ecs_set_ptr(ECS, e, Size, &size);
ecs_set(ECS, e, Position, {
.x = x * tileWidth + size.x * 0.5f,
.y = y * tileHeight + size.y * 0.5f
});
ownerTile = bzTilesetGetTileID(buildingTileset, ownerTile);
ownerTile = getTileBuilding(ownerTile);
ecs_set(ECS, e, Owner, {.playerID=ownerTile});
@@ -83,6 +90,9 @@ bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer) {
//if (buildingTile == BUILDINGS_WAREHOUSE) {
// ecs_set(ECS, e, Storage, {});
//}
if (buildingTile == BUILDING_KEEP) {
ecs_set(ECS, e, Storage, {.capacity[RES_WOOD] = 1000});
}
//bzTileMapUpdateCollider(&GAME.map, x, y);
}