public bool CanReach(Caravan c, int destTile)
        {
            int startTile = c.Tile;
            List <VehicleDef> vehicleDefs = c.UniqueVehicleDefsInCaravan().ToList();

            return(CanReach(vehicleDefs, startTile, destTile));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Find best tile to snap to when ordering a caravan
        /// </summary>
        /// <param name="c"></param>
        /// <param name="tile"></param>
        public static int BestGotoDestForVehicle(Caravan caravan, int tile)
        {
            Predicate <int> predicate = (int t) => caravan.UniqueVehicleDefsInCaravan().All(v => WorldVehiclePathGrid.Instance.Passable(t, v)) &&
                                        WorldVehicleReachability.Instance.CanReach(caravan, t);

            if (predicate(tile))
            {
                return(tile);
            }
            GenWorldClosest.TryFindClosestTile(tile, predicate, out int result, 50, true);
            return(result);
        }