Properly set building owner + apply building pop capacity
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -37,7 +37,7 @@ bool canPlaceBuilding(Game *game, BuildingType type, BzTile tileX, BzTile tileY)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ecs_entity_t placeBuilding(Game *game, BuildingType type,
|
ecs_entity_t placeBuilding(Game *game, BuildingType type,
|
||||||
BzTile posX, BzTile posY, Owner owner) {
|
BzTile posX, BzTile posY, Player player) {
|
||||||
if (type <= BUILDING_NONE || type >= BUILDING_COUNT)
|
if (type <= BUILDING_NONE || type >= BUILDING_COUNT)
|
||||||
return 0;
|
return 0;
|
||||||
i32 sizeX, sizeY;
|
i32 sizeX, sizeY;
|
||||||
@@ -71,7 +71,7 @@ ecs_entity_t placeBuilding(Game *game, BuildingType type,
|
|||||||
pos.x - size.x * 0.5f, pos.y - size.y * 0.5f,
|
pos.x - size.x * 0.5f, pos.y - size.y * 0.5f,
|
||||||
size.x, size.y);
|
size.x, size.y);
|
||||||
ecs_set_ptr(ECS, building, SpatialGridID, &gridID);
|
ecs_set_ptr(ECS, building, SpatialGridID, &gridID);
|
||||||
ecs_set_ptr(ECS, building, Owner, &owner);
|
ecs_set(ECS, building, Owner, {player});
|
||||||
BzTileset *tileset = &game->tileset;
|
BzTileset *tileset = &game->tileset;
|
||||||
TextureRegion region = {
|
TextureRegion region = {
|
||||||
tileset->tiles,
|
tileset->tiles,
|
||||||
@@ -85,6 +85,7 @@ ecs_entity_t placeBuilding(Game *game, BuildingType type,
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BUILDING_KEEP:
|
case BUILDING_KEEP:
|
||||||
|
ecs_set(ECS, building, AddPopCapacity, {10});
|
||||||
ecs_add_id(ECS, building, Storage);
|
ecs_add_id(ECS, building, Storage);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -119,12 +120,6 @@ void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]) {
|
|||||||
case BUILDING_HOUSE_04:
|
case BUILDING_HOUSE_04:
|
||||||
case BUILDING_HOUSE_05:
|
case BUILDING_HOUSE_05:
|
||||||
case BUILDING_HOUSE_06:
|
case BUILDING_HOUSE_06:
|
||||||
case BUILDING_HOUSE_07:
|
|
||||||
case BUILDING_HOUSE_08:
|
|
||||||
case BUILDING_HOUSE_09:
|
|
||||||
case BUILDING_HOUSE_10:
|
|
||||||
case BUILDING_HOUSE_11:
|
|
||||||
case BUILDING_HOUSE_12:
|
|
||||||
cost[RES_WOOD] = 50;
|
cost[RES_WOOD] = 50;
|
||||||
break;
|
break;
|
||||||
case BUILDING_MARKET:
|
case BUILDING_MARKET:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
typedef struct Game Game;
|
typedef struct Game Game;
|
||||||
|
|
||||||
bool canPlaceBuilding(Game *game, BuildingType type, i32 tileX, i32 tileY);
|
bool canPlaceBuilding(Game *game, BuildingType type, i32 tileX, i32 tileY);
|
||||||
ecs_entity_t placeBuilding(Game *game, BuildingType type, i32 posX, i32 posY, Owner owner);
|
ecs_entity_t placeBuilding(Game *game, BuildingType type, i32 posX, i32 posY, Player player);
|
||||||
|
|
||||||
void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]);
|
void getBuildingCost(BuildingType type, i32 cost[RES_COUNT]);
|
||||||
bool canAffordBuilding(BuildingType type, PlayerResources res);
|
bool canAffordBuilding(BuildingType type, PlayerResources res);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ ECS_COMPONENT_DECLARE(AIBlackboard);
|
|||||||
ECS_TAG_DECLARE(Selectable);
|
ECS_TAG_DECLARE(Selectable);
|
||||||
ECS_TAG_DECLARE(Selected);
|
ECS_TAG_DECLARE(Selected);
|
||||||
|
|
||||||
|
ECS_COMPONENT_DECLARE(AddPopCapacity);
|
||||||
ECS_COMPONENT_DECLARE(Worker);
|
ECS_COMPONENT_DECLARE(Worker);
|
||||||
ECS_COMPONENT_DECLARE(Building);
|
ECS_COMPONENT_DECLARE(Building);
|
||||||
ECS_COMPONENT_DECLARE(Unit);
|
ECS_COMPONENT_DECLARE(Unit);
|
||||||
@@ -70,6 +71,7 @@ void initComponentIDs(ecs_world_t *ecs) {
|
|||||||
ECS_TAG_DEFINE(ecs, Selectable);
|
ECS_TAG_DEFINE(ecs, Selectable);
|
||||||
ECS_TAG_DEFINE(ecs, Selected);
|
ECS_TAG_DEFINE(ecs, Selected);
|
||||||
|
|
||||||
|
ECS_COMPONENT_DEFINE(ecs, AddPopCapacity);
|
||||||
ECS_COMPONENT_DEFINE(ecs, Worker);
|
ECS_COMPONENT_DEFINE(ecs, Worker);
|
||||||
ECS_COMPONENT_DEFINE(ecs, Building);
|
ECS_COMPONENT_DEFINE(ecs, Building);
|
||||||
ECS_COMPONENT_DEFINE(ecs, Unit);
|
ECS_COMPONENT_DEFINE(ecs, Unit);
|
||||||
|
|||||||
@@ -166,6 +166,11 @@ extern ECS_COMPONENT_DECLARE(AIBlackboard);
|
|||||||
extern ECS_TAG_DECLARE(Selectable);
|
extern ECS_TAG_DECLARE(Selectable);
|
||||||
extern ECS_TAG_DECLARE(Selected);
|
extern ECS_TAG_DECLARE(Selected);
|
||||||
|
|
||||||
|
typedef struct AddPopCapacity {
|
||||||
|
i32 amount;
|
||||||
|
} AddPopCapacity;
|
||||||
|
extern ECS_COMPONENT_DECLARE(AddPopCapacity);
|
||||||
|
|
||||||
// Worker can:
|
// Worker can:
|
||||||
// - Harvest
|
// - Harvest
|
||||||
// - Build
|
// - Build
|
||||||
|
|||||||
@@ -16,8 +16,27 @@ typedef struct AnimationFrame {
|
|||||||
f32 duration;
|
f32 duration;
|
||||||
} AnimationFrame;
|
} AnimationFrame;
|
||||||
|
|
||||||
|
typedef enum OwnerType {
|
||||||
|
OWNER_NONE = -1,
|
||||||
|
OWNER_BLUE,
|
||||||
|
OWNER_RED,
|
||||||
|
OWNER_COUNT,
|
||||||
|
} OwnerType;
|
||||||
|
|
||||||
|
static OwnerType getOwnerType(BzTileID tile) {
|
||||||
|
switch (tile) {
|
||||||
|
case 1046:
|
||||||
|
return OWNER_RED;
|
||||||
|
case 1301:
|
||||||
|
return OWNER_BLUE;
|
||||||
|
default:
|
||||||
|
return OWNER_COUNT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
typedef enum TerrainType {
|
typedef enum TerrainType {
|
||||||
TERRAIN_NONE = -1,
|
TERRAIN_NONE = -1,
|
||||||
|
TERRAIN_GOLD_ORE,
|
||||||
TERRAIN_COUNT,
|
TERRAIN_COUNT,
|
||||||
} TerrainType;
|
} TerrainType;
|
||||||
|
|
||||||
@@ -267,12 +286,9 @@ typedef enum BuildingType {
|
|||||||
BUILDING_HOUSE_04,
|
BUILDING_HOUSE_04,
|
||||||
BUILDING_HOUSE_05,
|
BUILDING_HOUSE_05,
|
||||||
BUILDING_HOUSE_06,
|
BUILDING_HOUSE_06,
|
||||||
BUILDING_HOUSE_07,
|
BUILDING_HOUSE_7,
|
||||||
BUILDING_HOUSE_08,
|
BUILDING_HOUSE_8,
|
||||||
BUILDING_HOUSE_09,
|
BUILDING_HOUSE_9,
|
||||||
BUILDING_HOUSE_10,
|
|
||||||
BUILDING_HOUSE_11,
|
|
||||||
BUILDING_HOUSE_12,
|
|
||||||
BUILDING_KEEP,
|
BUILDING_KEEP,
|
||||||
BUILDING_MARKET,
|
BUILDING_MARKET,
|
||||||
BUILDING_MILL,
|
BUILDING_MILL,
|
||||||
@@ -282,47 +298,40 @@ typedef enum BuildingType {
|
|||||||
|
|
||||||
static BuildingType getTileBuilding(BzTileID tile) {
|
static BuildingType getTileBuilding(BzTileID tile) {
|
||||||
switch (tile) {
|
switch (tile) {
|
||||||
|
case 5638:
|
||||||
|
return BUILDING_BARRACKS;
|
||||||
case 5654:
|
case 5654:
|
||||||
case 5655:
|
case 5655:
|
||||||
case 5910:
|
case 5910:
|
||||||
case 5911:
|
case 5911:
|
||||||
return BUILDING_KEEP;
|
return BUILDING_KEEP;
|
||||||
case 6149:
|
|
||||||
case 6150:
|
|
||||||
return BUILDING_BARRACKS;
|
|
||||||
case 6405:
|
case 6405:
|
||||||
case 6406:
|
case 6406:
|
||||||
return BUILDING_ARCHERY_RANGE;
|
return BUILDING_ARCHERY_RANGE;
|
||||||
case 6410:
|
|
||||||
return BUILDING_HOUSE_01;
|
|
||||||
case 6411:
|
|
||||||
return BUILDING_HOUSE_02;
|
|
||||||
case 6412:
|
|
||||||
return BUILDING_HOUSE_03;
|
|
||||||
case 6433:
|
case 6433:
|
||||||
return BUILDING_WAREHOUSE;
|
return BUILDING_WAREHOUSE;
|
||||||
case 6666:
|
case 6666:
|
||||||
return BUILDING_HOUSE_04;
|
return BUILDING_HOUSE_01;
|
||||||
case 6667:
|
case 6667:
|
||||||
return BUILDING_HOUSE_05;
|
return BUILDING_HOUSE_02;
|
||||||
case 6668:
|
case 6668:
|
||||||
return BUILDING_HOUSE_06;
|
return BUILDING_HOUSE_03;
|
||||||
case 6689:
|
case 6689:
|
||||||
return BUILDING_MILL;
|
return BUILDING_MILL;
|
||||||
case 6922:
|
case 6922:
|
||||||
return BUILDING_HOUSE_07;
|
return BUILDING_HOUSE_04;
|
||||||
case 6923:
|
case 6923:
|
||||||
return BUILDING_HOUSE_08;
|
return BUILDING_HOUSE_05;
|
||||||
case 6924:
|
case 6924:
|
||||||
return BUILDING_HOUSE_09;
|
return BUILDING_HOUSE_06;
|
||||||
case 6945:
|
case 6945:
|
||||||
return BUILDING_GRANARY;
|
return BUILDING_GRANARY;
|
||||||
case 7178:
|
case 7178:
|
||||||
return BUILDING_HOUSE_10;
|
return BUILDING_HOUSE_7;
|
||||||
case 7179:
|
case 7179:
|
||||||
return BUILDING_HOUSE_11;
|
return BUILDING_HOUSE_8;
|
||||||
case 7180:
|
case 7180:
|
||||||
return BUILDING_HOUSE_12;
|
return BUILDING_HOUSE_9;
|
||||||
case 7191:
|
case 7191:
|
||||||
return BUILDING_MARKET;
|
return BUILDING_MARKET;
|
||||||
default:
|
default:
|
||||||
@@ -332,24 +341,21 @@ static BuildingType getTileBuilding(BzTileID tile) {
|
|||||||
|
|
||||||
static BzTileID getBuildingTile(BuildingType type) {
|
static BzTileID getBuildingTile(BuildingType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
case BUILDING_BARRACKS: return 5638;
|
||||||
case BUILDING_KEEP: return 5654;
|
case BUILDING_KEEP: return 5654;
|
||||||
case BUILDING_BARRACKS: return 6149;
|
|
||||||
case BUILDING_ARCHERY_RANGE: return 6405;
|
case BUILDING_ARCHERY_RANGE: return 6405;
|
||||||
case BUILDING_HOUSE_01: return 6410;
|
|
||||||
case BUILDING_HOUSE_02: return 6411;
|
|
||||||
case BUILDING_HOUSE_03: return 6412;
|
|
||||||
case BUILDING_WAREHOUSE: return 6433;
|
case BUILDING_WAREHOUSE: return 6433;
|
||||||
case BUILDING_HOUSE_04: return 6666;
|
case BUILDING_HOUSE_01: return 6666;
|
||||||
case BUILDING_HOUSE_05: return 6667;
|
case BUILDING_HOUSE_02: return 6667;
|
||||||
case BUILDING_HOUSE_06: return 6668;
|
case BUILDING_HOUSE_03: return 6668;
|
||||||
case BUILDING_MILL: return 6689;
|
case BUILDING_MILL: return 6689;
|
||||||
case BUILDING_HOUSE_07: return 6922;
|
case BUILDING_HOUSE_04: return 6922;
|
||||||
case BUILDING_HOUSE_08: return 6923;
|
case BUILDING_HOUSE_05: return 6923;
|
||||||
case BUILDING_HOUSE_09: return 6924;
|
case BUILDING_HOUSE_06: return 6924;
|
||||||
case BUILDING_GRANARY: return 6945;
|
case BUILDING_GRANARY: return 6945;
|
||||||
case BUILDING_HOUSE_10: return 7178;
|
case BUILDING_HOUSE_7: return 7178;
|
||||||
case BUILDING_HOUSE_11: return 7179;
|
case BUILDING_HOUSE_8: return 7179;
|
||||||
case BUILDING_HOUSE_12: return 7180;
|
case BUILDING_HOUSE_9: return 7180;
|
||||||
case BUILDING_MARKET: return 7191;
|
case BUILDING_MARKET: return 7191;
|
||||||
default: return -1;
|
default: return -1;
|
||||||
}
|
}
|
||||||
@@ -357,24 +363,21 @@ static BzTileID getBuildingTile(BuildingType type) {
|
|||||||
|
|
||||||
static const char *getBuildingStr(BuildingType type) {
|
static const char *getBuildingStr(BuildingType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BUILDING_KEEP: return "keep";
|
|
||||||
case BUILDING_BARRACKS: return "barracks";
|
case BUILDING_BARRACKS: return "barracks";
|
||||||
|
case BUILDING_KEEP: return "keep";
|
||||||
case BUILDING_ARCHERY_RANGE: return "archery_range";
|
case BUILDING_ARCHERY_RANGE: return "archery_range";
|
||||||
|
case BUILDING_WAREHOUSE: return "warehouse";
|
||||||
case BUILDING_HOUSE_01: return "house_01";
|
case BUILDING_HOUSE_01: return "house_01";
|
||||||
case BUILDING_HOUSE_02: return "house_02";
|
case BUILDING_HOUSE_02: return "house_02";
|
||||||
case BUILDING_HOUSE_03: return "house_03";
|
case BUILDING_HOUSE_03: return "house_03";
|
||||||
case BUILDING_WAREHOUSE: return "warehouse";
|
case BUILDING_MILL: return "mill";
|
||||||
case BUILDING_HOUSE_04: return "house_04";
|
case BUILDING_HOUSE_04: return "house_04";
|
||||||
case BUILDING_HOUSE_05: return "house_05";
|
case BUILDING_HOUSE_05: return "house_05";
|
||||||
case BUILDING_HOUSE_06: return "house_06";
|
case BUILDING_HOUSE_06: return "house_06";
|
||||||
case BUILDING_MILL: return "mill";
|
|
||||||
case BUILDING_HOUSE_07: return "house_07";
|
|
||||||
case BUILDING_HOUSE_08: return "house_08";
|
|
||||||
case BUILDING_HOUSE_09: return "house_09";
|
|
||||||
case BUILDING_GRANARY: return "granary";
|
case BUILDING_GRANARY: return "granary";
|
||||||
case BUILDING_HOUSE_10: return "house_10";
|
case BUILDING_HOUSE_7: return "house_7";
|
||||||
case BUILDING_HOUSE_11: return "house_11";
|
case BUILDING_HOUSE_8: return "house_8";
|
||||||
case BUILDING_HOUSE_12: return "house_12";
|
case BUILDING_HOUSE_9: return "house_9";
|
||||||
case BUILDING_MARKET: return "market";
|
case BUILDING_MARKET: return "market";
|
||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
@@ -382,16 +385,20 @@ static const char *getBuildingStr(BuildingType type) {
|
|||||||
|
|
||||||
static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHeight) {
|
static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHeight) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
case BUILDING_BARRACKS:
|
||||||
|
if (outWidth) *outWidth = 1;
|
||||||
|
if (outHeight) *outHeight = 1;
|
||||||
|
break;
|
||||||
case BUILDING_KEEP:
|
case BUILDING_KEEP:
|
||||||
if (outWidth) *outWidth = 2;
|
if (outWidth) *outWidth = 2;
|
||||||
if (outHeight) *outHeight = 2;
|
if (outHeight) *outHeight = 2;
|
||||||
break;
|
break;
|
||||||
case BUILDING_BARRACKS:
|
case BUILDING_ARCHERY_RANGE:
|
||||||
if (outWidth) *outWidth = 2;
|
if (outWidth) *outWidth = 2;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_ARCHERY_RANGE:
|
case BUILDING_WAREHOUSE:
|
||||||
if (outWidth) *outWidth = 2;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_HOUSE_01:
|
case BUILDING_HOUSE_01:
|
||||||
@@ -406,7 +413,7 @@ static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHe
|
|||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_WAREHOUSE:
|
case BUILDING_MILL:
|
||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
@@ -422,35 +429,19 @@ static BuildingType getBuildingSize(BuildingType type, i32 *outWidth, i32 *outHe
|
|||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_MILL:
|
|
||||||
if (outWidth) *outWidth = 1;
|
|
||||||
if (outHeight) *outHeight = 1;
|
|
||||||
break;
|
|
||||||
case BUILDING_HOUSE_07:
|
|
||||||
if (outWidth) *outWidth = 1;
|
|
||||||
if (outHeight) *outHeight = 1;
|
|
||||||
break;
|
|
||||||
case BUILDING_HOUSE_08:
|
|
||||||
if (outWidth) *outWidth = 1;
|
|
||||||
if (outHeight) *outHeight = 1;
|
|
||||||
break;
|
|
||||||
case BUILDING_HOUSE_09:
|
|
||||||
if (outWidth) *outWidth = 1;
|
|
||||||
if (outHeight) *outHeight = 1;
|
|
||||||
break;
|
|
||||||
case BUILDING_GRANARY:
|
case BUILDING_GRANARY:
|
||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_HOUSE_10:
|
case BUILDING_HOUSE_7:
|
||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_HOUSE_11:
|
case BUILDING_HOUSE_8:
|
||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
case BUILDING_HOUSE_12:
|
case BUILDING_HOUSE_9:
|
||||||
if (outWidth) *outWidth = 1;
|
if (outWidth) *outWidth = 1;
|
||||||
if (outHeight) *outHeight = 1;
|
if (outHeight) *outHeight = 1;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -69,7 +69,22 @@ bool initBuildingsLayer(BzTileMap *map, BzTileLayer *layer) {
|
|||||||
buildingType = getTileBuilding(buildingType);
|
buildingType = getTileBuilding(buildingType);
|
||||||
if (buildingType <= BUILDING_NONE || buildingType >= BUILDING_COUNT)
|
if (buildingType <= BUILDING_NONE || buildingType >= BUILDING_COUNT)
|
||||||
continue;
|
continue;
|
||||||
placeBuilding(game, buildingType, x, y, (Owner) {owner});
|
// TODO: set player owner
|
||||||
|
// Convert owner
|
||||||
|
OwnerType ownerType = getOwnerType(owner);
|
||||||
|
Player player = PLAYER_RED;
|
||||||
|
switch (ownerType) {
|
||||||
|
case OWNER_BLUE:
|
||||||
|
player = PLAYER_BLUE;
|
||||||
|
break;
|
||||||
|
case OWNER_RED:
|
||||||
|
player = PLAYER_RED;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
BZ_ASSERT(false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
placeBuilding(game, buildingType, x, y, player);
|
||||||
|
|
||||||
i32 sizeX = 1;
|
i32 sizeX = 1;
|
||||||
i32 sizeY = 1;
|
i32 sizeY = 1;
|
||||||
|
|||||||
@@ -57,6 +57,26 @@ void updateTextureOwnerTile(ecs_iter_t *it) {
|
|||||||
tex[i].rec.y += offset.y;
|
tex[i].rec.y += offset.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void buildingAddPopCapacity(ecs_iter_t *it) {
|
||||||
|
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||||
|
AddPopCapacity *addPop = ecs_field(it, AddPopCapacity, 1);
|
||||||
|
Owner *owner = ecs_field(it, Owner, 2);
|
||||||
|
|
||||||
|
for (i32 i = 0; i < it->count; i++) {
|
||||||
|
PlayerResources *res = &game->playerResources[owner[i].player];
|
||||||
|
res->popCapacity += addPop[i].amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void buildingRemovePopCapacity(ecs_iter_t *it) {
|
||||||
|
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||||
|
AddPopCapacity *addPop = ecs_field(it, AddPopCapacity, 1);
|
||||||
|
Owner *owner = ecs_field(it, Owner, 2);
|
||||||
|
|
||||||
|
for (i32 i = 0; i < it->count; i++) {
|
||||||
|
PlayerResources *res = &game->playerResources[owner->player];
|
||||||
|
res->popCapacity -= addPop[i].amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void entityUpdateSpatialID(ecs_iter_t *it) {
|
void entityUpdateSpatialID(ecs_iter_t *it) {
|
||||||
Game *game = ecs_singleton_get_mut(ECS, Game);
|
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ void updatePlayerInput() {
|
|||||||
getBuildingSize(input->building, &sizeX, &sizeY);
|
getBuildingSize(input->building, &sizeX, &sizeY);
|
||||||
bool canPlace = canPlaceBuilding(game, input->building, tileX, tileY);
|
bool canPlace = canPlaceBuilding(game, input->building, tileX, tileY);
|
||||||
if (canPlace && isInputBtnDown(input, primaryBtn)) {
|
if (canPlace && isInputBtnDown(input, primaryBtn)) {
|
||||||
placeBuilding(game, input->building, tileX, tileY, (Owner) {PLAYER_BLUE});
|
placeBuilding(game, input->building, tileX, tileY, game->player);
|
||||||
}
|
}
|
||||||
input->buildingCanPlace = canPlace;
|
input->buildingCanPlace = canPlace;
|
||||||
input->buildingPos = (Vec2i) {tileX, tileY};
|
input->buildingPos = (Vec2i) {tileX, tileY};
|
||||||
|
|||||||
@@ -109,6 +109,9 @@ void setupSystems() {
|
|||||||
|
|
||||||
ECS_OBSERVER(ECS, updateTextureOwnerTile, EcsOnSet, TextureRegion, Owner);
|
ECS_OBSERVER(ECS, updateTextureOwnerTile, EcsOnSet, TextureRegion, Owner);
|
||||||
|
|
||||||
|
ECS_OBSERVER(ECS, buildingAddPopCapacity, EcsOnSet, AddPopCapacity, Owner);
|
||||||
|
ECS_OBSERVER(ECS, buildingRemovePopCapacity, EcsOnRemove, AddPopCapacity, Owner);
|
||||||
|
|
||||||
ECS_SYSTEM(ECS, entityUpdateSpatialID, EcsOnUpdate, Position, Size, Velocity, SpatialGridID);
|
ECS_SYSTEM(ECS, entityUpdateSpatialID, EcsOnUpdate, Position, Size, Velocity, SpatialGridID);
|
||||||
ECS_SYSTEM(ECS, entityUpdateKinematic, EcsOnUpdate, Position, Velocity, Steering, Unit);
|
ECS_SYSTEM(ECS, entityUpdateKinematic, EcsOnUpdate, Position, Velocity, Steering, Unit);
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,19 @@ void entityPathRemove(ecs_iter_t *it);
|
|||||||
|
|
||||||
void updateTextureOwnerTile(ecs_iter_t *it);
|
void updateTextureOwnerTile(ecs_iter_t *it);
|
||||||
|
|
||||||
|
/* Observer (for adding pop capacity)
|
||||||
|
* 0: Game (singleton)
|
||||||
|
* 1: AddPopCapacity
|
||||||
|
* 2: Owner
|
||||||
|
*/
|
||||||
|
void buildingAddPopCapacity(ecs_iter_t *it);
|
||||||
|
/* Observer (for removing pop capacity)
|
||||||
|
* 0: Game (singleton)
|
||||||
|
* 1: AddPopCapacity
|
||||||
|
* 2: Owner
|
||||||
|
*/
|
||||||
|
void buildingRemovePopCapacity(ecs_iter_t *it);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0: Game (singleton) for entity map
|
* 0: Game (singleton) for entity map
|
||||||
* 1: Position
|
* 1: Position
|
||||||
|
|||||||
@@ -1625,7 +1625,8 @@
|
|||||||
"name":"ownership",
|
"name":"ownership",
|
||||||
"type":"string",
|
"type":"string",
|
||||||
"value":""
|
"value":""
|
||||||
}]
|
}],
|
||||||
|
"type":"RED"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"animation":[
|
"animation":[
|
||||||
@@ -2212,7 +2213,8 @@
|
|||||||
"name":"ownership",
|
"name":"ownership",
|
||||||
"type":"string",
|
"type":"string",
|
||||||
"value":""
|
"value":""
|
||||||
}]
|
}],
|
||||||
|
"type":"BLUE"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":1302,
|
"id":1302,
|
||||||
@@ -6562,7 +6564,8 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}]
|
}],
|
||||||
|
"type":"barracks"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":5639,
|
"id":5639,
|
||||||
@@ -7493,8 +7496,7 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}]
|
||||||
"type":"barracks"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6150,
|
"id":6150,
|
||||||
@@ -7531,8 +7533,7 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}]
|
||||||
"type":"barracks"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6151,
|
"id":6151,
|
||||||
@@ -7926,8 +7927,7 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}]
|
||||||
"type":"house_01"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6411,
|
"id":6411,
|
||||||
@@ -7941,8 +7941,7 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}]
|
||||||
"type":"house_02"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6412,
|
"id":6412,
|
||||||
@@ -7956,8 +7955,7 @@
|
|||||||
"name":"player",
|
"name":"player",
|
||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}]
|
||||||
"type":"house_03"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6414,
|
"id":6414,
|
||||||
@@ -8311,7 +8309,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_04"
|
"type":"house_01"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6667,
|
"id":6667,
|
||||||
@@ -8326,7 +8324,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_05"
|
"type":"house_02"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6668,
|
"id":6668,
|
||||||
@@ -8341,7 +8339,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_06"
|
"type":"house_03"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6674,
|
"id":6674,
|
||||||
@@ -8428,6 +8426,19 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"animation":[
|
||||||
|
{
|
||||||
|
"duration":140,
|
||||||
|
"tileid":6689
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"duration":140,
|
||||||
|
"tileid":6690
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"duration":140,
|
||||||
|
"tileid":6691
|
||||||
|
}],
|
||||||
"id":6689,
|
"id":6689,
|
||||||
"properties":[
|
"properties":[
|
||||||
{
|
{
|
||||||
@@ -8525,7 +8536,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_07"
|
"type":"house_04"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6923,
|
"id":6923,
|
||||||
@@ -8540,7 +8551,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_08"
|
"type":"house_05"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6924,
|
"id":6924,
|
||||||
@@ -8555,7 +8566,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_09"
|
"type":"house_06"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":6926,
|
"id":6926,
|
||||||
@@ -8795,6 +8806,36 @@
|
|||||||
"value":""
|
"value":""
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id":7170,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"terrain",
|
||||||
|
"type":"string",
|
||||||
|
"value":""
|
||||||
|
}],
|
||||||
|
"type":"gold_ore"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":7171,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"terrain",
|
||||||
|
"type":"string",
|
||||||
|
"value":""
|
||||||
|
}],
|
||||||
|
"type":"gold_ore"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":7172,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"terrain",
|
||||||
|
"type":"string",
|
||||||
|
"value":""
|
||||||
|
}],
|
||||||
|
"type":"gold_ore"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id":7173,
|
"id":7173,
|
||||||
"properties":[
|
"properties":[
|
||||||
@@ -8835,7 +8876,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_10"
|
"type":"house_7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":7179,
|
"id":7179,
|
||||||
@@ -8850,7 +8891,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_11"
|
"type":"house_8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":7180,
|
"id":7180,
|
||||||
@@ -8865,7 +8906,7 @@
|
|||||||
"type":"int",
|
"type":"int",
|
||||||
"value":0
|
"value":0
|
||||||
}],
|
}],
|
||||||
"type":"house_12"
|
"type":"house_9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":7182,
|
"id":7182,
|
||||||
|
|||||||
@@ -777,7 +777,7 @@
|
|||||||
<property name="ownership" value=""/>
|
<property name="ownership" value=""/>
|
||||||
</properties>
|
</properties>
|
||||||
</tile>
|
</tile>
|
||||||
<tile id="1046">
|
<tile id="1046" type="RED">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="ownership" value=""/>
|
<property name="ownership" value=""/>
|
||||||
</properties>
|
</properties>
|
||||||
@@ -1024,7 +1024,7 @@
|
|||||||
<object id="1" x="0" y="0" width="16" height="16"/>
|
<object id="1" x="0" y="0" width="16" height="16"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</tile>
|
</tile>
|
||||||
<tile id="1301">
|
<tile id="1301" type="BLUE">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="ownership" value=""/>
|
<property name="ownership" value=""/>
|
||||||
</properties>
|
</properties>
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ terrain_tiles = extract_by_property(all_tiles, "terrain")
|
|||||||
building_tiles = extract_by_property(all_tiles, "building")
|
building_tiles = extract_by_property(all_tiles, "building")
|
||||||
entity_tiles = extract_by_property(all_tiles, "entity")
|
entity_tiles = extract_by_property(all_tiles, "entity")
|
||||||
item_tiles = extract_by_property(all_tiles, "item")
|
item_tiles = extract_by_property(all_tiles, "item")
|
||||||
|
ownership_tiles = extract_by_property(all_tiles, "ownership")
|
||||||
|
|
||||||
writer.header_guard_start()
|
writer.header_guard_start()
|
||||||
script_name = os.path.basename(__file__)
|
script_name = os.path.basename(__file__)
|
||||||
@@ -54,6 +55,10 @@ writer.output_anim_frame_struct()
|
|||||||
terrain_writer = EnumWriter(writer, terrain_tiles, "terrain")
|
terrain_writer = EnumWriter(writer, terrain_tiles, "terrain")
|
||||||
building_writer = EnumWriter(writer, building_tiles, "building")
|
building_writer = EnumWriter(writer, building_tiles, "building")
|
||||||
entity_writer = EnumWriter(writer, entity_tiles, "entity")
|
entity_writer = EnumWriter(writer, entity_tiles, "entity")
|
||||||
|
ownership_writer = EnumWriter(writer, ownership_tiles, "owner")
|
||||||
|
|
||||||
|
ownership_writer.output_enum()
|
||||||
|
ownership_writer.output_tile_to_enum("getOwnerType")
|
||||||
|
|
||||||
terrain_writer.output_enum()
|
terrain_writer.output_enum()
|
||||||
terrain_writer.output_tile_has_anim("terrainHasAnimation")
|
terrain_writer.output_tile_has_anim("terrainHasAnimation")
|
||||||
|
|||||||
Reference in New Issue
Block a user