Enemy swarm movement

This commit is contained in:
2024-02-12 14:14:23 +01:00
parent c5b6dc0501
commit e69fdeed1f
15 changed files with 402 additions and 24 deletions

View File

@@ -115,10 +115,57 @@ ecs_entity_t entityCreateWorker(const Position position, Player player, Game *ga
return e;
}
ecs_entity_t entityRecruit(EntityType type, Position position, Player player, Game *game) {
ecs_entity_t entityCreateSwarmGoblin(const Position position, Player player, Game *game) {
ecs_entity_t e = entityCreateBaseUnit(position, 10.0f, player, ENTITY_GOBLIN, ANIM_IDLE, game);
ecs_set(ECS, e, Swarm, {
.currWaypoint = 0,
});
ecs_set(ECS, e, Health, {
.startHP = 40.0f,
.hp = 40.0f,
.lastChanged = -1.0f
});
Unit *unit = ecs_get_mut(ECS, e, Unit);
unit->minDamage = 5.0f;
unit->maxDamage = 10.0f;
unit->attackCooldown = 1.0f;
unit->maxSpeed = 20.0f;
return e;
}
ecs_entity_t entityCreateSwarmOrc(const Position position, Player player, Game *game) {
ecs_entity_t e = entityCreateBaseUnit(position, 10.0f, player, ENTITY_ORC, ANIM_IDLE, game);
ecs_set(ECS, e, Swarm, {
.currWaypoint = 0,
});
ecs_set(ECS, e, Health, {
.startHP = 80.0f,
.hp = 80.0f,
.lastChanged = -1.0f
});
Unit *unit = ecs_get_mut(ECS, e, Unit);
unit->minDamage = 8.0f;
unit->maxDamage = 22.0f;
unit->attackCooldown = 1.8f;
unit->maxSpeed = 12.0f;
return e;
}
ecs_entity_t entityCreate(EntityType type, Position position, Player player, Game *game) {
switch (type) {
case ENTITY_WORKER:
entityCreateWorker(position, player, game);
return entityCreateWorker(position, player, game);
case ENTITY_SOLDIER:
return entityCreateSoldier(position, player, game);
case ENTITY_WARRIOR:
return entityCreateWarrior(position, player, game);
case ENTITY_GOBLIN:
return entityCreateSwarmGoblin(position, player, game);
case ENTITY_ORC:
return entityCreateSwarmOrc(position, player, game);
default:
return 0;
}