Building units now uses orders 😃

This commit is contained in:
2021-01-01 14:25:44 -06:00
parent 74458dbfd0
commit 5f301337b4
35 changed files with 171 additions and 100 deletions

View File

@@ -6,7 +6,7 @@ tiles = [
[false, :path, :path, :path, false],
]
IMICRTS::Entity.define_entity(:barracks, :building, 400, "Builds and soldiers", tiles) do |entity|
IMICRTS::Entity.define_entity(:barracks, :building, 400, 40, "Builds and soldiers", tiles) do |entity|
entity.has(:building)
entity.has(:waypoint)
entity.has(:spawner)

View File

@@ -6,13 +6,13 @@ tiles = [
[false, :path, :path, :path, false],
]
IMICRTS::Entity.define_entity(:construction_yard, :building, 2_000, "Provides radar and builds construction workers", tiles) do |entity|
IMICRTS::Entity.define_entity(:construction_yard, :building, 2_000, 310, "Provides radar and builds construction workers", tiles) do |entity|
entity.has(:building)
entity.has(:waypoint)
entity.has(:spawner)
entity.has(:build_queue)
entity.has(:sidebar_actions)
entity.component(:sidebar_actions).add(:add_to_build_queue, {entity: :construction_worker})
entity.component(:sidebar_actions).add(:add_to_build_queue, { entity: :construction_worker })
entity.radius = 40
entity.max_health = 100.0

View File

@@ -6,13 +6,13 @@ tiles = [
[false, false, false, false, false],
]
IMICRTS::Entity.define_entity(:helipad, :building, 1_000, "Builds and rearms helicopters", tiles) do |entity|
IMICRTS::Entity.define_entity(:helipad, :building, 1_000, 100, "Builds and rearms helicopters", tiles) do |entity|
entity.has(:building)
entity.has(:waypoint)
entity.has(:spawner)
entity.has(:build_queue)
entity.has(:sidebar_actions)
entity.component(:sidebar_actions).add(:add_to_build_queue, {entity: :helicopter})
entity.component(:sidebar_actions).add(:add_to_build_queue, { entity: :helicopter })
entity.radius = 26
entity.max_health = 100.0

View File

@@ -6,7 +6,7 @@ tiles = [
[false, false, :path, false, false],
]
IMICRTS::Entity.define_entity(:power_plant, :building, 800, "Generates power", tiles) do |entity|
IMICRTS::Entity.define_entity(:power_plant, :building, 800, 45, "Generates power", tiles) do |entity|
entity.has(:building)
entity.radius = 24

View File

@@ -6,7 +6,7 @@ tiles = [
[false, false, :path, :path, false],
]
IMICRTS::Entity.define_entity(:refinery, :building, 1_400, "Generates credits", tiles) do |entity|
IMICRTS::Entity.define_entity(:refinery, :building, 1_400, 200, "Generates credits", tiles) do |entity|
entity.has(:building)
entity.radius = 44

View File

@@ -6,15 +6,15 @@ tiles = [
[false, :path, :path, :path, false],
]
IMICRTS::Entity.define_entity(:war_factory, :building, 2_000, "Builds units", tiles) do |entity|
IMICRTS::Entity.define_entity(:war_factory, :building, 2_000, 310, "Builds units", tiles) do |entity|
entity.has(:building)
entity.has(:waypoint)
entity.has(:spawner)
entity.has(:build_queue)
entity.has(:sidebar_actions)
entity.component(:sidebar_actions).add(:add_to_build_queue, {entity: :jeep})
entity.component(:sidebar_actions).add(:add_to_build_queue, {entity: :tank})
entity.component(:sidebar_actions).add(:add_to_build_queue, {entity: :harvester})
entity.component(:sidebar_actions).add(:add_to_build_queue, { entity: :jeep })
entity.component(:sidebar_actions).add(:add_to_build_queue, { entity: :tank })
entity.component(:sidebar_actions).add(:add_to_build_queue, { entity: :harvester })
entity.radius = 48
entity.max_health = 100.0

View File

@@ -1,9 +1,9 @@
IMICRTS::Entity.define_entity(:construction_worker, :unit, 1000, "Constructs buildings") do |entity|
IMICRTS::Entity.define_entity(:construction_worker, :unit, 1000, 75, "Constructs buildings") do |entity|
entity.has(:movement)
entity.has(:build_queue)
entity.has(:sidebar_actions)
[:power_plant, :refinery, :barracks, :war_factory, :helipad, :construction_yard].each do |ent|
entity.component(:sidebar_actions).add(:set_tool, {tool: :place_entity, entity: ent, construction_worker: entity})
entity.component(:sidebar_actions).add(:set_tool, { tool: :place_entity, entity: ent, construction_worker: entity })
end
entity.radius = 14

View File

@@ -1,4 +1,4 @@
IMICRTS::Entity.define_entity(:harvester, :unit, 1400, "Harvests ore") do |entity, director|
IMICRTS::Entity.define_entity(:harvester, :unit, 1400, 140, "Harvests ore") do |entity, director|
entity.has(:movement)
entity.radius = 10

View File

@@ -1,6 +1,7 @@
IMICRTS::Entity.define_entity(:helicopter, :unit, 400, "Attacks ground targets") do |entity|
IMICRTS::Entity.define_entity(:helicopter, :unit, 400, 40, "Attacks ground targets") do |entity|
entity.has(:movement)
entity.speed = 2.5
entity.radius = 14
entity.movement = :air
entity.max_health = 100.0

View File

@@ -1,7 +1,8 @@
IMICRTS::Entity.define_entity(:jeep, :unit, 400, "Attacks ground targets") do |entity|
IMICRTS::Entity.define_entity(:jeep, :unit, 400, 40, "Attacks ground targets") do |entity|
entity.has(:movement)
entity.has(:turret)
entity.speed = 1.5
entity.radius = 14
entity.movement = :ground
entity.max_health = 100.0
@@ -14,4 +15,8 @@ IMICRTS::Entity.define_entity(:jeep, :unit, 400, "Attacks ground targets") do |e
entity.on_tick do
end
entity.component(:movement).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

@@ -1,4 +1,4 @@
IMICRTS::Entity.define_entity(:tank, :unit, 800, "Attacks ground targets") do |entity|
IMICRTS::Entity.define_entity(:tank, :unit, 800, 80, "Attacks ground targets") do |entity|
entity.has(:movement)
entity.has(:turret)