From b94cf0f6987f532f316483dfa0b09d8a27734da7 Mon Sep 17 00:00:00 2001 From: Sofia Abaied <trollis76@gmail.com> Date: Tue, 18 Dec 2018 09:34:42 +0100 Subject: [PATCH] Added tech_requirement to UnitType --- python-api-src/lib_unit.cpp | 7 ++++ python-api-src/lib_unittype.cpp | 2 ++ src/Unit.cpp | 62 ++++++++++++++++++++++++++++++++- src/Unit.h | 7 ++++ src/UnitType.cpp | 10 ++++++ src/UnitType.h | 2 ++ 6 files changed, 89 insertions(+), 1 deletion(-) diff --git a/python-api-src/lib_unit.cpp b/python-api-src/lib_unit.cpp index 51026485a..f04d5cb87 100644 --- a/python-api-src/lib_unit.cpp +++ b/python-api-src/lib_unit.cpp @@ -29,6 +29,13 @@ void define_unit(py::module & m) .def_property_readonly("target", &Unit::getTarget) .def_property_readonly("has_target", &Unit::hasTarget) .def_property_readonly("max_hit_points", &Unit::getMaxHitPoints) + .def_property_readonly("progress", &Unit::getProgress) + .def_property_readonly("ability_id", &Unit::getAbilityID, "The AbilityID of currently used ability") + .def_property_readonly("facing", &Unit::getFacing) + .def_property_readonly("radius", &Unit::getRadius) + .def("hold_position", &Unit::holdPosition) + .def("patrol", py::overload_cast<const CCPosition &>(&Unit::patrol, py::const_)) + .def("stop_dance", &Unit::stopDance) .def("stop", &Unit::stop) .def("attack_unit", &Unit::attackUnit) .def("attack_move", &Unit::attackMove) diff --git a/python-api-src/lib_unittype.cpp b/python-api-src/lib_unittype.cpp index 35313deac..1dc74370c 100644 --- a/python-api-src/lib_unittype.cpp +++ b/python-api-src/lib_unittype.cpp @@ -11,6 +11,8 @@ void define_unittype(py::module & m) .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("tech_requirement", &UnitType::getTechRequirement) .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") diff --git a/src/Unit.cpp b/src/Unit.cpp index 15277c8cb..cac0e3069 100644 --- a/src/Unit.cpp +++ b/src/Unit.cpp @@ -343,5 +343,65 @@ bool Unit::isBlip() const CCHealth Unit::getMaxHitPoints() const { BOT_ASSERT(isValid(), "Unit is not valid"); + return m_unit->health_max; -} \ No newline at end of file +} + +float Unit::getFacing() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + return m_unit->facing; +} + +float Unit::getRadius() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + return m_unit->radius; +} + +float Unit::getProgress() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + //if unit has order, return progress of first order + if (getUnitPtr()->orders.size() > 0) { + return getUnitPtr()->orders[0].progress; + } + + return -1; +} + +sc2::AbilityID Unit::getAbilityID() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + //if unit has order, return progress of first order + if (getUnitPtr()->orders.size() > 0) { + return getUnitPtr()->orders[0].ability_id; + } + //return invalid AbilityID + return sc2::ABILITY_ID::INVALID; +} + +void Unit::holdPosition() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + m_bot->Actions()->UnitCommand(m_unit, sc2::ABILITY_ID::HOLDPOSITION); +} + +void Unit::patrol(const CCPosition & targetPosition) const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + m_bot->Actions()->UnitCommand(m_unit, sc2::ABILITY_ID::PATROL, targetPosition); +} + +void Unit::stopDance() const +{ + BOT_ASSERT(isValid(), "Unit is not valid"); + + m_bot->Actions()->UnitCommand(m_unit, sc2::ABILITY_ID::STOP_DANCE); +} diff --git a/src/Unit.h b/src/Unit.h index f9c51a711..d10e52e8e 100644 --- a/src/Unit.h +++ b/src/Unit.h @@ -51,6 +51,13 @@ public: bool hasTarget() const; Unit getTarget() const; CCHealth getMaxHitPoints() const; + float getProgress() const; + sc2::AbilityID getAbilityID() const; + void holdPosition() const; + void patrol(const CCPosition & targetPosition) const; + void stopDance() const; + float getFacing() const; + float getRadius() const; void stop () const; void attackUnit (const Unit & target) const; diff --git a/src/UnitType.cpp b/src/UnitType.cpp index 2ace51fcb..154654f11 100644 --- a/src/UnitType.cpp +++ b/src/UnitType.cpp @@ -377,3 +377,13 @@ int UnitType::getMovementSpeed() const { return m_bot->Observation()->GetUnitTypeData()[m_type].movement_speed; } + +int UnitType::getSightRange() const +{ + return m_bot->Observation()->GetUnitTypeData()[m_type].sight_range; +} + +UnitType UnitType::getTechRequirement() const +{ + return m_bot->Observation()->GetUnitTypeData()[m_type].tech_requirement; +} diff --git a/src/UnitType.h b/src/UnitType.h index 8f9d9755a..8568f4a16 100644 --- a/src/UnitType.h +++ b/src/UnitType.h @@ -24,6 +24,8 @@ public: CCRace getRace() const; int getMovementSpeed() const; + int getSightRange() const; + UnitType getTechRequirement() const; bool isValid() const; bool isBuilding() const; -- GitLab