mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-13 23:02:35 +00:00
35 lines
935 B
Ruby
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
|