From a085ea9e4b9078c647304e85d4c03980b71ced22 Mon Sep 17 00:00:00 2001 From: michi_cc Date: Tue, 13 Dec 2011 00:43:59 +0000 Subject: (svn r23506) -Add: [NoAI] Support for dealing with aircraft range. --- src/script/api/script_order.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/script/api/script_order.cpp') diff --git a/src/script/api/script_order.cpp b/src/script/api/script_order.cpp index 4a500a5ff..5bca48b9d 100644 --- a/src/script/api/script_order.cpp +++ b/src/script/api/script_order.cpp @@ -13,6 +13,7 @@ #include "script_order.hpp" #include "script_vehicle.hpp" #include "script_cargo.hpp" +#include "script_map.hpp" #include "../script_instance.hpp" #include "../../debug.h" #include "../../vehicle_base.h" @@ -655,3 +656,15 @@ static void _DoCommandReturnSetOrderFlags(class ScriptInstance *instance) return ScriptObject::DoCommand(0, vehicle_id | CO_UNSHARE << 30, 0, CMD_CLONE_ORDER); } + +/* static */ uint ScriptOrder::GetOrderDistance(ScriptVehicle::VehicleType vehicle_type, TileIndex origin_tile, TileIndex dest_tile) +{ + if (vehicle_type == ScriptVehicle::VT_AIR) { + if (ScriptTile::IsStationTile(origin_tile) && ::Station::Get(origin_tile)->airport.tile != INVALID_TILE) origin_tile = ::Station::Get(origin_tile)->airport.tile; + if (ScriptTile::IsStationTile(dest_tile) && ::Station::Get(dest_tile)->airport.tile != INVALID_TILE) dest_tile = ::Station::Get(dest_tile)->airport.tile; + + return ScriptMap::DistanceSquare(origin_tile, dest_tile); + } else { + return ScriptMap::DistanceManhattan(origin_tile, dest_tile); + } +} -- cgit v1.2.3-54-g00ecf