Add unit recruiting

This commit is contained in:
2024-02-05 10:11:54 +01:00
parent ba293b15d9
commit 18dd3e2226
8 changed files with 122 additions and 22 deletions

View File

@@ -94,3 +94,46 @@ ecs_entity_t entityCreateWorker(const Position position, Player player, Game *ga
return e;
}
ecs_entity_t entityHire(EntityType type, Position position, Player player, Game *game) {
PlayerResources *playerRes = &game->playerResources[player];
i32 res[RES_COUNT] = {0, };
getEntityCost(type, res);
switch (type) {
case ENTITY_WORKER:
entityCreateWorker(position, player, game);
playerRes->food -= res[RES_FOOD];
playerRes->wood -= res[RES_WOOD];
playerRes->gold -= res[RES_GOLD];
default:
return 0;
}
}
void getEntityCost(EntityType type, i32 cost[RES_COUNT]) {
for (i32 i = 0; i < RES_COUNT; i++) {
cost[i] = 0;
}
switch (type) {
case ENTITY_WORKER:
cost[RES_FOOD] = 50;
break;
case ENTITY_SOLDIER:
cost[RES_FOOD] = 50;
cost[RES_GOLD] = 50;
break;
case ENTITY_WARRIOR:
cost[RES_FOOD] = 200;
cost[RES_GOLD] = 100;
break;
}
}
bool canAffordEntity(EntityType type, PlayerResources res) {
i32 needed[RES_COUNT] = {0, };
getEntityCost(type, needed);
if (needed[RES_WOOD] > res.wood) return false;
if (needed[RES_FOOD] > res.food) return false;
if (needed[RES_GOLD] > res.gold) return false;
return true;
}