From 8e532ee6da6dfbe6904cca45d0c68fcb72a052ad Mon Sep 17 00:00:00 2001
From: dawab699 <dawab699@student.liu.se>
Date: Mon, 9 Dec 2019 22:09:38 +0100
Subject: [PATCH] feat: add is_carrying_minerals method for Unit class

---
 python-api-src/lib_unit.cpp |  1 +
 src/Unit.cpp                | 14 ++++++++++++++
 src/Unit.h                  |  1 +
 3 files changed, 16 insertions(+)

diff --git a/python-api-src/lib_unit.cpp b/python-api-src/lib_unit.cpp
index cb99e6561..7cc303bde 100644
--- a/python-api-src/lib_unit.cpp
+++ b/python-api-src/lib_unit.cpp
@@ -34,6 +34,7 @@ void define_unit(py::module & m)
         .def_property_readonly("current_ability_id", &Unit::getCurrentAbilityID, "The AbilityID of currently used ability")
         .def_property_readonly("facing", &Unit::getFacing)
         .def_property_readonly("radius", &Unit::getRadius)
+		.def_property_readonly("is_carrying_minerals", &Unit::isCarryingMinerals)
         .def("hold_position", &Unit::holdPosition)
         .def("patrol", py::overload_cast<const CCPosition &>(&Unit::patrol, py::const_))
         .def("stop_dance", &Unit::stopDance)
diff --git a/src/Unit.cpp b/src/Unit.cpp
index 7316c0801..eeb5cdb3a 100644
--- a/src/Unit.cpp
+++ b/src/Unit.cpp
@@ -425,3 +425,17 @@ void Unit::stopDance() const
 	BOT_ASSERT(isValid(), "Unit is not valid");
 	m_bot->Actions()->UnitCommand(m_unit, sc2::ABILITY_ID::STOP_DANCE);
 }
+
+bool Unit::isCarryingMinerals() const
+{
+	BOT_ASSERT(isValid(), "Unit is not valid");
+	std::vector<CCBuff> buffs = m_unit->buffs;
+	for (auto & b : buffs)
+	{	
+		if (b.to_string() == "271" or b.to_string() == "272")
+		{
+			return true;
+		}
+	}
+	return false;
+}
diff --git a/src/Unit.h b/src/Unit.h
index 3d5017726..efaff97b8 100644
--- a/src/Unit.h
+++ b/src/Unit.h
@@ -47,6 +47,7 @@ public:
     bool isValid() const;
     bool isTraining() const;
     bool isConstructing(const UnitType & type) const;
+	bool isCarryingMinerals() const;
 
     bool isBlip() const;
     bool hasTarget() const;
-- 
GitLab