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)
.def_property_readonly("is_being_constructed", &Unit::isBeingConstructed)
.def_property_readonly("is_cloaked", &Unit::isCloaked)
.def_property_readonly("is_flying", &Unit::isFlying)
.def_property_readonly("buffs", &Unit::buffs)
.def_property_readonly("is_alive", &Unit::isAlive)
.def_property_readonly("is_powered", &Unit::isPowered)
.def_property_readonly("is_idle", &Unit::isIdle)
......@@ -28,6 +29,8 @@ void define_unit(py::module & m)
.def("stop", &Unit::stop)
.def("attack_unit", &Unit::attackUnit)
.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 CCTilePosition &>(&Unit::move, py::const_))
.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)
TODO: BuffID is not defined, defined as following by Blizzard:
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")
.def(py::init<sc2::UNIT_TYPEID>());
py::implicitly_convertible<sc2::UNIT_TYPEID, sc2::UnitTypeID>();
py::class_<sc2::UpgradeID>(m, "UpgradeID")
.def(py::init<sc2::UPGRADE_ID>());
......
......@@ -24,6 +24,7 @@ typedef sc2::Tag CCUnitID;
typedef sc2::Race CCRace;
typedef float CCHealth;
typedef float CCPositionType;
typedef sc2::BuffID CCBuff;
typedef size_t CCPlayer;
......
......@@ -146,6 +146,16 @@ bool Unit::isFlying() const
#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
{
BOT_ASSERT(isValid(), "Unit is not valid");
......@@ -285,6 +295,18 @@ void Unit::morph(const UnitType & type) const
BOT_ASSERT(isValid(), "Unit is not valid");
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
{
......
......@@ -33,6 +33,7 @@ public:
CCHealth getEnergy() const;
CCPlayer getPlayer() const;
CCUnitID getID() const;
std::vector< CCBuff > buffs() const;
float getBuildPercentage() const;
int getWeaponCooldown() const;
bool isCompleted() const;
......@@ -51,6 +52,8 @@ public:
void attackUnit (const Unit & target) const;
void attackMove (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 rightClick (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.
Finish editing this message first!
Please register or to comment