Rect UnitUtil::GetRect(BWAPI::Unit unit) { Rect r; r.x = unit->getLeft(); r.y = unit->getTop(); r.height = unit->getBottom() - unit->getTop(); r.width = unit->getLeft() - unit->getRight(); return r; }
void Squad::draw() { if ((int)agents.size() == 0) return; if( DebugFlags::instance().getFlag(none) ) return; if( !DebugFlags::instance().getFlag(squad_details) ) return; // Draw a circle around the group const Position center = getCenter(); const int groupRadius = getRadius(); Broodwar->drawCircleMap(center.x(), center.y(), groupRadius, Colors::Grey); // Draw a circle around the leader const Unit& leaderUnit = leader->getUnit(); const int leaderX = leaderUnit.getPosition().x(); const int leaderY = leaderUnit.getPosition().y(); const int radius = leaderUnit.getRight() - leaderUnit.getPosition().x(); Broodwar->drawCircleMap(leaderX, leaderY, radius + 2, Colors::Red); Broodwar->drawCircleMap(leaderX, leaderY, radius - 2, Colors::Orange); BWAPI::Unit * unitTarget; // Draw squad leader enemy target if ((unitTarget = leader->getUnitTarget()) != NULL) { const int enemyX = unitTarget->getPosition().x(); const int enemyY = unitTarget->getPosition().y(); const int enemyRadius = unitTarget->getRight() - unitTarget->getPosition().x(); Broodwar->drawCircleMap(enemyX, enemyY, enemyRadius + 2, Colors::Green); Broodwar->drawCircleMap(enemyX, enemyY, enemyRadius - 2, Colors::Yellow); } // Draw lines from Agents to their leader // for (AgentSetIter it = agents.begin(); it != agents.end(); it++) // { // int agentX = (*it)->getUnit().getPosition().x(); // int agentY = (*it)->getUnit().getPosition().y(); // Broodwar->drawLineMap(agentX, agentY, leaderX, leaderY, Colors::Teal); // } }