diff options
Diffstat (limited to 'spawn.go')
| -rw-r--r-- | spawn.go | 22 |
1 files changed, 7 insertions, 15 deletions
@@ -11,16 +11,16 @@ type spawnRequest struct { } type Spawn struct { - UnitResourceCost int + UnitResourceCost int UnitSpawnDuration time.Duration - Requests []spawnRequest + Requests []spawnRequest } func NewSpawn(unitResourceCost int, unitSpawnDuration time.Duration) Spawn { return Spawn{ - UnitResourceCost: unitResourceCost, + UnitResourceCost: unitResourceCost, UnitSpawnDuration: unitSpawnDuration, - Requests: make([]spawnRequest, 0), + Requests: make([]spawnRequest, 0), } } @@ -32,7 +32,7 @@ func (spawn *Spawn) AddRequest(g *Game) { spawn.Requests = append(spawn.Requests, spawnRequest{start: time.Now()}) } -func UpdateSpawn(g *Game,spawn *ecs.Component[Spawn], position ecs.Component[physics.Point]) { +func UpdateSpawn(g *Game, spawn *ecs.Component[Spawn], position ecs.Component[physics.Point]) { if !spawn.IsEnabled || !position.IsEnabled { return } @@ -40,17 +40,9 @@ func UpdateSpawn(g *Game,spawn *ecs.Component[Spawn], position ecs.Component[phy if len(spawn.Value.Requests) == 0 || now.Sub(spawn.Value.Requests[0].start) < time.Duration(spawn.Value.UnitSpawnDuration) { return } - // TODO: builder - var order Order spawnPosition, _ := g.Closest(position.Value, physics.AdjacentPoints(position.Value)) - unit := Entity{ - Position: ecs.C(spawnPosition), - Image: ecs.C(g.personImage), - Selection: ecs.C(Selection{IsSelected: false, Halo: g.personSelectionHalo}), - Move: ecs.C(physics.Move{IsActive: false}), - Order: ecs.C(order), - ResourceGatherer: ecs.C(ResourceGatherer{MaxCapacity: 15}), - } + unit := g.UnitBuilder.Build() + unit.Position = ecs.C(spawnPosition) g.Entities = append(g.Entities, &unit) spawn.Value.Requests = spawn.Value.Requests[1:] if len(spawn.Value.Requests) > 0 { |
