mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-15 15:52:34 +00:00
33 lines
969 B
Ruby
33 lines
969 B
Ruby
class IMICRTS
|
|
class Spawner < Component
|
|
attr_accessor :spawnpoint
|
|
|
|
def setup
|
|
@spawnpoint = @parent.position.clone
|
|
@spawnpoint.y += 64
|
|
end
|
|
|
|
def tick(tick_id)
|
|
item = @parent.component(:build_queue).queue.first
|
|
|
|
return unless item
|
|
|
|
item.progress += 1 if @parent.component(:structure).construction_complete?
|
|
|
|
return unless item.progress >= item.entity.build_steps && !item.completed
|
|
|
|
item.completed = true
|
|
@parent.director.schedule_order(IMICRTS::Order::BUILD_UNIT_COMPLETE, @parent.player.id, @parent.id)
|
|
end
|
|
|
|
def on_order(type, order)
|
|
case type
|
|
when IMICRTS::Order::BUILD_UNIT_COMPLETE
|
|
item = @parent.component(:build_queue).queue.shift
|
|
|
|
ent = @parent.director.spawn_entity(player_id: @parent.player.id, name: item.entity.name, position: @spawnpoint)
|
|
ent.target = @parent.component(:waypoint).waypoint if @parent.component(:waypoint)
|
|
end
|
|
end
|
|
end
|
|
end |