diff --git a/python-api-src/lib_building_placer.cpp b/python-api-src/lib_building_placer.cpp index 6cb1b3e3703a634d885b013f0fbc1f009e902eaa..b925c749ab99620325d6f9fd6195b60d37ee1024 100644 --- a/python-api-src/lib_building_placer.cpp +++ b/python-api-src/lib_building_placer.cpp @@ -7,7 +7,7 @@ void define_building_placer(py::module & m) py::class_<BuildingPlacer>(m, "BuildingPlacer") .def("can_build_here", &BuildingPlacer::canBuildHere, "x"_a, "y"_a, "unit_type"_a) .def("can_build_here_with_spaces", &BuildingPlacer::canBuildHereWithSpace, "x"_a, "y"_a, "unit_type"_a, "build_distance"_a) - .def("get_build_location_near", &BuildingPlacer::getBuildLocationNear, "point2di"_a, "unit_type"_a, "build_distance"_a = 2) + .def("get_build_location_near", &BuildingPlacer::getBuildLocationNear, "point2di"_a, "unit_type"_a, "build_distance"_a = 2, "search_count"_a = 1000) .def("reserve_tiles", &BuildingPlacer::reserveTiles, "x"_a, "y"_a, "width"_a, "height"_a) .def("free_tiles", &BuildingPlacer::freeTiles, "x"_a, "y"_a, "width"_a, "height"_a); } \ No newline at end of file diff --git a/src/BuildingPlacer.cpp b/src/BuildingPlacer.cpp index c3d14327ad536f6c3561d6b194b2e48cd5c02673..f5394da1625766d27022293bbc6846ef8ae82425 100644 --- a/src/BuildingPlacer.cpp +++ b/src/BuildingPlacer.cpp @@ -95,7 +95,7 @@ bool BuildingPlacer::canBuildHereWithSpace(int bx, int by, const UnitType & type return true; } -CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, const UnitType & t, int buildDist) const +CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, const UnitType & t, int buildDist, size_t search_count) const { //Timer t; //t.start(); @@ -106,7 +106,7 @@ CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, co //double ms1 = t.getElapsedTimeInMilliSec(); // iterate through the list until we've found a suitable location - for (size_t i(0); i < closestToBuilding.size() && i < 1000; ++i) + for (size_t i(0); i < closestToBuilding.size() && (search_count == 0 || i < search_count); ++i) { auto & pos = closestToBuilding[i]; diff --git a/src/BuildingPlacer.h b/src/BuildingPlacer.h index 7e762b5f81add17a9a52e680562ac41a9643bde2..791d3d95fe7c8c613124ab9ca506b75094c9a6b0 100644 --- a/src/BuildingPlacer.h +++ b/src/BuildingPlacer.h @@ -29,7 +29,7 @@ public: bool canBuildHereWithSpace(int bx, int by, const UnitType & type, int buildDist) const; // returns a build location near a building's desired location - CCTilePosition getBuildLocationNear(const CCTilePosition & p, const UnitType & type, int buildDist) const; + CCTilePosition getBuildLocationNear(const CCTilePosition & p, const UnitType & type, int buildDist, size_t search_count = 1000) const; void drawReservedTiles();