Add unit recruiting
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user