#include "library.h" namespace py = pybind11; void define_unittype(py::module & m) { py::class_<UnitType>(m, "UnitType") .def(py::init<const sc2::UnitTypeID &, IDABot &>()) .def(py::self == py::self) .def_property_readonly("unit_typeid", [](UnitType & unit_type) { return static_cast<sc2::UNIT_TYPEID>(unit_type.getAPIUnitType()); }) .def_property_readonly("name", &UnitType::getName) .def_property_readonly("race", &UnitType::getRace) .def_property_readonly("movement_speed", &UnitType::getMovementSpeed) .def_property_readonly("sight_range", &UnitType::getSightRange) .def_property_readonly("required_structure", &UnitType::getRequiredStructure) .def_property_readonly("is_valid", &UnitType::isValid) .def_property_readonly("is_building", &UnitType::isBuilding) .def_property_readonly("is_combat_unit", &UnitType::isCombatUnit, "The unit is not any of the following: worker, supply provider, building, larva, egg") .def_property_readonly("is_supply_provider", &UnitType::isSupplyProvider) .def_property_readonly("is_resource_depot", &UnitType::isResourceDepot) .def_property_readonly("is_refinery", &UnitType::isRefinery) .def_property_readonly("is_detector", &UnitType::isDetector) .def_property_readonly("is_geyser", &UnitType::isGeyser) .def_property_readonly("is_mineral", &UnitType::isMineral) .def_property_readonly("is_worker", &UnitType::isWorker) .def_property_readonly("is_morphed_building", &UnitType::isMorphedBuilding) // Not implemented in CommandCenter //.def_property_readonly("can_attack", &UnitType::canAttack) //.def_property_readonly("can_Move", &UnitType::canMove) .def_property_readonly("is_addon", &UnitType::isAddon) .def_property_readonly("attack_range", &UnitType::getAttackRange) .def_property_readonly("tile_width", &UnitType::tileWidth) .def_property_readonly("tile_height", &UnitType::tileHeight) .def_property_readonly("supply_provided", &UnitType::supplyProvided) .def_property_readonly("supply_required", &UnitType::supplyRequired) .def_property_readonly("mineral_price", &UnitType::mineralPrice) .def_property_readonly("gas_price", &UnitType::gasPrice) .def_property_readonly("is_overlord", &UnitType::isOverlord) .def_property_readonly("is_larva", &UnitType::isLarva) .def_property_readonly("is_egg", &UnitType::isEgg) .def_property_readonly("is_queen", &UnitType::isQueen) .def_property_readonly("is_tank", &UnitType::isTank) .def("__hash__", [](const UnitType & unit_type) { return std::hash<CCUnitID>{}(unit_type.getAPIUnitType()); }) .def(py::self == py::self) .def("__repr__", [](const UnitType & unit_type) { return "<UnitType: '" + unit_type.getName() + "'>"; }); // Not implemented in CommandCenter //.def("whatBuilds", &UnitType::whatBuilds); }