#include "library.h" namespace py = pybind11; void define_base_location(py::module & m) { py::class_<BaseLocation>(m, "BaseLocation") .def_property_readonly("geysers", &BaseLocation::getGeysers, "List of geysers at base location (List of units)") .def_property_readonly("minerals", &BaseLocation::getMinerals, "List of mineral fields at base location (List of unit)") .def_property_readonly("mineral_fields", &BaseLocation::getMinerals, "Alias for minerals in order to differentiate from harvested minerals") .def_property_readonly("is_start_location", &BaseLocation::isStartLocation, "True if the base location is a start location, False otherwise") .def_property_readonly("depot_position", &BaseLocation::getDepotPosition, "Point2DI position suitable for placing a town hall (base structure)") .def_property_readonly("position", &BaseLocation::getPosition) .def("get_ground_distance", py::overload_cast<const CCPosition &>(&BaseLocation::getGroundDistance, py::const_)) .def("get_ground_distance", py::overload_cast<const CCTilePosition &>(&BaseLocation::getGroundDistance, py::const_)) .def("is_occupied_by_player", &BaseLocation::isOccupiedByPlayer, "player constant"_a) .def("is_player_start_location", &BaseLocation::isPlayerStartLocation, "player_constant"_a) .def("contains_position", &BaseLocation::containsPosition); py::class_<BaseLocationManager>(m, "BaseLocationManager") .def_property_readonly("base_locations", &BaseLocationManager::getBaseLocations, py::return_value_policy::reference) .def_property_readonly("starting_base_locations", &BaseLocationManager::getStartingBaseLocations, py::return_value_policy::reference) .def("get_occupied_base_locations", &BaseLocationManager::getOccupiedBaseLocations, py::return_value_policy::reference, "player_constant"_a) .def("get_player_starting_base_location", &BaseLocationManager::getPlayerStartingBaseLocation, py::return_value_policy::copy, "player_constant"_a) .def("get_next_expansion", &BaseLocationManager::getNextExpansion, py::return_value_policy::copy, "player_constant"_a); }