Skip to content
Snippets Groups Projects
Commit 615faf47 authored by Anton Andell's avatar Anton Andell
Browse files

ability, ability at target and buffs

parent 05af0f93
No related branches found
No related tags found
No related merge requests found
...@@ -19,6 +19,7 @@ void define_unit(py::module & m) ...@@ -19,6 +19,7 @@ void define_unit(py::module & m)
.def_property_readonly("is_being_constructed", &Unit::isBeingConstructed) .def_property_readonly("is_being_constructed", &Unit::isBeingConstructed)
.def_property_readonly("is_cloaked", &Unit::isCloaked) .def_property_readonly("is_cloaked", &Unit::isCloaked)
.def_property_readonly("is_flying", &Unit::isFlying) .def_property_readonly("is_flying", &Unit::isFlying)
.def_property_readonly("buffs", &Unit::buffs)
.def_property_readonly("is_alive", &Unit::isAlive) .def_property_readonly("is_alive", &Unit::isAlive)
.def_property_readonly("is_powered", &Unit::isPowered) .def_property_readonly("is_powered", &Unit::isPowered)
.def_property_readonly("is_idle", &Unit::isIdle) .def_property_readonly("is_idle", &Unit::isIdle)
...@@ -28,6 +29,8 @@ void define_unit(py::module & m) ...@@ -28,6 +29,8 @@ void define_unit(py::module & m)
.def("stop", &Unit::stop) .def("stop", &Unit::stop)
.def("attack_unit", &Unit::attackUnit) .def("attack_unit", &Unit::attackUnit)
.def("attack_move", &Unit::attackMove) .def("attack_move", &Unit::attackMove)
.def("ability", &Unit::ability)
.def("ability_at_target", &Unit::ability_at_target)
.def("move", py::overload_cast<const CCPosition &>(&Unit::move, py::const_)) .def("move", py::overload_cast<const CCPosition &>(&Unit::move, py::const_))
.def("move", py::overload_cast<const CCTilePosition &>(&Unit::move, py::const_)) .def("move", py::overload_cast<const CCTilePosition &>(&Unit::move, py::const_))
.def("right_click", &Unit::rightClick, "Same as right-clicking in the game, for example making workers mine minerals") .def("right_click", &Unit::rightClick, "Same as right-clicking in the game, for example making workers mine minerals")
......
...@@ -43,11 +43,18 @@ PYBIND11_MODULE(library, m) ...@@ -43,11 +43,18 @@ PYBIND11_MODULE(library, m)
TODO: BuffID is not defined, defined as following by Blizzard: TODO: BuffID is not defined, defined as following by Blizzard:
typedef SC2Type<BUFF_ID> BuffID; typedef SC2Type<BUFF_ID> BuffID;
*/ */
py::class_<sc2::BuffID>(m, "BuffID")
.def(py::init<sc2::BUFF_ID>());
py::implicitly_convertible<sc2::BUFF_ID, sc2::BuffID>();
py::class_<sc2::UnitTypeID>(m, "UnitTypeID") py::class_<sc2::UnitTypeID>(m, "UnitTypeID")
.def(py::init<sc2::UNIT_TYPEID>()); .def(py::init<sc2::UNIT_TYPEID>());
py::implicitly_convertible<sc2::UNIT_TYPEID, sc2::UnitTypeID>(); py::implicitly_convertible<sc2::UNIT_TYPEID, sc2::UnitTypeID>();
py::class_<sc2::UpgradeID>(m, "UpgradeID") py::class_<sc2::UpgradeID>(m, "UpgradeID")
.def(py::init<sc2::UPGRADE_ID>()); .def(py::init<sc2::UPGRADE_ID>());
......
...@@ -24,6 +24,7 @@ typedef sc2::Tag CCUnitID; ...@@ -24,6 +24,7 @@ typedef sc2::Tag CCUnitID;
typedef sc2::Race CCRace; typedef sc2::Race CCRace;
typedef float CCHealth; typedef float CCHealth;
typedef float CCPositionType; typedef float CCPositionType;
typedef sc2::BuffID CCBuff;
typedef size_t CCPlayer; typedef size_t CCPlayer;
......
...@@ -146,6 +146,16 @@ bool Unit::isFlying() const ...@@ -146,6 +146,16 @@ bool Unit::isFlying() const
#endif #endif
} }
std::vector< CCBuff > Unit::buffs() const
{
BOT_ASSERT(isValid(), "Unit is not valid");
#ifdef SC2API
return m_unit->buffs;
#else
return m_unit->buffs();
#endif
}
bool Unit::isAlive() const bool Unit::isAlive() const
{ {
BOT_ASSERT(isValid(), "Unit is not valid"); BOT_ASSERT(isValid(), "Unit is not valid");
...@@ -285,6 +295,18 @@ void Unit::morph(const UnitType & type) const ...@@ -285,6 +295,18 @@ void Unit::morph(const UnitType & type) const
BOT_ASSERT(isValid(), "Unit is not valid"); BOT_ASSERT(isValid(), "Unit is not valid");
m_bot->Actions()->UnitCommand(m_unit, m_bot->Data(type).morphAbility); m_bot->Actions()->UnitCommand(m_unit, m_bot->Data(type).morphAbility);
} }
void Unit::ability(sc2::AbilityID & ability) const
{
BOT_ASSERT(isValid(), "Unit is not valid");
m_bot->Actions()->UnitCommand(m_unit, ability);
}
void Unit::ability_at_target(sc2::AbilityID & ability, const Unit & target) const
{
BOT_ASSERT(isValid(), "Unit is not valid");
m_bot->Actions()->UnitCommand(m_unit, ability, target.getUnitPtr());
}
void Unit::research(sc2::UpgradeID upgrade) const void Unit::research(sc2::UpgradeID upgrade) const
{ {
......
...@@ -33,6 +33,7 @@ public: ...@@ -33,6 +33,7 @@ public:
CCHealth getEnergy() const; CCHealth getEnergy() const;
CCPlayer getPlayer() const; CCPlayer getPlayer() const;
CCUnitID getID() const; CCUnitID getID() const;
std::vector< CCBuff > buffs() const;
float getBuildPercentage() const; float getBuildPercentage() const;
int getWeaponCooldown() const; int getWeaponCooldown() const;
bool isCompleted() const; bool isCompleted() const;
...@@ -51,6 +52,8 @@ public: ...@@ -51,6 +52,8 @@ public:
void attackUnit (const Unit & target) const; void attackUnit (const Unit & target) const;
void attackMove (const CCPosition & targetPosition) const; void attackMove (const CCPosition & targetPosition) const;
void move (const CCPosition & targetPosition) const; void move (const CCPosition & targetPosition) const;
void ability (sc2::AbilityID & ability) const;
void ability_at_target (sc2::AbilityID & ability, const Unit & target) const;
void move (const CCTilePosition & targetTilePosition) const; void move (const CCTilePosition & targetTilePosition) const;
void rightClick (const Unit & target) const; void rightClick (const Unit & target) const;
void repair (const Unit & target) const; void repair (const Unit & target) const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment