Add soldiers
This commit is contained in:
@@ -8,9 +8,15 @@ ecs_entity_t entityCreateEmpty() {
|
||||
return e;
|
||||
}
|
||||
|
||||
ecs_entity_t entityCreateWorker(const Position position, Game *game) {
|
||||
const Size size = {10.0f, 10.0f};
|
||||
ecs_entity_t entityCreateBaseUnit(const Position position, Player player,
|
||||
EntityType type, AnimType startAnim, Game *game) {
|
||||
BzTileset *tileset = &game->tileset;
|
||||
TextureRegion region = {
|
||||
tileset->tiles,
|
||||
getTextureRect(getEntityTile(type))
|
||||
};
|
||||
const Size size = {10.0f * region.rec.width / 16.0f, 10.0f * region.rec.height / 16.0f};
|
||||
bzLogInfo("%.2f %.2f", size.x, size.y);
|
||||
ecs_entity_t e = entityCreateEmpty();
|
||||
ecs_set_ptr(ECS, e, Position, &position);
|
||||
ecs_set_ptr(ECS, e, Size, &size);
|
||||
@@ -22,20 +28,21 @@ ecs_entity_t entityCreateWorker(const Position position, Game *game) {
|
||||
ecs_set(ECS, e, Orientation, {0.0f});
|
||||
ecs_set(ECS, e, Velocity, {});
|
||||
ecs_set(ECS, e, Steering, {});
|
||||
TextureRegion workerRegion = {
|
||||
tileset->tiles,
|
||||
bzTilesetGetTileRegion(tileset, ENTITY_WORKER)
|
||||
};
|
||||
ecs_set_ptr(ECS, e, TextureRegion, &workerRegion);
|
||||
ecs_set(ECS, e, Animation, {
|
||||
.entityType = ENTITY_WORKER,
|
||||
.animType = ANIM_IDLE,
|
||||
ecs_set(ECS, e, Owner, {player});
|
||||
|
||||
.sequence = entityGetAnimationSequence(ENTITY_WORKER, ANIM_IDLE),
|
||||
.tileset = tileset,
|
||||
.curFrame = 0,
|
||||
.elapsed = 0.0f,
|
||||
});
|
||||
|
||||
ecs_set_ptr(ECS, e, TextureRegion, ®ion);
|
||||
if (startAnim != ANIM_NONE) {
|
||||
ecs_set(ECS, e, Animation, {
|
||||
.entityType = type,
|
||||
.animType = startAnim,
|
||||
|
||||
.sequence = entityGetAnimationSequence(type, startAnim),
|
||||
.tileset = tileset,
|
||||
.curFrame = 0,
|
||||
.elapsed = 0.0f,
|
||||
});
|
||||
}
|
||||
ecs_set(ECS, e, BzBTState, {
|
||||
.root = NULL,
|
||||
.nodeStatePool = game->pools.btNodeState
|
||||
@@ -46,8 +53,20 @@ ecs_entity_t entityCreateWorker(const Position position, Game *game) {
|
||||
.acceleration = 80.0f,
|
||||
.maxSpeed = 15.0f,
|
||||
.deceleration = 0.1f,
|
||||
.unitType = ENTITY_WORKER
|
||||
.unitType = type
|
||||
});
|
||||
return e;
|
||||
}
|
||||
|
||||
ecs_entity_t entityCreateSoldier(const Position position, Player player, Game *game) {
|
||||
ecs_entity_t e = entityCreateBaseUnit(position, player, ENTITY_SOLDIER, ANIM_IDLE, game);
|
||||
return e;
|
||||
}
|
||||
|
||||
ecs_entity_t entityCreateWorker(const Position position, Player player, Game *game) {
|
||||
BzTileset *tileset = &game->tileset;
|
||||
ecs_entity_t e = entityCreateBaseUnit(position, player, ENTITY_WORKER, ANIM_IDLE, game);
|
||||
|
||||
ecs_set(ECS, e, Worker, {
|
||||
.collectSpeed = 0.8f,
|
||||
.depositSpeed = 0.2f,
|
||||
@@ -58,7 +77,6 @@ ecs_entity_t entityCreateWorker(const Position position, Game *game) {
|
||||
Arms arms = {.primary = right};
|
||||
ecs_set_ptr(ECS, e, Arms, &arms);
|
||||
ecs_set(ECS, right, Arm, {.offset = 45.0f, 4.5f});
|
||||
ecs_set(ECS, e, Owner, {PLAYER_RED});
|
||||
|
||||
ecs_set(ECS, right, Size, {8, 8});
|
||||
ecs_set(ECS, right, Rotation, { 0.0f });
|
||||
|
||||
Reference in New Issue
Block a user