Files
i-mic-rts/lib/entities/harvester.rb
2019-10-11 20:01:35 -05:00

35 lines
935 B
Ruby

IMICRTS::Entity.define_entity(:harvester, :unit, 1400, "Harvests ore") do |entity, director|
entity.radius = 10
entity.movement = :ground
entity.max_health = 100.0
entity.body_image = "vehicles/harvester/images/harvester.png"
entity.shell_image = "vehicles/harvester/images/harvester.png"
@capacity = 10.0
@bed = 0.0
entity.on_tick do
if @bed >= @capacity
entity.seek_refinery
else
entity.seek_ore
end
end
entity.define_singleton_method(:seek_ore) do
ore = director.map.ores.compact.sort_by { |ore| next unless ore; ore.position.distance(entity.position) }.first
n = (ore.position - entity.position).normalized
n.z = 0
entity.position += n * 3
end
entity.define_singleton_method(:seek_refinery) do
end
entity.define_singleton_method(:rotate_towards) do |target|
entity.angle = Gosu.angle(target.x, target.y, entity.position.x, entity.position.y)
end
end