Entities are now definable

This commit is contained in:
2019-10-11 20:01:35 -05:00
parent 44e9dcf7d7
commit 9ab515dce2
8 changed files with 129 additions and 11 deletions

34
lib/entities/harvester.rb Normal file
View File

@@ -0,0 +1,34 @@
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