public bool CanReach(Caravan c, int destTile) { int startTile = c.Tile; List <VehicleDef> vehicleDefs = c.UniqueVehicleDefsInCaravan().ToList(); return(CanReach(vehicleDefs, startTile, destTile)); }
/// <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); }