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

View File

@@ -0,0 +1,11 @@
IMICRTS::Entity.define_entity(:construction_worker, :unit, 1000, "Constructs buildings") do |entity|
entity.radius = 14
entity.movement = :ground
entity.max_health = 100.0
entity.body_image = "vehicles/construction_worker/images/construction_worker.png"
entity.shell_image = "vehicles/construction_worker/images/construction_worker.png"
entity.on_tick do
end
end

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

View File

@@ -0,0 +1,15 @@
IMICRTS::Entity.define_entity(:power_plant, :building, 800, "Generates power") do |entity|
entity.radius = 14
entity.max_health = 100.0
entity.body_image = "vehicles/power_plant/images/power_plant.png"
entity.shell_image = "vehicles/power_plant/images/power_plant.png"
entity.on_tick do
entity.produce_power
end
define_singleton_method(:produce_power) do
@player.power += 10
end
end