Calc paths when restore

This commit is contained in:
Anton Vakhrushev
2019-10-15 15:04:27 +03:00
parent ea5e7950de
commit 189f6dd96b
2 changed files with 18 additions and 4 deletions

View File

@ -118,11 +118,16 @@ module Game
end
resource = restoration.resource
@deposit_tile = nearest_deposit(world, resource.type)
if @deposit_tile
stock_tile = nearest_stock(world)
if @deposit_tile && stock_tile
world.resources.dec restoration.input
@holded = resource
restoration.ts +
2 * tile.point.distance(stock_tile.point) +
2 * tile.point.distance(@deposit_tile.as(DepositTile).point)
else
restoration.ts
end
restoration.ts
end
def finish(world : World)
@ -140,6 +145,13 @@ module Game
end
tile.as?(DepositTile)
end
private def nearest_stock(world : World) : BuildingTile?
tile = world.map.nearest_tile @point do |t|
t.is_a?(BuildingTile) && t.building.has_role Building::Role::Storehouse
end
tile.as?(BuildingTile)
end
end
# class BuildCrystalHarvesterCommand < Command