Skip to content
Snippets Groups Projects
Commit a514d03d authored by David Bergström's avatar David Bergström
Browse files

Merge branch 'gabto095/pycommandcenter-master'

Feature branch allowing to set the number of attempts when looking for a
valid build location. Setting the number to 0 will do an exhaustive
search.

Closes merge request !4.
parents 04e78348 40d097cd
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ void define_building_placer(py::module & m) ...@@ -7,7 +7,7 @@ void define_building_placer(py::module & m)
py::class_<BuildingPlacer>(m, "BuildingPlacer") py::class_<BuildingPlacer>(m, "BuildingPlacer")
.def("can_build_here", &BuildingPlacer::canBuildHere, "x"_a, "y"_a, "unit_type"_a) .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("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("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); .def("free_tiles", &BuildingPlacer::freeTiles, "x"_a, "y"_a, "width"_a, "height"_a);
} }
\ No newline at end of file
...@@ -95,7 +95,7 @@ bool BuildingPlacer::canBuildHereWithSpace(int bx, int by, const UnitType & type ...@@ -95,7 +95,7 @@ bool BuildingPlacer::canBuildHereWithSpace(int bx, int by, const UnitType & type
return true; 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; //Timer t;
//t.start(); //t.start();
...@@ -106,7 +106,7 @@ CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, co ...@@ -106,7 +106,7 @@ CCTilePosition BuildingPlacer::getBuildLocationNear(const CCTilePosition & p, co
//double ms1 = t.getElapsedTimeInMilliSec(); //double ms1 = t.getElapsedTimeInMilliSec();
// iterate through the list until we've found a suitable location // 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]; auto & pos = closestToBuilding[i];
......
...@@ -29,7 +29,7 @@ public: ...@@ -29,7 +29,7 @@ public:
bool canBuildHereWithSpace(int bx, int by, const UnitType & type, int buildDist) const; bool canBuildHereWithSpace(int bx, int by, const UnitType & type, int buildDist) const;
// returns a build location near a building's desired location // 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(); void drawReservedTiles();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment